I-ssh2: (0.02) (potato) *EN DESARROLLO* Usando ssh como tunel cifrado para las X y POP3 Copyright Manel Marin @ 2000 Cubierto por la licencia GNU GPL disponible en http://www.gnu.org/copyleft/gpl.html Se puede copiar, distribuir y modificar libremente bajo los términos de la GPL e incluyendo siempre este párrafo ***POR HACER:*** Probar que ForwardAgent hace lo que creo (solo tengo dos sistemas...) Probar cliente sin ssh como demonio Probar StrictHostKeyChecking yes, ¿mas seguridad? PASO A PASO: 1) Instalar ssh Mira mi chuleta I-ssh Tengo ssh en modo demonio en los dos sistemas ¿Funcionará todo si no? NOTA: Potato ya lanza el ssh-agent como padre de las X si está instalado, y no se ha lanzado ya antes de llamar a las X, esto se hace en: /etc/X11/Xsession # Sesión Debian del gdm /etc/gdm/Sessions/Gnome # Sesión Gnome del gdm Y se puede evitar comentando la linea "use-ssh-agent" en: /etc/X11/Xsession.options # Sesión Debian del gdm --- # No se puede evitar en la sesión Gnome Para usarlo (dar la contraseña una sola vez y ssh-agent la recuerda) hacer: ssh-add 2) Autorizar X y redirección a otro sistema (y no a todo el mundo) ForwardX11 -> tunel para las X, solo es preciso en el sistema que visualiza los programas X (servidor X) y no en el sistema que los ejecuta (cliente X) ForwardAgent -> redirecciones de agente ¿pasar de esta maquina a otra máquina dando frase de paso solo una vez? GatewayPorts -> redirección de puerto local permitida, tuneles cifrados disponibles para cualquier _otro_ sistema que use el puerto redirigido Añadir al final de /etc/ssh/ssh_config (no es preciso que sea antes del "Host *") En el servidor: ---8<--- # Permito saltar a otros sistemas usando el agente (frase de paso solo una vez) Host cliente ForwardAgent yes --->8--- NOTA: En este sistema _NO_ necesitas tener el puerto 6000 activo (X) En el cliente: ---8<--- # Permito tunel X a otro sistema Host servidor ForwardX11 yes ForwardAgent yes --->8--- ATENCION: Necesitas tener las X escuchando en el puerto 6000 (servidor X) ATENCION: Si deseamos que otros sistemas puedan utilizar el puerto redirigido hay que añadir en el cliente: ---8<--- # Permito tunel X, y uso de tuneles cifrados a otros sistemas Host servidor ForwardX11 yes ForwardAgent yes GatewayPorts yes --->8--- Activar los cambios en los dos sistemas: /etc/init.d/ssh reload 3) Lanzar una aplicación X remota que se emplea mi monitor/teclado/ratón ssh-add # opcional, pedirá las frases de paso una sola vez Eterm # Abro un emulador de terminal X ssh servidor # desde el terminal y pasamos al sistema remoto xlogmaster & ssh -f servidor xterm # Si hay petición de frase de paso # -f = pasar ssh a background tras la frase de paso ssh -n servidor xterm & # Si no hay petición de frase de paso # -n = redirigir /dev/null > stdin 4) Hacer que nuestro puerto 1234 sea redirigido a traves del canal seguro al puerto POP3 del servidor (a la vez que abrimos una sesión ssh) ssh -L 1234:servidor:110 servidor - Solo root puede redirigir los puertos <1024 Ahora ya podemos usar el puerto 1234 en nuestro loopback (IP=127.0.0.1) para mantener una sesión cifrada 5) Para hacer esto de forma automática (pero solo mientras hay una sesión ssh abierta) Añadir en el cliente en /etc/ssh/ssh_config: ---8<--- # Permito tunel X, abro un tunel cifrado local para POP3 Host servidor ForwardX11 yes ForwardAgent yes LocalForward 1234 servidor:110 --->8--- 6) Si además quieres que otros sistemas locales usen ese puerto para mantener una conexión cifrada con el otro extremo Añadir en el cliente en /etc/ssh/ssh_config: ---8<--- # Permito tunel X, abro un tunel cifrado público para POP3 Host servidor ForwardX11 yes ForwardAgent yes GatewayPorts yes LocalForward 1234 servidor:110 --->8--- SEGURIDAD: - Deberías autorizar tuneles ssh máquina y redirección de agente máquina a máquina, y no a todo el mundo, para prevenir ataques X y que tus claves puedan ser usadas por otros desde una máquina remota. PRUEBAS: La redirección de puertos solo se puede ver en el lado que tiene el puerto de origen (el cliente) con: netstat -tuna # ó como root con: lsof -ni SOLUCION DE PROBLEMAS: Fallos de conexión X o de tuneles cifrados: - Por defecto se comprueba la IP del otro sistema con los archivos "/etc/ssh/ssh_known_hosts" MAS AYUDA: Mi chuleta I-ssh man ssh Incluye explicación de las opciones de /etc/ssh/ssh_config man sshd man ssh-agent Incluye explicación del uso del agente /usr/doc/ssh/* (English) Leer en especial: README.Ylonen.gz Descripción de SSH, y porque hay que usarlo README.Debian Notas de configuración de Openssh en Debian SSH Techniques http://www.linuxmonth.com/issue3/articles/security/security.html