Administracion de Redes

Administracion de Redes
En este blog encontraran todo lo relacionado con el modulo de seguridad de administracion de redes, aunque tambien encontraran documentos relacionados con tecnologia e informatica.

martes, 17 de junio de 2008



SSH (Secure Shell)

SSH (Secure Shell) es un conjunto de estándares y protocolo de red que permite establecer una comunicación a través de un canal seguro entre un cliente local y un servidor remoto. Utiliza una clave pública cifrada para autenticar el servidor remoto y, opcionalmente, permitir al servidor remoto autenticar al usuario. SSH provee confidencialidad e integridad en la transferencia de los datos utilizando criptografía y MAC (Message Authentication Codes, o Códigos de Autenticación de Mensaje). De modo predeterminado, escucha peticiones a través del puerto 22 por TCP.


SFTP

SFTP (SSH File Transfer Protocol) es un protocolo que provee funcionalidad de transferencia y manipulación de ficheros a través de un flujo confiable de datos. Comúnmente se utiliza con SSH para proveer a éste de transferencia segura de ficheros.

SCP

SCP (Secure Copy, o Copia Segura) es una protcolo seguro para transferir ficheros entre un anfitrión local y otro remoto, a través de SSH. Básicamente, es idéntico a RCP (Remote Copy, o Copia Remota), con la diferencia de que los datos son cifrados durante la transferencia para evitar la extracción potencial de información a través de programas de captura de las tramas de red (packet sniffers). SCP solo implementa la transferencia de ficheros, pues la autenticación requerida es realizada a través de SSH.

OpenSSH

OpenSSH (Open Secure Shell) es una alternativa de código abierto, con licencia BSD, hacia la implementación propietaria y de código cerrado SSH creada por Tatu Ylönen. OpenSSH es un proyecto creado por el equipo de desarrollo de OpenBSD y actualmente dirigido por Theo de Raadt. Se considera es más segura que su contraparte propietaria debido a la constante auditoría que se realiza sobre el código fuente por parte de una gran comunidad de desarrolladores, una ventaja que brinda al tratarse de un proyecto de fuente abierta.

Ficheros de configuración

/etc/ssh/sshd_config --> Fichero central de configuración del servicio SSH.


A continuación se analizarán los parámetros a modificar.

Parámetro Port

Una forma de elevar considerablemente la seguridad al servicio de SSH, es cambiar el número de puerto utilizado por el servicio, por otro que solo conozca el administrador del sistema. A este tipo de técnicas se les conoce como Seguridad por Oscuridad. La mayoría de los delincuentes informáticos utiliza guiones que buscan servidores que respondan a peticiones a través del puerto 22. Cambiar de puerto el servicio de SSH disminuye considerablemente la posibilidad de una intrusión a través de este servicio.

Port 22

SSH trabaja a través del puerto 22 por TCP. Puede elegirse cualquier otro puerto entre el 1025 y 65535. ejemplo:

Port 52341


Parámetro ListenAddress

Por defecto, el servicio de SSH responderá peticiones a través de todas las interfaces del sistema. En algunos casos es posible que no se desee esto y se prefiera limitar el acceso sólo a través de una interfaz a la que sólo se pueda acceder desde la red local. Para tal fin puede establecerse lo siguiente, considerando que el servidor a configurar posee la IP 192.168.1.254:

ListenAddress 192.168.1.254


Parámetro PermitRootLogin

Establece si se va a permitir el acceso directo del usuario root al servidor SSH. Si se va a permitir el acceso hacia el servidor desde redes públicas, resultará prudente utilizar este parámetro con el valor no.

PermitRootLogin no


Parámetro X11Forwarding

Establece si se permite o no la ejecución remota de aplicaciones gráficas. Si se va a acceder hacia el servidor desde red local, este parámetro puede quedarse con el valor yes. Si se va a permitir el acceso hacia el servidor desde redes públicas, resultará prudente utilizar este parámetro con el valor no.

X11Forwarding yes


Parámetro AllowUsers

Permite restringir el acceso por usuario y, opcionalmente, anfitrión desde el cual pueden hacerlo. El siguiente ejemplo restringe el acceso hacia el servidor SSH para que solo puedan hacerlo los usuarios fulano y mengano, desde cualquier anfitrión.

AllowUsers fulano mengano

Permite restringir el acceso por usuario y, opcionalmente, anfitrión desde el cual pueden hacerlo. El siguiente ejemplo restringe el acceso hacia el servidor SSH para que solo puedan hacerlo los usuarios fulano y mengano, solamente desde los anfitriones 10.1.1.1 y 10.2.2.1.

AllowUsers fulano@10.1.1.1 mengano@10.1.1.1 fulano@10.2.2.1 mengano@10.2.2.1


Probando OpenSSH

Para acceder a través de intérprete de mandatos hacia el servidor, basta con ejecutar desde el sistema cliente el mandato ssh definiendo el usuario a utilizar y el servidor al cual conectar:

ssh usuario@servidor

Para acceder hacia un puerto en particular, se utiliza el parámetro -p. En el siguiente ejemplo, utilizando la cuanta del usuario juan, se intentará acceder hacia el servidor con dirección IP 192.168.0.99, el cual tiene un servicio de SSH que responde peticiones a través del puerto 52341.

ssh -p 52341 juan@192.168.0.99


Transferencia de ficheros a través de SFTP.

Para acceder a través de SFTP hacia el servidor, basta con ejecutar desde el sistema cliente el mandato sftp definiendo el usuario a utilizar y el servidor al cual conectar:

sftp usuario@servidor


Pasos para la instalacion de ssh

primero debemos instalar ssh:

#apt-get install ssh

Como esta anteriormente debio crear varios archivos, el mas importantes en nuestro caso por ahora es el archivo que esta en la ruta /etc/ssh/sshd_config

Editamos el archivo ssh_config que es el archivo para la configuracion del servidor:

#pico /etc/ssh/sshd_config

Para que nuestro servidor exija las llaves al ingresar a el equipo debemos de descomentar las lineas AuthorizedKeysFile /root/.ssh/authorized_keys donde /root/.ssh/authorized_keys es la ruta donde vamos a almacenar las llaves publicas de los usuarios que van a iniciar sesion ssh en nuestro equipo.

Tambien se debe descomentar la linea PasswordAuthentication yes y cambiar el yes por un no para que al iniciar sesion no pida contraseña pero que pida la llave.

Despues ingresamos la llaves de los equipos que van a iniciar sesion por ssh a nuestro equipo en la ruta que le dimos en el archivo sshd_config, asi:

#cat /root/.ssh/id_dsa.pub (llave publica del usuario a iniciar sesion) >> /root/.ssh/authorized_keys (es la ruta que le dimos en el archivo de servidor ssh para guardar la llaves)

Luego debemos reiniciar el servicio para surjan efecto los cambios

#/etc/init.d/ssh restart


Configuracion para cliente ssh con openssh en linux

Primero se debe instalar el cliente ssh para linux:

#apt-get install ssh-client

Luego debemos crear la llaves:

Generar un par de llaves dsa

#ssh-keygen -t dsa

Acepte la localización por defecto del archivo ~/.ssh/id_rsa. Introduzca una palabra de paso diferente de la contraseña de su cuenta y confírmela introduciéndola nuevamente.

La llave pública se llama id_rsa.pub. La clave privada se llama id_rsa.

No se debe compartir la llave privada a nadie.










Se debe copiar la llave publica al servidor ssh para que nos acepte cuando intentemos iniciar una sesion ssh:

#cat /root/.ssh/id_dsa.pub (llave publica del usuario a iniciar sesion) >> /root/.ssh/authorized_keys (es la ruta que le dimos en el archivo de servidor ssh para guardar la llaves)

Provamos para ver si deje iniciar una sesion:

#ssh 10.3.2.2 (ip del equipo en el que vayamos a iniciar sesion)












Analisis de la conectivida de SSH

En la siguiente imagen podemos observar como se se esteblece una conexion con ssh:














El cliente hace una peticion ssh con un SYN al servidor

El servidor le responde con un SYN,ACK

Vuelve a responder el cliente con un ACK

El servidor responde arrojando datos del protocolo y del equipo.

El cliente hace lo mismo, arroja informacion de su equipo y demas.

Luego el cliente inicia el intercambio de llaves del servidor.

El servidor responde con un ACK, y inicia en intercamo de llaves del servidor.

Luego establecen un algoritmo de encriptacion, crean unas nuevas llaves para crear el tunel ssh y luego inician una comunicacion encriptada.













Para finalizar la conexion ssh el cliente le manda una peticion de FIN, ACK al servidor el servidor le responde con otro FIN, ACK y el cliente le confirma con un ACK.

No hay comentarios: