Sei sulla pagina 1di 13

Sesiones seguras con SSH

ENCRIPCION DE SESIONES CON SSH

Armando Carvajal, Ing. Sistemas Unincca, Especialista en software para redes de computadores Uniandes, Cursando Master en seguridad Informatica universidad Oberta de Catalunia, e-mail: armando.carvajal@mvaonline.com

1 de 13

DISMINUYENDO LA INSEGURIDAD EN ENTORNOS EMPRESARIALES CRITICOS

Sesiones seguras con SSH

Contenido
1. 2. 3. 4. 5. 6. 7. 8.

Definicin Problema que resuelve Generacin de llaves Comandos Archivos de configuracin Trucos Laboratorio Bibliografa

Definicin SSH indica Secure Shell, es un programa que permite ejecutar comandos, hacer sesin remota y mover archivos hacia mquinas remotas de forma segura, para esto provee fuerte autenticacin y encriptacin sobre los canales de transmisin inseguros entre el cliente y el servidor. Es el reemplazo de los comandos rlogin, rsh y rcp, adicionalmente provee conexiones X window seguras. Los tradicionales comandos rcomo rlogin, rcp, rsh son vulnerables a diferentes clases de ataques.

2 de 13

DISMINUYENDO LA INSEGURIDAD EN ENTORNOS EMPRESARIALES CRITICOS

Sesiones seguras con SSH

SSH
Los tradicionales comandos r como rlogin, rcp, rsh son vulnerables a diferentes clases de ataques. Si alguien registra el trfico que entra y sale de sus servidores descubrir las contraseas de cualquier usuario

Es posible que alguien registre todo el trfico que entra y sale de sus servidores para descubrir las contraseas de cualquier usuario. SSH encripta el canal y permite conexiones seguras transparentes al usuario. Que problemas resuelve SSH nos protege de ataques como Ip spoofing, Ip Source Routing y DNS Spoofing, SSH no confa en la red, si un intruso tomo el control de la red solo podra forzar a ssh a desconectarse pero no podra desencriptar la informacin sin embargo si el atacante ha ganado el acceso al usuario root puede derribar a ssh tambin. Todas las conexiones son encriptadas usando el algoritmo IDEA, mientras que las llaves de encripcin son intercambiadas usando RSA y DSA los datos usados en el intercambio son destruidos de forma peridica ( las llaves no estn a salvo en ninguna parte ). Cada host tiene una llave RSA ( privada ) la cual es usada para autenticar el host. La versin de Openssh puede ser distribuida libremente segn GNU pero la versin de ssh sobre MS Windows es un producto comercial el cual requiere de una licencia. En algunos pases, particularmente Francia, Rusia, Iraq y Pakistan, puede ser ilegal usar cualquier clase de encripcin. Si reside en EEUU, debe estar enterado que mientras ssh fue escrito fuera de los Estados Unidos, usando informacin pblica disponible para todo el mundo, el gobierno de este pas considero una gran ofensa exportar este software desde U.S una vez haba sido importado, incluyendo ponerlo en un sitio FTP. Los algoritmos RSA e IDEA, los cuales son usados por ssh, son patentados en diferentes pases, incluyendo U.S, necesitando obtener licencias para uso comercial.

3 de 13

DISMINUYENDO LA INSEGURIDAD EN ENTORNOS EMPRESARIALES CRITICOS

Sesiones seguras con SSH

Respecto a la administracin de SSH el problema central radica en el manejo de las llaves, para permitirle a un cliente conectarse a un host remoto con autenticacin RSA, el servidor necesita conocer la llave pblica del cliente. Cuando el cliente se conecta por primera vez entonces se establece una conexin segura de ese cliente con ese servidor y el Digital finger Print no se encontrar dentro del anillo de known-hosts del cliente, en ese momento el servidor sshd notifica que la autentificacin no puede ser establecida pues el cliente no es conocido. A continuacin se le pide al cliente la autorizacin para negociarla en forma automtica, es decir el cliente traer la llave pblica y la insertar en el anillo. SSH establece conexiones seguras evitando de esta manera la vulnerabilidad de otros servicios como el telnet, rlogin, rsh y ftp. SSH usa el binario sshd como demonio para atender requerimientos de clientes, el puerto por donde se presta el servicio es el 22 y por lo tanto es importante inhabilitar servicios que no se deberan utilizar como el telnet que trabaja en el puerto 23, esto puede hacerse a travs del archivo de configuracin /etc/xinetd.d/telnet poniendo la palabra yes frente a la variable disable y reiniciando el demonio inetd. # /etc/init.d/xinet restart

4 de 13

DISMINUYENDO LA INSEGURIDAD EN ENTORNOS EMPRESARIALES CRITICOS

Sesiones seguras con SSH

SSH en Linux Si desea saber que versin de SSH est instalada actualmente en su sistema, corra el comando: # ssh V.

Ultima versin
Si desea saber que versin de SSH est instalada actualmente en su sistema, corra el comando # ssh V

# rpm q openssh

Las ltimas versiones se obtienen directamente de www.openssh.org

Las ltimas versiones puede obtenerlas directamente de www.openssh.com. Generacin de llaves La llave privada y la pblica residirn en el directorio $home/.ssh. Se recomiendan los siguientes permisos para no permitir la escritura al grupo y otros usuarios del sistema: # chmod 755 ./ssh

5 de 13

DISMINUYENDO LA INSEGURIDAD EN ENTORNOS EMPRESARIALES CRITICOS

Sesiones seguras con SSH

Generacin de llaves
El comando para generar las llaves es: # ssh-keygen Al ejecutarse, pedir informacin necesaria para la configuracin como el directorio donde quedarn las llaves Pedir la contrasea para generar la clave de tipo oracin

Para las versiones 3.0.1 o mayores la llave privada de tipo DSA residir en el archivo $home/.ssh/id_dsa y la publica en $home/.ssh/id_dsa.pub. Para las llaves de tipo RSA residir en el archivo $home/.ssh/id_rsa y la publica en $home/.ssh/id_rsa.pub. El comando para generar las llaves es: # ssh-keygen # ssh-keygen t rsa, para el sistema de llaves publicas RSA # ssh-keygen t dsa, para el sistema de llaves publicas DSA Al ejecutarse, pedir informacin necesaria para la configuracin como el directorio donde quedarn las llaves y la contrasea para generar la clave de tipo oracin.

6 de 13

DISMINUYENDO LA INSEGURIDAD EN ENTORNOS EMPRESARIALES CRITICOS

Sesiones seguras con SSH

Comandos Conexin a un servidor dado con el usuario actual: # ssh intrarred.net Conexin a un servidor con un usuario especfico: # ssh l acarvaja intrared.net

Conexin en modo caractr


Conexin a un servidor dado con el usuario actual: # ssh intrarred.net Conexin a un servidor con un usuario especfico: # ssh l acarvaja intrared.net En ambos casos las contraseas correspondientes son solicitadas.

En ambos casos las contraseas correspondientes son solicitadas. Conexin desde modo grfico: # ssh e ssh host Transferencia de archivos a un servidor remoto: # scp archivo.doc ibm:/home/pepe Este comando copiar el archivo.doc al servidor ibm en el directorio /home/pepe. # ssh-keyscan permite buscar hosts y adicionarlos al anillo de confianza esta herramienta puede obtenerse de ftp://cag.lcs.mit.edu/pub/dm ftp://ftp.cs.hut.fi/ssh/contrib. Tambin existe un script que permite chequear nuevas llaves y advertir sobre hosts que han cambiado sus llaves lo que puede ser un indicio de que hay un intruso, este script puede obtenerse de www.uni.karlsrure.de/~ig25/ssh-faq/comp-host-list.

7 de 13

DISMINUYENDO LA INSEGURIDAD EN ENTORNOS EMPRESARIALES CRITICOS

Sesiones seguras con SSH

Archivos de configuracin Servidor: Para las versiones anteriores a la 3.0.1 el servicio se debe arrancar con el comando sshd y leer el archivo de configuracin /etc/ssh/sshd_config.

Archivos de configuracin
En el Servidor: El servicio se debe arrancar con el comando sshd SSHD leer el archivo de configuracin /etc/ssh/sshd_config Cuando se instala manualmente buscara /usr/local/etc/ssh/sshd_config

Un comando genrico para subir el servicio es: # /etc/init.d/sshd start Un comando genrico para bajar el servicio es: # /etc/init.d/sshd stop Nota: Se recomiendan las siguientes variables en el archivo de configuracin del servidor /etc/ssh/sshd_config

Protocol 2 Password Authentication ChallengeResponseAutehtication GSSAPIAuthentication GSSAPICleanupCredentials UsePAM X11Forwarding

yes no yes yes yes

yes

8 de 13

DISMINUYENDO LA INSEGURIDAD EN ENTORNOS EMPRESARIALES CRITICOS

Sesiones seguras con SSH

Cliente: Los comandos de clientes leern el archivo de configuracin /etc/ssh/ssh_config.

Archivos de configuracin
En el cliente: Guarda registros individuales de las llaves publicas de los hosts a los que podemos acceder $home/.ssh/know_hosts son las llaves publicas de esos servidores SSH cliente leer el archivo de configuracin /etc/ssh/ssh_config $home/.ssh/authorized_ keys son las llaves publicas por usuario de esos servidores.
Existen archivos que se crean de manera automtica a medida que el servicio los requiere, tal es el caso de known_hosts, este archivo guarda en registros individuales las llaves de los hosts a los que podemos acceder y $home/.ssh/authorized_ keys son las llaves publicas por usuario de esos servidores. Por ejemplo para adicionar una llave pblica del archivo root_dsa digite: # cat root_dsa.pub >> authorized_keys Trucos No pedir password cada vez que se inicia sesin: Para que ssh no solicite el password al usuario se debe adicionar la llave publica $home/.ssh/id_rsa.pub o la $home/.ssh/id_dsa.pub del usuario remoto (o el nombre de llave que se le haya asignado) en el servidor remoto al final del archivo $home/.ssh/authorized_keys. Unicamente permitir el acceso a usuarios diferentes a root: Para que ssh solo permita el acceso a los usuarios acarvaja, Juana y pepe pero no el usuario root debe editar el archivo /etc/ssh/sshd_config y listar nicamente los usuarios permitidos: AllowUsers acarvaja Juana pepe

9 de 13

DISMINUYENDO LA INSEGURIDAD EN ENTORNOS EMPRESARIALES CRITICOS

Sesiones seguras con SSH

Luego el usuario podra cambiarse al usuario root con el comando su y as obtener permisos de administrador. No olvide reiniciar el servicio con /etc/init.d/sshd restart Esto es altamente recomendable en un firewall o mejor aun deshabilitar el servicio SSH. Laboratorio: Tneles con SSH Objetivo: Se debe crear un tnel entre dos mquinas de tal manera que la mquina 1 redirija las conexiones que le lleguen al puerto 8080 hacia el puerto 80 de la mquina 2. Prerrequisitos: Se deben tener 3 PCs: Uno con Windows e Internet Explorer con el IP 192.168.1.111, este PC se har pasar por el cliente windows. Un PC llamado maquina1 con IP 192.168.1.222 que ser el gateway y un servidor o maquina2 con IP 192.168.1.223 que ser el servidor web que no usa SSL. Paso 1: En la maquina2 se sube el servicio apache con el comando: # /etc/init.d/apache start Para subir el servicio SSH se debe utilizar el comando: # /etc/init.d/ssh start Paso 2: En el nodo maquina1 o servidor SSH gateway se edita el archivo /etc/ssh/ssh_config y se adiciona al final la variable GatewayPorts yes Ahora suba el servicio ssh con el comando /etc/init.d/ssh start. Paso 3: En el servidor gateway SSH se crea un shell en /etc/init.d/sshgateway.sh con las siguientes instrucciones que hacen el tnel: #!/bin/sh ssh -N -T -C -L Donde: -N indica no hacer comandos nicamente generar un tnel 8080:192.168.1.222:80 192.168.1.223

10 de 13

DISMINUYENDO LA INSEGURIDAD EN ENTORNOS EMPRESARIALES CRITICOS

Sesiones seguras con SSH

-T indica no crear pseudo terminales asociadas a los procesos -C Indica comprimir los datos para usar en forma optima el canal -L Indica hacer reenvo de datos entre puertos e IPs Paso 4: Al ejecutar el shell /etc/init.d/sshgateway.sh el comando ssh pedir el password del usuario root que controla el servidor principal donde reside el servicio SSH. Para que se ejecute automticamente se hace un enlace al directorio de arranque as: # ln -s /etc/init.d/sshgateway.sh /etc/init.d/rc5.d/S99sshgateway.sh Paso 5: Desde el cliente Windows https://192.168.1.222:8080 Que es equivalente a: http://192.168.1.222:8080 pruebe en el explorador digitando el URL

Cuestionamientos Los datos entre el cliente y el gateway estn cifrados? Los datos entre el gateway ssh y el servidor apache estn cifrados? Se podra asegurar cualquier servicio que transfiera datos en claro?

Tambin se quiere que el acceso va SSH para administrar el servidor web no se pueda realizar con contrasea sino solamente con autenticacin basada en clave pblica. Genere un par de claves RSA para usarlas en la autenticacin SSH, con la clave privada protegida con la passphrase cliente, indique donde se debe copiar los archivos generados para permitir la conexin al sistema como usuario knoppix y qu cambios se debe realizar al archivo de configuracin del servidor SSH (p.e: /etc/ssh/sshd_config) para que la conexin solamente se pueda realizar con autenticacin de cliente por clave pblica. Respuesta: El usuario knoppix existe en el servidor web.uoc.edu.co y en el cliente remoto, el usuario knoppix hace login en su sistema linux cliente y se posiciona por defecto en la carpeta /home/knoppix. Ahora para generar el par de llaves digita: # ssh-keygen -t rsa El sistema le propone crear la llave privada en el directorio /home/knoppix/.ssh/id_rsa, de inmediato le pide dos veces la palabra secreta 'cliente' para la generacin de la llave privada. Adems genera la llave publica y muestra el fingerprint como el usuario@dominio de la

11 de 13

DISMINUYENDO LA INSEGURIDAD EN ENTORNOS EMPRESARIALES CRITICOS

Sesiones seguras con SSH

maquina donde reside el usuario. Al terminar el comando anterior, se nota que existe la carpeta .ssh y dentro de esta hay dos archivos: id_rsa para la llave privada y como llave publica el archivo id_rsa.pub Por ejemplo esta es la salida de la llave pblica: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA3tn1U6TUsxvsuNf5GV9AYk9fP2fPFSQjoewpt WevseCIIQsw+d0kSsrBl7HpFZTxSV8WVIxvXo9eQ1U4JCGhEbPXk7OylxFyogYGwg7 GVMon7ifox68B2/22mkbR7lm9/YLmCz50YcI9GNyBJhKZFnyiZOgy7taj7T5vHEtoF JU= knoppix@cortafuegos2 Donde ssh-rsa indica el tipo de cifrado usado. Luego sigue la clave pblica y finalmente el usuario y su dominio local donde se le genero la llave. Conclusiones 1. Las llaves deben existir en la carpeta .ssh del usuario respectivo. 2. Ademas el archivo /etc/ssh/sshd_config del servidor (web.uoc.edu.co) remoto debe contener las siguientes variables: 3. RSAAuthentication YES 4. PubkeyAuthentication Yes 5. AuthorizedKeysFile .ssh/authorized_keys 6. PasswordAutehtication no Se debe copiar la llave pblica id_rsa.pub al servidor remoto (web.uoc.edu.co) en el archivo /home/knoppix/.ssh/authorized_keys Finalmente se debe reiniciar el servicio ssh para que tome la nueva configuracin: # /etc/init.d/sshd stop # /etc/init.d/sshd start Establezca una conexin SSH utilizando la clave anterior y capture los paquetes de la conexin con el analizador de paquetes Ethereal. Indique qu paquetes se pueden ver en claro y cuales no. Respuesta: En la maquina cliente linux se debe lanzar el ethereal: # ethereal & Y se pone a escuchar por la tarjeta de red que deseamos atrapar los paquetes. Por otra Terminal se lanza el comando cliente para que se conecte al servidor:

12 de 13

DISMINUYENDO LA INSEGURIDAD EN ENTORNOS EMPRESARIALES CRITICOS

Sesiones seguras con SSH

# ssh 20.0.0.2 De inmediato el sistema pide el password de la llave privada del sistema remoto. Se le digita 'cliente' y permite continuar la sesin. Conclusin: Mirando el trafico generado por ethereal se encuentra que se ve en claro solo la negociacin inicial para el intercambio de llaves, esto aparece como los protocolos: SSH client y SSHv2 Server. No se muestra informacin en claro cuando se termina el intercambio de llaves y esto aparece como el protocolo SSHv2 Server Encrypted.

Bibliografa

Bibliografa
www.ssh.org SSH, The secure shell: The definitive guide, Daniel J Barrett, Mayo 2005, OReilly Pro Open SSH, Michael Stahnke, Octubre 2005, Apress

Para mejorar esta ayuda por favor escribanos a acarvaja@mvaonline.com

13 de 13

DISMINUYENDO LA INSEGURIDAD EN ENTORNOS EMPRESARIALES CRITICOS

Potrebbero piacerti anche