lunes, 27 de febrero de 2012

Introducción a FTP.

  • ¿Qué es FTP?
FTP es el protocolo de transmisión de archivos (File Transfer Protocol, en sus siglas) y es usado para la emisión/recepción de archivos de forma que se maximice su rapidez en las transferencias, no asegurando estructuras de control para la protección de los datos que navegan en la transferencia misma (Esto es, cualquiera que use un programa capturador de paquetes puede saber toda nuestra transmisión). Debido a esta falla de seguridad es recomendable implementarlo en redes de área local, intranets y redes cerradas.

  • ¿Cómo se usa FTP?
Dispone de dos puertos: 
  • Puerto de control (Puerto 21/TCP)
  • Puerto de envío/recepción de datos (Puerto 20/TCP). 
La conexión de control, la que contendrá nuestros movimientos en el servidor (usuario, contraseña, comandos que usemos) se trasmitirá por el puerto 21. El envío y recepción, por el 20.



  • ¿Existe diversidad? ¿Lo soportan todos los sistemas operativos?
FTP puede ser instalado en Windows, Linux, Mac, y otros sistemas operativos, tanto su versión cliente como servidor.


  • No me fío un pelo de las transmisiones por FTP sin seguridad adicional. ¿Existen alternativas?
Si. Si FTP no es de nuestro agrado, podemos elegir otras vías que ofrezcan seguridad a cambio de perder un poco de velocidad de transferencia. Así, SCP y SFTP (Integrados en el paquete ssh de Linux y con versiones portables para Windows como Winscp que contiene ambos)  son alternativas seguras. Existen también otras como VSFTP y TFTP. El único que se desentiende de todo es TFTP, que no tiene un registro de control y manda todos los paquetes por UDP, a tropel.

  • ¿Hace falta siempre un usuario y contraseña? ¿Es obligatorio?
Por supuesto que no. Existen algunos servidores que permiten el acceso al usuario Anonymous (no confundir con el movimiento de Internet). Dicho usuario resuelve que el nombre y password es la misma, es decir:

User: Anonymous
Password: Anonymous

Muchos servidores de Internet ofrecen el usuario Anonymous. Un claro ejemplo de ello es el servidor de Microsoft.

También existen usuarios invitados (guest) que no requieren de autenticación, pero con menos privilegios.

  • ¿Qué formas de acceso al servidor FTP hay? ¿Tengo que instalar programas?
Sí y no. Windows incluye en sus características (O se puede añadir) el uso de FTP por línea de comandos. FTP por línea de comandos es una forma eficaz, pero a su vez necesita un grado de conocimiento un poco mayor. Por ello, ya se mencionó el uso de programas como SCP que agiliza el uso del cliente. Si el servidor lo permite, a veces podemos entrar desde el navegador web usando la cadena:

FTP://(Dirección IP, nombre de dominio o similar):(Puerto*)

* = opcional.

  • ¿Cómo se realizan las conexiones?
Actualmente hay dos métodos predefinidos para el envío/recibo: Activo y Pasivo.
  
    • Activo: El servidor toma el canal de datos por el puerto 20 y el cliente especifica un puerto mayor que 1024. El único problema destacable es el uso de puertos superiores a 1024, ya que el cortafuegos debe permitir dichas conexiones.
    • Pasivo: El servidor indica al cliente que debe conectarse a un puerto mayor de 1024 en el servidor, con lo que la conexión cliente-servidor de datos no se realiza por el puerto 20, aunque el servidor seguirá utilizando el puerto 21 para el control de datos.
       
Además de los métodos predefinidos de envío y recibo de datos, existen también dos tipos diferentes de transferencia:

    • ASCII: Ésta transferencia se suele utilizar para archivos de texto que no contengan carácteres imprimibles, como páginas web, pero solo texto plano. Documentos Word, por ejemplo, no se deberían transmitir con ASCII
    • Binario: Se usa especialmente para la transferencia de archivos ejecutables y resto de archivos.
  • Puedo recibir archivos, pero ¿Puedo enviarlos también al servidor?
Sí. FTP admite los dos tipos de transferencia. Depende de si es envío o recibo será GET o PUT

    • GET: Recibir archivo del servidor.
    • PUT: Enviar archivo al servidor.  
Fuente:

Reciclaje de apuntes de clase.
Wikipedia también ayudó un poco.

Próximamente, realización de servidores FTP en CentOS.

miércoles, 22 de febrero de 2012

Usos del comando SC

  • ¿Qué es el comando SC?
 SC (Service Controller) es una herramienta por línea de comandos que sirve para realizar una administración de los servicios que se ubican en Services.msc.  
  • ¿Qué podemos destacar del comando?
 SC tiene bastantes utilidades para poder administrar los servicios, así como consultar su estado, iniciar, detener, interrumpir, e incluso, eliminar de la consola.

  • Lista de caracteres básicos de SC

    • Query: Consulta los servicios del sistema que están iniciados (Es equivalente a escribir NET START, pero ésta incluye una hoja más completa)
    • Queryex: Extensión de Query (Incluye el PID y el FLAG del servicio)
    • Start: Inicia un servicio
    • Stop: Detiene un servicio
    • Pause: Pausa un servicio
    • Delete: Elimina un servicio del registro de Services
    • Create: Crea un servicio del registro (Fase beta)
    • Description: Cambia la descripción de un servicio.

  •  Sintaxis del programa:
Inicialmente, la sintaxis para los comandos básicos como Start, Stop, Query, Pause, son:

SC <opción> <nombre del servicio>

  • Funciones del comando.


Básicas: Start, Stop, Pause, Query, Queryex.

Si queremos iniciar el servicio de dhcp, escribimos:


sc start dhcp

Y acto seguido aparecerá la query del archivo, marcando su inicio:

SERVICE_NAME: dhcp
        TYPE : 20  WIN32_SHARE_PROCESS
        STATE : 2  START_PENDING
                                (NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE : 0  (0x0)
        SERVICE_EXIT_CODE : 0  (0x0)
        CHECKPOINT : 0x0
        WAIT_HINT : 0x7d0
        PID : 1144
        FLAGS:

Para detenerlo:

sc stop dhcp

Aparecerá la siguiente información del servicio: 

SERVICE_NAME: dhcp
        TYPE : 20  WIN32_SHARE_PROCESS
        STATE : 3  STOP_PENDING
                                (STOPPABLE,NOT_PAUSABLE,ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE : 0  (0x0)
        SERVICE_EXIT_CODE : 0  (0x0)
        CHECKPOINT : 0x1
        WAIT_HINT : 0x61a8

Para pausarlo:


sc pause lanmanworkstation

SERVICE_NAME: lanmanworkstation
        TYPE : 20  WIN32_SHARE_PROCESS
        STATE : 7  PAUSED
                                (STOPPABLE,PAUSABLE,ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE : 0  (0x0)
        SERVICE_EXIT_CODE : 0  (0x0)
        CHECKPOINT : 0x0
        WAIT_HINT : 0x0

PD: no puedo pausar el servicio DHCP así que pausé otro en su lugar, como ejemplo vale igual.

Consulta del servicio y su estado (Query):

sc query dhcp

Muestra lo mismo que en el sc start dhcp, excepto el PID y el flag.

También puede mostrar otros datos, como los controladores de tipo driver, todos los servicios del sistema. Para ello se puede trastear con otras opciones. A destacar las variables:

- type= Tipo de servicios que se enumerarán (controlador, servicio, todos)
- state= Estado de los servicios que se enumeran (inactivo, todos)
- bufsize= Tamaño (en bytes) del búfer de enumeración (valor predeterminado = 4096)
- ri = El número de índice de reanudación en el que comenzará la enumeración
- group= Grupo de servicio que se enumerará
          
Algunas variables:

sc query - Enumera el estado de controladores y servicios activos
sc query eventlog - Muestra el estado del servicio de registro de eventos
sc queryex eventlog - Muestra el estado extendido del servicio de registro de eventos
sc query type= driver - Enumera sólo los controladores activos
sc query type= service - Enumera sólo los servicios de Win32
sc query state= all - Enumera todos los servicios y controladores
sc query bufsize= 50 - Enumera con un búfer de 50 bytes
sc query ri= 14 - Enumera con índice de reanudación = 14
sc queryex group= "" - Enumera los servicios activos que no están en un grupo
sc query type= interact - Enumera todos los servicios interactivos
sc query type= driver group= NDIS     - Enumera todos los controladores NDIS


PD: Es una copia de los ficheros de ayuda de Windows que aparecen en la consola



sc queryex dhcp

Muestra todo, incluidos PID y flag.


Avanzadillas: Delete, create, description, config

  • Delete.
Los servicios de Windows se pueden eliminar de la pila de servicios que se muestra en Services.msc. Dicha eliminación también acarrea una serie de consecuencias:

  • Eliminar un servicio "a pelo" puede provocar un funcionamiento erróneo. Se recomienda eliminar servicios cuando no se usen, o cuando se haya desinstalado una aplicación y esté mostrada en la pila pero no se usa
  • Eliminar un servicio que contiene dependencias provocará que las mismas no se inicien. Si por ejemplo eliminamos el servicio Llamada a procedimiento Remoto (RPC) y Plug And Play (PlugPlay), el ordenador no funcionará correctamente y su futuro próximo será reinstalarlo.
Para realizar la eliminación, usamos la misma sintaxis anterior. En este caso, vamos a eliminar el Google Registration, uno de los procesos basura de Google cuando desinstalamos Chrome o alguna función dependiente del mismo.

sc delete gregupdate

Una vez introduzcas el comando, mostrará en la pantalla:

[SC] DeleteService SUCCESS

Ahora, el servicio Gregupdate no aparecerá en la pila de Services.msc. Aparecerá una vez, si teníamos abierta la ventana y veíamos el proceso, pero cuando introduzcamos el comando y actualicemos sin salir de la ventana, el servicio se mostrará como deshabilitado. Una vez salgas y entres de nuevo en Services.msc, habrá desaparecido.

  •  Create
La sintaxis del comando es:

SC <nombre del servidor> create {Nombre del servicio a crear} (opción 1) (opción 2)

Las opciones del comando Create de SC con las siguientes:

 type= <own|share|interact|kernel|filesys|rec> (valor predeterminado = own)
 start= <boot|system|auto|demand|disabled|delayed-auto> (valor predeterminado = demand)
 error= <normal|severe|critical|ignore> (valor predeterminado = normal)
 binPath= <Nombre_de_ruta_binaria>
 group= <Grupo_de_orden_de_carga>
 tag= <yes|no>
 depend= <Dependencias(separado por / (barra diagonal))>
 obj= <Nombre_de_cuenta|Nombre_de_objeto> (valor predeterminado = LocalSystem)
 DisplayName= <nombre para mostrar>
 password= <contraseña>

PD: Siempre debe haber un espacio entre el igual y la cláusula.

Por ejemplo, vamos a crear un servicio llamado VMON que se encuentra en la ruta C:\scripts\vmon.bat.

sc create VMON binpath= C:\scripts\vmon.bat

[SC] CreateService CORRECTO

PD 1: Para añadirle una descripción al servicio, utilizar la cláusula Description que explico a continuación

PD 2: Si cambiamos la ruta del archivo de binpath, el servicio no arrancará.
  • Description.
 La sintaxis del comando es:

SC <nombre del servidor> description {nombre del servicio} descripción nueva

Así, por ejemplo:


sc description dhcp Sirve para iniciar el cliente DHCP

Se añadirá la descripción puesta (Sirve para iniciar el cliente DHCP) en la descripción del servicio, machacando la anterior descripción.

PD: El nombre del servidor es por si procede. Si lo vamos a hacer en local, no hace falta especificar.

  • Config
Con este comando, conseguiremos modificar el servicio como deseemos.

Para ello, debemos usar la siguiente sintaxis:

 sc config [nombre del servicio] <opción1> <opción2>

Las opciones que pueden tomar son:


 Type= <own|share|interact|kernel|filesys|rec|adapt> (Tipo de propiedad que adquiere)
 Start= <boot|system|auto|demand|disabled|delayed-auto> (Inicio del servicio en el sistema)
 Error= <normal|severe|critical|ignore> (Errores del servicio)
 BinPath= <Nombre_de_ruta_binaria> (Ruta del servicio, dónde está ubicado)
 Group= <Grupo_de_orden_de_carga> (Grupo de carga)
 Tag=  <yes|no> (Etiqueta)
 Depend= <Dependencias(separado por / (barra diagonal))> (Dependencias del servicio)
 Obj= <Nombre_de_cuenta|Nombre_de_objeto> (Nombres del objeto)
 DisplayName= <nombre para mostrar> (Nombre del servicio)
 Password= <contraseña> (Contraseña para el servicio)

PD: Siempre debe haber un espacio entre el igual y la cláusula.

Si por ejemplo queremos deshabilitar un servicio, podemos usar:

sc config (servicio) start= disabled
  •  AVISOS USANDO LOS COMANDOS


El objetivo principal de la herramienta SC es para comunicarse con el Administrador de servicios y así administrar de forma más potente los servicios de Windows.

Eliminar servicios vitales de Windows no conlleva a que el ordenador al iniciar se quede con la pantalla negra totalmente, es más, seguirá iniciando como si tal cosa, pero sí verá reducida su utilidad, rendimiento y velocidad como aparato al no poder utilizar ninguna función de Windows, teniendo más un uso de pisapapeles que de proceso de datos. Cuidado con lo que se toca.

Adicionalmente, esta herramienta puede traer serias consecuencias si no se utiliza de forma adecuada. Los usos de forma maliciosa con otros usuarios, como borrar servicios de otros usuarios de ordenador, o distribuir ficheros por lotes que contegan líneas de código peligroso con éstos comandos son bajo responsabilidad del usuario lector, y no de mi persona.


Antes de realizar una tarea peligrosa, como eliminar un servicio dudoso, o crear un servicio "a la aventura", realizar las pruebas en una máquina virtual adaptada al sistema que se vaya a utilizar. Las máquinas virtuales están para eso, para hacer pruebas y ver si todo marcha bien, o si se rompen, no producir un desastre considerable en el sistema.

Fuentes:

Experiencia propia.
Algunas pruebas realizadas en clase.
La consola del Windows.

 Fecha de revisión: Diciembre de 2012
Razón: Añadida la opción de crear servicio.

jueves, 2 de febrero de 2012

Fichero Hosts

¿Qué es el fichero Hosts?

El archivo Hosts de un sistema operativo es aquél que guarda la correspondencia entre dominios y direcciones IP, basado en el protocolo TCP/IP actual. Es el antiguo predecesor del ya conocido Servidor DNS, ya que antiguamente la relación de direcciones IP y dominios de las páginas web se almacenaban en éste fichero. Con el paso del tiempo, al implementar los servidores DNS y crecer los nombres de dominio, los archivos Hosts pasaron a un segundo plano, usados ya únicamente para redirecciones locales y otros usos.

¿Dónde se almacena el fichero Hosts?

Depende del sistema operativo. En cada sistema tiene una ruta diferente, aunque su uso sea similar.

  • Linux: /etc/hosts
  • Windows XP/Vista/7: C:\Windows\system32\drivers\etc\hosts
  • Windows 95/98: C:\Windows\hosts
  • Windows NT/2000: C:\WINNT\drivers\etc\hosts
  • Mac: /private/etc/hosts
¿Qué podemos hacer con dicho archivo?


Dentro de las utilidades que le podemos sacar a este archivo es, por ejemplo, implementar desde el mismo páginas web locales para que funcionen como si fueran un dominio real. Así, por ejemplo, podemos redirigir el dominio www.ejemplo.com a una dirección IP concreta.

Éste archivo, al ser abierto, tiene la mayoría de las direcciones IP comentadas como ejemplo, y se destaca notoriamente que aparece en bastantes ocasiones la dirección localhost. localhost es, sencillamente, el nombre de nuestra propia máquina, y siempre redirige a la dirección de loopback (127.0.0.1)


¿Cómo? ¿Tan pocas cosas puede hacer el archivo?

No. El fichero hosts también puede ser usado para hacer una implementación mínima si en nuestra empresa o red local no queremos implementar un servidor DNS, o queremos hacer un bloqueo de ciertas páginas web.

Como antes expliqué, el archivo hosts puede ser usado para redireccionar dominios a direcciones IP. Si tenemos un servidor Apache implementado en una máquina y queremos que al hacer la petición a un dominio se redireccione a dicho servidor, podemos añadir a todas las máquinas cliente, en el archivos Hosts de cada una, el dominio que queramos añadir y la dirección IP del servidor. Antes de realizarlo, tenemos que asegurarnos que dicho dominio no está registrado, pues si por ejemplo usamos www.google.es como dominio para la redirección al servidor Apache, no podremos acceder nunca a www.google.es a no ser que eliminemos la línea, dado que el sistema mira antes el fichero hosts que el DNS, con lo que nunca llegaría a resolver bien el dominio de Internet.

Quizá, el uso más interesante que se le da a menudo a este fichero es la utilización del mismo para el bloqueo de dominios no deseados

Haciendo nuestro propio archivo Hosts

Una vez explicado el uso más común que podemos realizar en el fichero, pasaremos a explicar cómo realizarlo en los dos casos que mostré anteriormente:

  • Supuesto 1: Tenemos un servidor Apache implementado en una máquina, la cual tiene como dirección local 192.168.11.1, y queremos que nuestro ordenador resuelva ésta dirección IP con el nombre de dominio www.apachito.com
La solución no puede ser más fácil. Nos dirigimos al archivo Hosts de nuestro sistema (Sea cual sea), y lo modificamos. Para modificar el fichero, necesitaremos de razón obvia permisos de administrador.

Para añadir la línea, debemos tener cuidado de no comentarla. Así, por ejemplo, si la línea que hemos creado tiene una almohadilla delante, no funcionará.

El formato del fichero es el siguiente:


(Dirección IP)              (Dominio)

Con lo cual, en la última línea, añadimos:


# Servidor Apachito de la dirección 192.168.11.1
192.168.11.1                www.apachito.com

Para identificarlo, podemos añadirle encima de la línea un comentario, opcionalmente.
Ahora solo resta guardar y reiniciar la máquina para que los cambios hagan efecto.

  • Supuesto 2: Hemos notado que una persona está entrando en una página que no queremos (En estos tiempos, por ejemplo, un profesor que no quiere que sus alumnos se metan en redes sociales desde los ordenadores de clase). Hemos probado a bloquear la dirección de Internet de dicha página con un servidor ISA, pero aun así existen otros resquicios, como el uso de proxy para la redirección y saltarnos así la restricción de los servidores que intentan bloquearlo.
Para este caso, podemos añadir una redirección a nuestro host local (localhost), con lo que el navegador resolverá el dominio utilizando nuesta IP, con lo que si no introducimos ningún servidor Apache, el navegador dará time out y no resolverá correctamente.

En esta ocasión, añadiremos por ejemplo la página www.tuenti.com.
Abrimos archivos Hosts, introducimos ésta línea

#Bloqueo de la página de Tuenti
127.0.0.1             www.tuenti.com

Nota: Si existe alguna otra redirección de la página, tendremos que añadirla igualmente. Se pueden añadir a la misma dirección local.

  • Supuesto 3: Queremos redireccionar una página web cualesquiera (www.google.es, por ejemplo) a una página web concreta (www.yahoo.es). Sí, vale, sé que los navegadores son rivales unos de otros y que sería hacerle la pelota a Yahoo, pero es un ejemplo ¿No?
Lo primero de todo, necesitamos saber la dirección IP de www.Yahoo.es

Podemos usar las herramientas nslookup o ping para determinar su IP, o bien, buscar por Internet cuál es. Tratándose de un servidor de búsqueda, podemos añadirle igual todas las direcciones IP y que todas acompañen al dominio.

Ejemplo: Hemos determinado que las direcciones IP de Yahoo son 80.70.60.50, 80.70.60.51 y 80.70.60.52.  (no son estas en realidad, es un ejemplo)
Modificamos el archivo Hosts con las direcciones IP y el dominio.

# Bloqueo de Google para redirección
80.70.60.50             www.google.es
80.70.60.51             www.google.es
80.70.60.52             www.google.es
Cuña publicitaria: El conocimiento de éste uso en este archivo puede ser utilizado para otros "usos" no tan serios como los puestos aquí. No me responsabilizo del mal uso que se le puedan dar a estos datos.

¿Pero digo yo que todo tiene una pega con éste fichero, no?

Evidentemente, el archivo hosts tiene sus pegas.

  • Una excesiva entrada de direcciones IP de redirección podría ocasionar una lentitud a la hora de resolver dominios, debido a que el ordenador revisa primero el archivo Hosts. Si el mismo es muy extenso, resolverá más lentamente.

  • Muchos antivirus tienen calado dicho archivo, con lo que si intentamos modificarlo en ocasiones nos puede dar muchos fallos inesperados. La razón de ésta monitorización al archivo se debe a posibles phising, ya que un virus nos puede redireccionar la página de un dominio a otra página falsa para sacar nuestros datos. Siempre que vayas a acceder a páginas protegidas, como bancos, asegúrate que disponen de firma y certificado digital, suministrado por una empresa de dispensación de certificados y que el dominio use el protocolo https

  • Redirigir dominios web a la dirección loopback es efectivo si y solo si el ordenador dispone de un servidor Apache o puede ejercer alguna función con dicha dirección. Si causamos un time out, habremos malgastado bastante tiempo resolviendo una dirección que no se puede. Para ello, podemos dar otras direcciones que induzcan a error, como una máscara de red.

  • Si tenemos programas activos en la loopback podrían dar problemas al redireccionar a la misma si usamos la 127.0.0.1 para redirección de páginas bloqueadas.
Fuente:

Experiencia con profesores, dando el tema sobre httpd y Apache.
Wikipedia.org
Experiencia propia

Revisado por última vez: Noviembre 2012.
Modificaciones: Algunos problemas de coherencia en el texto.