jueves, 13 de diciembre de 2012

Creación de archivos por lotes para pequeñas cosas. Parte 3: Script para añadir direcciones IP manualmente.

Sé que en principio iban a ser solo dos partes de esta "saga", pero he descubierto nuevas utilidades para esto. 

Hace relativamente semanas (Más bien días) decidí desempolvar mis viejos scripts que usaba en el curso para cambiar direcciones IP de manera rápida y eficaz (Véase la primera parte de ésta "coletilla de sagas". Enlace aquí.) El caso es que me puse a revisar bien los scripts y pensé "Tío, molaría un script en el que las direcciones IP las pusiera yo y no tuviera que andar entrando en el archivo para editar". Investigué un poco de programación en éste lenguaje (un cacho de nada, solamente lo importante y útil) y encontré por fin la solución.

Haciendo memoria (para los que quieran un flashback más extenso, ver el enlace anterior):

Comandos que introducimos para cambiar las direcciones:

Para IP, Máscara de red y Gateway:

netsh interface ip set address "{adaptador a usar}" static {Dirección IP} {Máscara de red} {Gateway}

Para los DNS:

netsh interface ip add dns "{adaptador a usar}" {DNS primario}

netsh interface ip add dns "{adaptador a usar}" {DNS secundario} index=2

Cómo realizar el script

Para introducir datos en el script, tendremos que utilizar una variable que permita la entrada de texto. Yo he elegido una solución "guarrera" que consiste en introducir los datos como si fueran variables de entorno y, después de introducirlas, borrarlas.

PD: Si alguien tiene una solución más limpia, favor de decírmela. Programación de éste tipo de cosas, en cmd, NUNCA ha sido lo mío.

1. Identificamos las variables a usar.

Son 5: IP, Máscara, Gateway, DNS1 y DNS2. Podemos llamarla como queramos. Yo por ejemplo, las he llamado:

IP - direccionip
Máscara de red - mascarared
Gateway - gatewayy (con dos y)
Primary DNS - primardns
SecondaryDNS - seconddns

2. Montamos el tinglado.

Para introducir los datos, haremos un "echo" intermedio. Así, nos irá preguntando el programa cada cosa a insertar. Por ejemplo:

echo "Introduce la dirección IP"

Ahora, la parte "difícil" para meter las direcciones: La entrada de datos.

Para introducir, utilizaremos el comando set /p: /p es un modificador de variable, que se utiliza para introducir la misma.

Íbamos por la IP ¿No? Montaremos el comando de ésta manera:


set /p direccionip=

En la continuación del signo igual va lo que introducimos.


Hecha la primera, hacemos lo mismo con las demás. (El ejemplo de script está más abajo, si tienes duda, consulta mas abajo)

Una vez fijadas las variables, usaremos las anteriores líneas de comando netsh para utilizar el script. Para que funcionen ahora las variables, debemos meter entre porcentajes las variables de entorno que hemos introducido. Si la variable es Pericopalito, en los comandos se utiliza con %pericopalito%

Así, por ejemplo, en la línea de netsh anterior, en donde ponemos la dirección IP debemos poner %direccionip%, o en gateway, poner %gatewayy%

Una vez tenemos todo escrito y bien configurado, pasaremos a eliminar las variables.
Para eliminarlas, debemos introducir de nuevo el comando set, pero sin el modificador /p.

El script completo

# Parte 1: Variables a introducir. 

# echo Introduce el nombre de adaptador que quieres modificar
# set /p nominterfaz=
# echo Introduce la dirección IP que quieres
# set /p direccionip=
# echo Introduce la máscara de red a usar
# set /p mascarared=
# echo Introduce el gateway
# set /p gatewayy=
# echo Introduce el DNS primario
# set /p primardns=
# echo Introduce el DNS secundario
# set /p seconddns=


# Parte 2: Comandos que se usan con las variables definidas.


# netsh interface ip set address "%nominterfaz%" static %direccionip% %mascarared% %gatewayy%
# netsh interface ip add dns "%nominterfaz%" %primardns%
# netsh interface ip add dns "%nominterfaz%" %seconddns% index=2


# Parte 3: Borrado de variables.

# set nominterfaz=
# set direccionip=
# set mascarared=
# set gatewayy=
# set primardns=
# set seconddns=


Las almohadillas las he puesto para "citar" el script. Deben borrarse para que se inicie de forma correcta.

El archivo debe tener la extensión .bat.
Si se fijan en la imagen subida, yo le tengo puesto de nombre "persoipcable.bat"

Script1sindatos

script2completo


Como ven, el script funciona bien.

Si quieren luego quitar las direcciones IP, usen el script de la otra entrada (El de poner en DHCP las interfaces).

Y como es normal, necesita derechos de administrador para ser ejecutado.

Próximamente, los programas personalizados del R.A.T 7 (cuando los acabe)


Fuentes:

Anterior entrada.
Experiencia propia.
Microsoft y sus páginas de ayuda. (No pongo el enlace porque ahora mismo no lo encuentro)

EXTRA (Actualizado el 20-12-12)

Se puede utilizar también el nombre del adaptador, para así tener uno específico. Actualizo los datos del actual (Las imágenes no las actualizo, pero funciona igual)

miércoles, 28 de noviembre de 2012

Información sobre novedades y revisiones.

En los últimos días he estado analizando algunas cosas del blog, con la intención de mejorarlo poco a poco. Los puntos que destaco son:

- Las entradas hechas hasta ahora, las cuales estoy reeditando debido a errores de lectura, alguna info contradictoria o datos que faltaban por completar. (Algunas entradas aún están sin acabar, como la de Usos del comando SC, que falta la parte de creación de servicios con el comando,y también la de Usar un SO CentOS como FTP, la cual voy a reeditar en unos días para hacerla más completa, y ya ni hablemos de la de Resolución de DHCP, la cual voy a ver si reescribo para mejorarla, que la veo muy ambigua) Si encuentran alguna información que esté mal, me gustaría que me lo dijeran para revisar y reeditar.

- El "buffer" de entradas que estoy elaborando (tengo algunas entradas para publicar como un minimanual de iptables, además de un pequeño manual-proyecto con un mouse de juegos Cyborg R.A.T 7 y sus diferentes usos). El problemilla del buffer es que siempre tardo mucho en publicar porque lo reviso muchas veces y voy cambiando palabras, o añadiendo info extra; entonces, por ése motivo, a veces tardo en publicar nuevas entradas, y también en revisar las hechas con anterioridad.

- El diseño del blog, el cual estoy adaptando para que se visualice de mejor forma (letra clara, fondos que no rompan la vista, simpleza de formato)

- La futura adición de imágenes en el blog (Hasta ahora no había subido ni una sola imagen, y me estoy dando cuenta que no puedo huir eternamente de documentarlo un poco) El motivo por el que nunca he subido imágenes es un poco nimio: Odio subir fotos y que se publiquen en Picasa (sonará estúpido, pero semos asín). Por esa razón, voy a hacer una cuenta en un servidor de imágenes externo y empezar a documentar las siguientes entradas (y si puedo, documentar las existentes lo que se pueda)

A fin de mejorar el servicio,  intentaré solucionar ésta serie de puntos para ofrecer una información más completa y detallada.

PD: También voy a probar el sistema de publicación de entradas programado. Por curiosidad.

sábado, 3 de noviembre de 2012

Área de intercambio (swap)


¿Qué es la swap?

La swap (también llamada área de intercambio) es un zona del disco duro, bien sea partición o archivo, que se usa para guardar las imágenes de los procesos que no pueden mantenerse en la memoria física o bien se transfieren para ahorrar memoria física. De este modo, por ejemplo, si tenemos un ordenador que soporta únicamente 1GB de memoria RAM, le podemos crear una partición swap de 1GB y así el ordenador pasaría a tener 2GB de memoria RAM: 1GB en la física y otro GB de memoria en el área de intercambio.

Quizá el nombre de swap nos suene a chino, Así que podemos pasar a llamarlo de igual forma, como Memoria virtual

Para tomar un ejemplo, vamos a pensar hipotéticamente que tenemos un sistema con arquitectura de 32 bits. Un sistema de ésa arquitectura puede manejar hasta 3GB de datos y no soporta más a partir de ahí. Si necesitáramos hacer uso de una capacidad de 4GB en ése ordenador, crear una swap de 1GB sería lo más acertado si no queremos reinstalar a un sistema de 64 bits.

¿Es bueno tener swap?

Siempre es bueno tener un espacio swap, por si acaso en algún momento nos faltara memoria RAM.


En los sistemas operativos, si no en la mayoría, siempre se intenta maximizar el uso de la memoria: si un ordenador tiene apenas 512 de RAM, los aproveche al máximo de su potencial. Sin embargo, si no es capaz de aguantar todos los procesos, sería bueno crear una partición swap extensa. Si por ejemplo, lo que usamos son procesos que no tienen por qué mantenerse todo el rato en la memoria física, se envían a la swap.

Además, como ejemplo práctico: Cuando iniciamos Linux hay muchos servicios y procesos que ejecutamos en el ordenador (cups, hidd, sshd, entre otros). Si el ordenador no los va a usar en ése momento, los puede pasar a la swap y dejarlos en segundo plano, y si los requiere para usar en la memoria principal, los pasaría de la swap a la física cuando fuera oportuno. 

La memoria swap ¿Es exclusiva de los sistemas Linux?

No. Windows también usa áreas de intercambio similares a las de Linux, con la diferencia de que dichas áreas se localizan en la misma partición donde se está ejecutando el sistema. Así, por ejemplo, no es necesario hacer dos o más particiones para un solo sistema Windows. Aun así, Linux también permite crear ficheros de swap, por si en nuestro disco duro no pudiéramos crear más particiones y fueramos muy justos de espacio de particionado.


¿Qué tipos de  espacio de memoria swap hay?

Existen dos tipo de espacio:

  • Partición de swap.

Está basada en la creación de una partición en disco dedicada exclusivamente para la swap.

Entre sus ventajas están que no se necesita desfragmentar nunca dicha unidad, y que si es colocada al principio de un cilindro, actuará de mejor forma.

Como desventaja está que la partición swap siempre estará ocupada y al 100% de su capacidad, lo cual no es una desventaja muy grande. Además, si nuestro espacio de particiones es muy limitado, crear una swap no siempre es un buen método.

  • Archivo swap

Es un archivo alojado en un sistema de ficheros, el cual hace de memoria swap. Normalmente se crea un archivo swap en dos casos: No tenemos espacio para una partición swap independiente, o hemos modificado las prestaciones del ordenador y necesitamos más memoria swap aparte de la adicional creada.

Entre algunas de sus ventajas se encuentra la versatilidad (crear, borrar, y editar la partición como quiera el usuario), si bien su principal desventaja es la fragmentación que puede ocasionar el fichero.



Aunque aquí no lo vaya a exponer, algunas distribuciones de Linux como CentOS permiten crear en una sola partición de disco un LVM (Logical Volume Manager). Un LVM es un administrador lógico de disco que usa, por ejemplo, 50 GB de disco como una sola partición. En esos 50 GB de disco, se pueden crear varias particiones dentro (una para /home, otra para /usr), y puede dar la opción de crear una partición swap en ellas; así, por ejemplo, puedes tener una partición de 50 GB llamada /hda1, pero que en realidad se divida en /hda2 para sistema de archivos, /hda3 para swap, /hda4 para /home/usuario... La única "pega" que puede llegar a tener es que requiera de una partición auxiliar llamada /boot para que haga el montaje del LVM, lo cual serían tres particiones en dos.

Nota: LVM es algo que no he dado mucho, así que si por algún casual estoy diciendo una barbaridad o me equivoco en la descripción, me gustaria que me lo comunicaran cuanto antes. Es una definición que se me ha ocurrido que es así, basándome en los datos que tengo, pero que no estoy convencido de si será. Mejor errar, preguntar y rectificar que errar y creer que estoy en lo correcto cuando no es así ;-)

¿Cuánto espacio de swap sería conveniente utilizar?

Antiguamente siempre ha existido un debate sobre cuánta memoria swap debe darse en un disco duro.

Una amplia mayoría expone que es bueno que la memoria swap sea el doble que la memoria real, pero eso era antes, donde la memoria RAM era un poco escasa y los ordenadores que llegaran a 1GB de RAM se consideraban una maravilla. En la actualidad, algunos informáticos siguen optando por usar este modelo.

Otra mayoría argumenta que lo mejor sería calcular un intermedio sobre lo que iríamos a hacer en el ordenador. Así, por ejemplo, si el sistema que vamos a manejar posee poca RAM, haríamos un cálculo aproximado de la memoria que podríamos llegar a utilizar y ponerla como swap (Por ejemplo, si tenemos un sistema de 512 MB y pensamos que necesitamos tener 2GB, haríamos la diferencia, la cual sería 1536 MB como swap)

Ahora, con la aparición de los portátiles y sobremesas de 4GB, 6GB y hasta 8GB, hasta podríamos prescindir de la creación de swap, pues Linux no requiere exclusivamente de que haya swap, pero sí es bueno tener la partición por si acaso.

Tengo dos sistemas linux en un mismo disco duro ¿Se puede compartir la partición swap?

Se puede, siempre que esa swap sea partición y no archivo. Como la swap corresponde a una partición determinada con su correspondiente UUID, bastará con decirle al sistema operativo al que queramos añadir la swap, en su /etc/fstab, que monte la unidad swap y la inicialice.

Existe el debate de si es bueno o no usar este método. Unos dicen que no pasa nada, debido a que el sistema cuando se apaga, borra todo lo existente en la swap, con lo que queda lista para el siguiente sistema sea uno u otro. Otros, sin embargo, explican que el SO puede crear unos registros en la swap y éstos interfieran en los demás sistemas, y además algunos sistemas son bastante reticentes en que se comparta swap.

Nunca he tenido la oportunidad de realizar el experimento, pero si se presenta la ocasión, la realizaré y les comento qué sucede. Si alguno quiere corroborar alguna de las dos teorías, es libre de hacerlo.

Fuentes:
Wikipedia.
Apuntes de clase.
Para la "explicación" de LVM me ayudé de varias páginas, aparte de la experiencia propia con ése sistema.
Experimentos realizados en entornos controlados.
Para la parte de compartición de swap, algunos blogs sobre el tema.

Ultima revisión: Abril de 2014
Razón: Correcciones ortográficas.

martes, 21 de agosto de 2012

Utilizar un sistema operativo CentOS como servidor FTP

Hace unas cuantas entradas, publiqué en el blog cómo hacer que CentOS se convirtiera en un router para enrutar paquetes y conexiones en una red local pequeña, realizar un servidor DHCP para ésa misma red y configurar el iptables. Para aprovechar las funcionalidades de las que es capaz de dotarnos un sistema operativo libre, y para sacarle el máximo partido, hoy vamos a ver cómo instalar un servidor FTP en el sistema operativo CentOS y configurarlo a como queramos usarlo.


Si volvemos en el tiempo (a la entrada de Introducción a FTP) vemos que había distintas maneras de realizar un servidor FTP (con usuarios, usuario guest o usuario anonymous, modo activo y pasivo, control de datos). Para sacar el máximo rendimiento a la anterior entrada y así, poner un poco en práctica los conceptos, hoy, vamos a ver cómo instalar el servidor FTP en un CentOS 5.7 y lo que debemos hacer para que nos funcione perfectamente.

Para ayudarnos en la tarea y centrarnos en qué debemos hacer en el servidor, así como saber qué instalamos, qué red usaremos y más detalles, vamos a poner un escenario.

Escenario de ejemplo:

Tenemos una red local bastante extensa, de alrededor de 50 ordenadores. Para modernizar el servicio y centralizar servicios, decidimos implementar un servidor FTP para almacenar archivos, o por el contrario, ofrecérselos al resto de usuarios. Para evitar que el futuro servidor sea un caos con tanto trajín de datos arriba y abajo, se opta por establecer una política de usuarios, los cuales deben acreditar su usuario y su clave para acceder a su carpeta personal dentro del servidor.

Una vez propuesto el escenario, lo interpretaremos:

- El servidor FTP será de dirección IP estática, para evitar así posibles errores en la dirección.
- El servidor FTP tendrá usuarios y contraseñas para garantizar la correcta entrada.
- Como sabemos que nuestra red sólo tiene 50 ordenadores, limitaremos la entrada de conexiones en nuestro servidor FTP y además estableceremos que un ordenador puede utilizar una conexión al servidor como máximo.

NOTA: A modo complementario, y siguiendo éste pequeño tutorial y el listado de cláusulas que pondré más adelante, a la entrada creada con anterioridad sobre crear un router con DHCP en el mismo CentOS le podemos añadir el servidor FTP, para así tener en el mismo CentOS un servidor DHCP, FTP y enrutador de red local. Eso ya como al usuario final, que es el que está leyendo, quiera. Si decide implementarlo, recuerde abrir los puertos 20 y 21 del IPTABLES para que funcione correctamente.

Empecemos a realizar todo:

Instalaremos los paquetes necesarios del repositorio.

El paquete que debemos instalar del repositorio es vsftpd (Very Secure FTP daemon en sus siglas)

# yum install vsftpd

Tardará unos minutos en descargar el paquete del repositorio e implementarlo en nuestro servidor.

2º Configuraremos el servidor FTP a nuestro gusto.

Una vez tenemos el paquete instalado, pasaremos a configurarlo. Para ello, usaremos vim para editar el archivo de configuración. Dicho fichero se encuentra en /etc/vsftpd y su nombre es vsftpd.conf

# vi /etc/vsftpd/vsftpd.conf

Ahora, pasaremos a explicar las cláusulas presentes (Con un asterisco señalaré las que de verdad nos interesan y las que modificaremos o tendremos en cuenta, tenga puesto YES, NO o "perico de los palotes").

  • *anonymous_enable: Esta cláusula hace referencia a si queremos activar el usuario anónimo o no. En nuestro servidor, utilizaremos la opción NO

  • *local_enable: Permite que los usuarios que están dados de alta en tu máquina accedan al servidor FTP con su usuario y contraseña. Por defecto, el valor es YES. Lo dejaremos así.

  • *write_enable: Con esta opción hacemos referencia a si queremos que los usuarios puedan subir archivos. Como hemos querido hacer que sí suban, la marcaremos como YES

  • default_umask: Umask por defecto en el servidor. Por defecto es 022. No se toca a no ser que lo queramos cambiar.

  • *anon_upload_enable: Permite a los usuarios anónimos a subir archivos. Por defecto está comentada. No la descomentamos, ya que no queremos usuarios anónimos.

  • anon_mkdir_write_enable: Permite a los usuarios anónimos crear directorios. Por defecto está comentada. No se descomenta.

  • dirmessage_enable: Cada vez que un usuario entra a un directorio, se crea un mensaje informando en qué directorio está. Lo dejamos como YES.

  • *xferlog_enable:Genera un fichero log con las cosas realizadas. Lo marcamos como YES si queremos un registro completo de los movimientos (Opcional)

  • connect_from_port_20: Conectarse al servidor utilizando el puerto 20. Lo marcamos como YES.

  • chown_uploads y chown_username: Estas cláusulas no se descomentan. La primera hace referencia a que cuando un anónimo sube un archivo al servidor, lo guarda como si fuera el usuario o grupo especificado en chown_username.

  • *xferlog_file: La ruta donde estará el archivo xferlog_file.

  • *idle_session_timeout: Especifica el timeout que daremos a una conexión FTP que está inactiva. Por defecto, nosotros usaremos 600 (que equivale a 10 minutos)

  • *data_connection_timeout: Si una conexión activa de datos está en transferencia pero no hay tráfico de datos como tal (bien sea por un error u otra causa), especificaremos el timeout para no sobrecargar el servidor. Nosotros usaremos 120

  • nopriv_server: Especifica qué usuario usa por defecto el servidor FTP, así como sus privilegios o demás. Por defecto, la dejamos comentada.

  • ascii_upload_enable: Permite la subida de archivos en formato ASCII
  • ascii_download_enable: Permite la descarga de archivos en formato ASCII

  • *ftpd_banner: Especifica el banner que queramos poner a nuestro servidor, el mensaje de entrada.

  • deny_email_enable: Con esta cláusula denegamos los mensajes anónimos de correo en el servidor. La dejamos en YES. (Está comentada, asi que no la descomentamos)

  • chroot_list_enable: Esta cláusula permite que, si lo especificamos en el archivo /etc/vsftpd/chroot_list, los usuarios locales del servidor inicien en el directorio $HOME. La dejamos en YES y comentada.

  • ls_recurse_enable: Especifica si queremos activar la recursividad al listar directorios. Por defecto está comentada. La dejamos así.

  • *listen: Permite al servidor escuchar en IPv4. Por defecto está en YES. La dejamos así.

  • listen_ipv6: Igual que la anterior, pero solo si vamos a usar IPv6. Como no usaremos IPv6, la dejamos comentada.

  • *pam_service_name: Nombre del servicio. Por defecto es vsftpd.

  • userlist_enable: Si está en YES, se usará un fichero llamado userfile_list con los usuarios permitidos para entrar al FTP.

Una vez explicadas todas las cláusulas que nos pueden ser útiles en la creación de nuestro servidor FTP, modificamos las que más necesitemos acorde a nuestras necesidades. A medida que las explicaba, he ido diciendo las que habría que cambiar para nuestro escenario ejemplo, así que una vez nos hemos percatado de que todas las cláusulas han sido escritas correctamente, aceptamos y salimos del archivo de configuración guardando lo escrito.

Ahora, arrancamos el servidor FTP. Para ello, introduciremos el comando:

# service vsftpd start
Iniciando vsftpd para vsftpd: [OK]
#

3º Hacernos nuestro IPTABLES

Una vez iniciado, aún así, no nos va a funcionar el servidor a la primera, debido a que no hemos configurado correctamente el cortafuegos para que permita conexiones entrantes a través de la interfaz eth0. Para ello, vamos a pasar a configurarlo:

NOTA: Si bien es cierto que la implementación va a ser a nivel local, directamente podríamos tirar el servicio de iptables (pararlo, vamos) y ya nos los apañamos, pero eso es responsabilidad del usuario final el cómo quiera realizarlo.

Para configurar el iptables, primero debemos saber qué puertos están involucrados en nuestro servidor FTP. Como bien sabemos, los puertos que debemos abrir para la conexión son el 20 y 21.

Una vez identificados los factores, nos "hacemos" las reglas de iptables.

- Queremos políticas de entrada, debido a que lo que vamos a hacer es transmitir a nuestro servidor.

- La entrada se realiza por la interfaz eth0 y por los puertos 20 y 21

Las reglas son las siguientes:

Primero, borramos todas las reglas presentes en nuestro servidor:

# iptables -F
# iptables -X
# iptables -Z

Y ahora, las reglas que añadiremos para que el servidor se comunique con los clientes:

# iptables -P INPUT ACCEPT

# iptables -A INPUT -i eth0 -p tcp --dport 20 -j ACCEPT
# iptables -A INPUT -i eth0 -p tcp --dport 21 -j ACCEPT

Por supuesto, una vez terminadas de hacer nuestras reglas, debemos guardarlas con el comando:

# iptables-save

NOTA: Para asegurarnos una efectividad completa en la programación del iptables (dado que a veces el comando iptables-save sólo lo guarda para ésa sesión) podemos crear un pequeño script, y luego ejecutarlo en el inicio.

En el fichero /etc/rc.d/rc.local, puedes agregarle las líneas de iptables que usarás, y nada más se ejecuten el servidor irá correctamente.


Aún habiendo realizado nuestro iptables de forma correcta, nos falta configurar el SElinux (dado que es un módulo de seguridad bastante "puñetero" con las conexiones). Si queremos subir un archivo, el SElinux nos podría tirar la conexión alegando que no tenemos permisos.

Para solventarlo, debemos escribir

# setenforce permissive

Y de esta forma, nos dejará.

PD: Se puede añadir al rc.local del inicio si queremos.
PD2 (Adicionado por un comentario): Desactiva el SElinux tiende a ser peligroso dado que tiramos todo el sistema de seguridad por el FTP. Se pueden solamente habilitar los bool del SElinux para FTP y conseguir el mismo efecto sin necesidad de ponerlo como Permissive. En unos días investigaré cómo.

4º Creación de usuarios para nuestro servidor FTP.

Para crear los usuarios de nuestro servidor FTP, los crearemos como si estuvieramos creando un usuario cualquiera (no nos vamos a complicar mucho, nuestro servidor ya está lo suficientemente seguro con el iptables)

Crearemos un usuario de prueba, por ejemplo:

  • Nombre de usuario: perico
  • Contraseña: eltuerto
Para crearlo, introduciremos los siguientes comandos:

# useradd perico
# passwd perico (despues introducimos la clave cuando indique, y listo)

Una vez creado nuestro usuario perico, veremos a ver si nos ha funcionado y podemos acceder de forma correcta al servidor con las credenciales. Para comprobarlo, usaremos el cliente FTP más sencillo de Windows: El de su línea de comandos.

Accedemos a una línea de comandos de Windows (cmd, vamos) y escribimos:

C:\> ftp (dirección IP del servidor)

Pondré un ejemplo práctico:

(20:06:23,73)[C:\Users\Admin]$ ftp 11.0.0.29
Conectado a 11.0.0.29.
220 Bienvenidos al servidor FTP VISA8080
Usuario (11.0.0.29:(none)): perico

331 Please specify the password.
Contraseña:
230 Login successful.
ftp>


NOTA: La contraseña no se muestra como introducida en el login, no es que se les haya estropeado el teclado cuando la estén escribiendo y no la ven.

5º Sacando partido a nuestro servidor FTP.


Una vez tenemos creado nuestro servidor del todo, es hora de darle uso ¿No?

Para poder acceder a los archivos de nuestro servidor FTP, la mejor manera y más comoda (siempre que no tengamos que subir archivos al mismo) es usar nuestro navegador de Internet, y con la dirección en el navegador ftp://(dirección ip):(puerto) accederemos a nuestro servidor FTP, y podremos ver de mejor forma los archivos.

Otra manera más gráfica es usando la herramienta Winscp, que ofrece una mejor visión de los archivos, así como también subir y bajar archivos del servidor de forma más sencilla.

Para finalizar, cómo no, diremos que todo esto se consigue siendo usuario root o superuser. Si no, no hay FTP

Comentarios adicionales que pueden ayudar:

De :::Jhon Castañeda::: (Comentario más abajo, en la zona de Comentarios)

Implementando un servidor FTP. Su ISP mapeó una dirección pública a una dirección privada a través de la NAT. Desde la LAN se puede conectar, pero desde fuera era imposible porque el IPTABLES que está puesto en este manual es hacia dentro (Recuerden que no puse opciones para que fuera hacia el otro lado, desde Internet). El usuario en cuestión nos da éste comando para solventar éste problema.

# iptables -A FORWARD -i eth0 -p tcp -d (dirección del servidor) -m multiport --dports 20,21 -j ACCEPT

El cual hace que el tráfico pase a través del NAT y llegue al servidor. Además, en el iptables, debemos añadir este comando.

# iptables FORWARD ACCEPT

Para que nos acepte el tráfico de forward.

Gracias por la ayuda recibida.


Fuentes:

Reciclaje de apuntes
Wiki de CentOS
Experiencia propia (y lo que me ha costado hacer el servidor virtual de referencia)

Última edición: Octubre de 2013
Razón: Correcciones ortográficas.

    viernes, 27 de julio de 2012

    Feliz día del sysadmin

    Hoy, viernes 27 de julio de 2012, es el día internacional del administrador de sistemas (Sysadmin en su abreviatura internacional).

    Un sysadmin o administrador de sistemas se encarga de mantener los equipos informáticos de una empresa o local totalmente operativos, sea un solo equipo o una red de cómputo amplia. Por lo general, tiene conocimientos de todos los campos de la informática, ya sea a nivel básico o medio, y de las ramas de software y hardware, así como también diseño de redes, gestión y administración de información y seguridad y disponibilidad.

    En la página http://sysadminday.com se hace un breve resumen de las tareas principales que realiza un administrador y el por qué debemos agradecerle lo que realiza (al menos por un día al año, que no hace daño)

    Así que, si eres un sysadmin ¡Feliz día del administrador de sistemas!
    Y si no lo eres ¡Felicita a los sysadmins que conozcas! ¡Te lo agradecerán con algún escáner de puertos seguro!

    Fuentes:

    http://sysadminday.com (Página en inglés)
    Wikipedia

    sábado, 14 de julio de 2012

    El modelo OSI [Resumen]

    El modelo OSI [Open Sistem Interconnection en inglés, Interconexión de sistemas abiertos traducido] es un modelo de red descriptivo y de referencia, lo que viene a representar de que es un modelo que como tal solo ayuda a explicar otros modelos de protocolos, y no está pensado para ser implementado ni proporcionar un nivel de detalle suficiente para definir las arquitecturas de red. (Lo que viene a ser que son como "leyes generales" pero solo si son contrastadas con un protocolo que lo explique, siendo el modelo OSI como un "librillo" de referencia para futuras referencias)

    El modelo OSI fue creado en el año 1984 por la organización de estándares ISO. El desarrollo de la misma arrojaba luz sobre cómo debían realizarse los esquemas de red de los dispositivos interconectados en una red, así como también los pasos que deben realizarse para la transmisión de datos y formalizar una normativa de uso general y de referencia.

    El modelo OSI está divido en siete capas, las cuales siguen un orden ascendente.


    1. Capa Física.

    Esta capa se encarga de proporcionar enlaces y medios para transmitir la información en ambos sentidos, así como también asegurar la fiabilidad, conexión y transmisión de datos.

    Los aparatos que cumplen estas funciones de la capa física son:

    • Cables de red (Tanto RJ-11, RJ-45, fibra óptica, cables de consola RS-232 e incluso ondas como Wireless)
    • Aparatos concentradores de red (Hub). Estos aparatos para algunas redes son muy preciados ya que transmiten toda la información de un cable por el resto de conexiones, así por ejemplo un administrador de red puede conectar un Hub entre un router, un servidor y su ordenador y se podría enterar de todo lo que transmite el router.
    La unidad de datos de ésta capa son los bits.

      2. Capa de Enlace de datos.

      Esta capa tiene determinadas las funciones de control del medio, control de flujos, diseños de topología de red, detección de errores y distribución de tramas en una red.

      Esta capa se encarga de gestionar las tramas de red que pasan por una red. Para ello, cada aparato que esté conectado a la red tiene un número único que lo identifica, llamado Dirección MAC (Media Access Control) que es único en cada dispositivo de una red. La existencia de dos dispositivos con una misma dirección MAC tiene como resultado que la red envíe dos tramas iguales a los dispositivos, pero por convención es imposible que se llegue a este caso a no ser que se falsee ésta dirección.

      Los aparatos que se encargan de gestionar las tramas son los switches y los puntos de acceso inalámbricos.

      La unidad de información de esta capa son las tramas.

      3. Capa de Red.

      La capa de red se encarga de realizar el enrutamiento entre una o más redes conectadas.

      Las unidades de información de esta capa se llaman paquetes.

      Además de ofrecer enrutamiento, los protocolos que se asocian a esta capa de red se dividen en dos tipos: 

      • Enrutables: Viajan con el paquete (IP de forma general, en sus versiones 4 y 6)
      • Enrutamiento: Permiten realizar las rutas, pero están integrados en el aparato gestor de redes (RIP, IGRP o EIGRP en aparatos Cisco)
      El objetivo de la capa de red es la transmisión de los paquetes de datos de un origen a un destino, usando el medio y las tramas creadas en la red. Para realizar esta tarea, se utilizan unos aparatos llamados routeres, los cuales realizan el enrutado de los paquetes entre redes y además detectan posibles conflictos en la red. Un router además puede trabajar en la capa de enlace de datos.

      En este nivel se realiza el direccionamiento lógico y la determinación de la ruta hasta el receptor final de datos. (Explicación: Una dirección MAC va a tener como norma general una dirección IP por encima, así que la capa se encarga de direccionar y autenticar el paquete a esa dirección MAC para que no haya problemas en el envío. Si tiene que saltar entre redes, la tabla ARP de los routeres ayudará en la tarea)

      4. Capa de Transporte.

      La capa de transporte se encarga de efectuar el transporte de datos entre los ordenadores, independientemente del medio o red física que se esté usando. Ésta capa maneja dos tipos de protocolos de conexión: TCP (Orientado a conexiones que requieran un control de flujo) o UDP (Orientado a sin conexión ni controles de flujo). Como tal, además, trabajan con los llamados "Puertos" del ordenador utilizando la sintaxis archiconocida como IP:Puerto (172.16.1.1:8080, o Dirección IP : Puerto de destino u origen de datos).

      Las unidades de información de esta capa se llaman segmentos si usan TCP y datagramas si usan UDP.


      5. Capa de Sesión

      La capa de sesión se encarga de controlar y mantener el enlace establecido entre dos equipos. Como tal, esta capa no tiene mayor repercusión y en la mayoría de los casos, los servicios de esta capa pueden prescindir dado que no interfieren en la transmisión.

      La unidad de información se llama SPDU

      6. Capa de Presentación

      La capa de presentación se encarga de realizar los procesos internos en el tratamiento de los datos para interpretar la información recibida y presentarla en un dispositivo final. Del chino, se encarga de "traducir" la información que recibe del otro equipo para que en el dispositivo donde lleguen los datos se puedan ver de forma legible. Ésta capa también se encarga de cifrar los contenidos y comprimirlos para su envío o descifrar y descomprimir si los recibe.


      La unidad de información se llama PPDU


      7. Capa de aplicación

      La cima de la pirámide. La capa de aplicación se encarga de acceder a los servicios que usan las demás capas y define esos mismos protocolos. En ningún caso, el usuario maneja la capa de aplicación, si no que usa programas y aplicaciones que interactúan con dicha capa y la gestiona a través del programa.

      Ésta es una de las capas que más se expande en la actualidad, ya que siempre surgen nuevos protocolos y nuevas formas en los envíos de datos y tratamiento de la información.

      La unidad de información se llama APDU

      Transmisión de información.

      La pregunta básica que cabe plantear ahora es: ¿Cómo se transmite la información?

      El modelo OSI, además de definir las capas que debe usar, también se preocupa de cómo realizar el envío de los datos, recepción y tratamiento. Para ello primero se deben Encapsular los datos en una sola unidad de información.

      El término de encapsulamiento de los datos es bastante tedioso de explicar, así que para comprenderlo en términos generales, y "a lo simple y general para la gente normal", lo realizaré del siguiente modo.

      Vamos a poner el ejemplo de que los datos que transmitimos entre los ordenadores son cartas de correo entre dos destinatarios, las cuales tienen una dirección fija en el destino, y además está justificado el origen, sabemos quién la envia (del franqueo y todo eso nos olvidamos). Si lo vemos así, cuando "abrimos la carta" en realidad lo que hacemos es "desencapsular" el paquete que nos llegó. El "cartero" en este caso sería la capa 1 ya que se ha transmitido gracias a ése medio. La parte externa del sobre (donde indica a quién lo envia) sería la capa 2, 3 y 4 (ya que contienen las direcciones de destino a nuestra casa, oficina, calle, número, población, todo eso), y de la capa 5 para arriba sería el contenido de la carta. Si por ejemplo el contenido de la carta estuviera escrito en otro idioma, nuestra mente sería la capa 6 para interpretarlo (si podemos) y la capa 7 ya sería el mensaje en sí.

      El proceso de desencapsulación de los datos puede detenerse en el ordenador destino si una de las capas no coincide. En este caso, el destino tira el paquete. Si el protocolo que utilizara el paquete por ejemplo era TCP, enviaría un paquete al origen justificando el fallo. Si es UDP, tirará el paquete y no reenviará ya que no existe un canal de control (recordemos que UDP es un protocolo que no está orientado a conexión)

      Modelo OSI y Modelo TCP/IP

      El modelo más conocido popularmente para explicar el modelo OSI estándar es el Modelo TCP/IP, que fue creado anteriormente al modelo OSI, pero gracias al mismo se erigieron las normas fundamentales que ahora se aplican.

      El modelo TCP/IP no es un protocolo, si no una serie de protocolos concebidos para ofrecer conexiones. El nombre lo recibe generalmente de los dos protocolos más extendidos, conocidos y usados en redes: TCP (Transmission Control Protocol) e IP (Internet Protocol). Fue creado en la década de 1970, con lo que es anterior al modelo OSI, y consta de 4 capas, equivalentes a las 7 capas del modelo OSI. Así, por ejemplo:

      Capa 1 de TCP/IP se llama Capa de enlace: Agrupa la capa 1 y 2 del modelo OSI
      Capa 2 de TCP/IP se llama Capa de red: Agrupa la capa 3 del modelo OSI
      Capa 3 de TCP/IP se llama Capa de transporte: Agrupa la capa 4 del modelo OSI
      Capa 4 de TCP/IP se llama Capa de aplicación: Agrupa el resto de capas (5, 6 y 7) del modelo OSI.

      Fuentes:
      Cisco CCNA1
      Wikipedia
      Apuntes de clase
      Explicación del modelo de encapsulamiento es freestyle. Si quieren aportar alguna cosa o creen que me estoy equivocando, no lo duden y pónganlo en un comentario.

      Última edición: Octubre 2012.
      Razón: Formato y algunas faltas ortográficas.

      viernes, 6 de julio de 2012

      Cambiar la pantalla de inicio de sesión de Windows 7

      [Inserte excusa aquí después de no actualizar durante 4 meses]

      Hace un tiempo,quise cambiar la imagen que aparece por defecto en el inicio de sesión de Windows 7. Normalmente, cuando buscas en Google cómo realizarlo, usualmente te dicen "Descárgate este programa, pones la imagen y te lo cambia todo solo, sin complicaciones, sin líos y sin cargarte nada". No tengo nada en contra de la utilización de programas que hagan eso, o que sean de éste estilo, pero digamos que si puedes hacerlo "Do it yourself " (tú mismo) sin ejecutar programas ni confiar en terceros (por muy buenas críticas que tengan los programas), tendrás toda la situación bajo control y podrás ser consciente de lo que haces, sin líos ni complicaciones.

      Para proceder al cambio, lo realizaremos por pasos:

      1º Ejecutamos el Regedit de Windows. Para ello, en el cuadro de búsqueda de inicio ponemos "Regedit", o iniciamos en Ejecutar... y ponemos lo mismo: regedit. Nos dirá que necesita permisos de administrador. Aceptamos y entramos.

      2º Debemos buscar la siguiente cadena:

      HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background

      3º Examinanos los valores de las claves que hay dentro de la carpeta. Deben aparecer dos claves: La clave predeterminada, de tipo REG_SZ, y otra clave de tipo REG_DWORD con el nombre de OEMBackground. Entramos en la clave de REG_DWORD.

      PD: Es posible que no esté dicha clave de REG_DWORD. En ese caso, la creamos en Edición --> Nuevo --> Valor de DWORD (32 bits), y le ponemos el nombre de OEMBackground.
      Si está la clave y tenemos un tema asignado, el valor de la clave REG_DWORD será 0 y estará en Hexadecimal.

      Entramos en la clave de OEMBackground. Cambiamos la base (A la derecha de la ventana emergente) a Decimal y asignamos el valor 1. Aceptamos y salimos del registro, percatándonos de que todo esté bien.

      4º Una vez hemos cambiado la clave, debemos introducirla en una carpeta de Windows para que todo salga bien. Para ello, tenemos que encontrar la carpeta backgrounds, dentro de Windows\system32\oobe\info

      Para ello, podemos seguir dos caminos.

      • Método fácil: Introducimos en el Inicio el siguiente chorro-de-datos:
        %windir%\System32\oobe\info\backgrounds

      • Método búsqueda: Lo buscamos manualmente entrando en Equipo, disco de sistema (C:\, D:\, Z:\) que estés usando, carpeta Windows, carpeta system32, carpeta oobe, carpeta info y carpeta backgrounds.
      Puede suceder que nuestro sistema no tenga las carpetas info y backgrounds. En ese caso, las podemos crear sin ningún problema dentro del path Windows\system32\oobe siempre que seamos administradores del sistema.

      5º Una vez llegamos a la carpeta, pueden ocurrir tres cosas:

      • Existe un solo archivo, llamado backgroundDefault.png.

      • Hay bastantes archivos además del antes mencionado, pero con distintos nombres y resoluciones (Ej: Background800x600, Background1024x768, etc). Esto suele ocurrir si nuestro ordenador ha sido comprado con una marca como Acer, HP o cualquier otra, que lo pone por defecto y a distintas resoluciones, pero también puede ocurrir que no sea así y aparezcan.

      • No existe ningún fichero de éste estilo o los anteriores mencionados, está vacía la carpeta.
      Antes de realizar nada, hacemos una copia de seguridad de los ficheros que se encuentran en ésta carpeta (Las sacas al escritorio, las copias a otra carpeta, cualquier forma en la que podamos revertir lo que hagamos). Además, para no inducir a errores, es mejor dejar únicamente el archivo de backgroundDefault en la carpeta, ya que si después usamos otra resolución no se usará nuestra imagen.

      La resolución óptima que puede admitir la pantalla es cualquiera, ya que Windows la ajustará automáticamente, pero de forma recomendable, debe estar ajustado a una resolución del nivel "Estándar" en monitores (800x600, 1024x768, 1366x768, 1440x900). Además, el formato de la imagen deberá ser jpg y no importa si usas una resolución de 1366x768 y pones una imagen a 640x480, ya que se ajustará esté o no en el mismo rango de resolución.


      Una vez tenemos la carpeta de backgrounds vacía, procedemos a copiar la imagen que queramos en la carpeta y le cambiamos el nombre a backgroundDefault.jpg

      Ahora, con todo modificado, podremos cerrar sesión, bloquear usuario o cualquier forma que nos saque a la pantalla de inicio y veremos que nuestro fondo se ha puesto bien. 

      Si no se ha puesto, repasad todos los pasos por si se os ha pasado algo o postearmelo abajo si creéis que está todo bien y aun así no tira.

      Cabe recordar, que todos estos pasos los tenemos que hacer siendo administradores del sistema.

      Fuente:
      http://support.microsoft.com/kb/980456/es (La mayoría de la info está aqui traducida al castellano)
      Experiencia propia (Y lo que me costó realizarlo sin programas)

      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.