domingo, 13 de febrero de 2011

OpenSSH

Instalación OpenSSH en 
LinuX



OpenSSH reúne un conjunto de herramientas del protocolo de seguridad Secure Shell (SSH) para la transferencia codificada de información a través de una red.
Contiene aplicaciones como el servicio de SSH, llamado sshd, un cliente, un generador de claves públicas, un agente de autentificación, un registrador de contraseñas, etc.
En la práctica todos estos programas sirven a un mismo propósito: manejar remotamente la consola de comandos del ordenador en el que se haya instalado el servicio SSH. De esta manera, una vez introducido nuestro nombre de usuario y contraseña, accederemos a todas las partes del ordenador permitidas al usuario con el que nos hayamos identificado.
La instalación de todos los componentes se realiza de manera automática, sin embargo, las claves hay que activarlas manualmente con los comandos que aparecen en el manual del programa. Ejecutando el subprograma de creación de clave privada registraremos nuestra contraseña de Windows. Así, los dos sistemas de acceso, vía remota por SSH y vía local con Windows comparten las claves de acceso.
En resumen, OpenSSH nos brinda una manera segura y eficaz de interactuar con nuestro ordenador donde quiera que estemos. Aunque la creación de claves no resulte sencilla a un usuario inexperto, tampoco requiere conocimientos avanzados. De todas formas, recomendamos tener nociones de seguridad informática a quien quiera activar este servicio SSH.


LinuX


Si necesitas conectar a tu maquina remotamente y quieres emplear un protocolo seguro esta es una buena opcion. Para la gente menos experta podriamos decir que SSH es como una conexion mediante telnet pero la informacion viaja de manera encriptada.

Con SSH te validas en el servidor y ya puedes introducir comandos de manera remota y segura. No es lo mismo que por ejemplo ejecutes un comando pasando un usuario y contraseña y esa informacion pueda ser capturada mediante un sniffer y sea facilmente legible, a que lo hagas con un protocolo seguro y aunque no imposible si que al menos es mucho mas dificil de descifrar.
Un buen servidor es “open ssh server“. Para instalarlo ejecuta el siguiente comando:



Y reiniciamos el equipo para que se apliquen los cambios.

Una vez instalado prueba a conectar con tu maquina.

Deberas obtener algo similar a lo siguiente:


Luego nos pide la contraseña del usuario. La primera vez que nos conectemos a un servidor tarda un poco más y nos pide confirmación tecleando "yes" con todas sus letras, las subsiguientes ya no. Sabemos que estamos conectados porque el prompt cambia y aparece en lugar del nombre de nuestro host el nombre del host remoto.
Los comandos, programas y scripts que lancemos tras conectarnos se ejecutarán en la máquina a las que nos hayamos conectado, utilizando los recursos del host remoto (CPU, memoria, disco, etc.). Esta arquitectura puede utilizarse, por ejemplo, para tener un servidor más potente y varios clientes que ejecutan aplicaciones en dicha máquina.
Para ejecutar aplicaciones gráficas en la máquina a la que nos conectamos tenemos dos opciones. La primera consiste en definir la variable $DISPLAY apuntando a la máquina desde la que nos conectamos.

La primera vez que conectas con una maquina nueva a la que no has conectado antes, te aparece el mensaje:


Si aceptas se guarda la entrada de la clave en tu directorio HOME en el directorio .ssh

Las claves se guardan en un fichero denominado “know_hosts”, la proxima vez que conectes con una máquina a la que ya conectaste si su entrada esta en este fichero no te volvera a preguntar.
Una aclaración, si cuando intentas conectar con tu servidor, tuvieras problemas de conexión con tu máquina o de conexión con otra máquina remota, comprueba que no tienes deshabilitado el acceso remoto:
Sistema > Administracion > Ventana de Entrada (Pestaña Remota y Accesibilidad)


Para ejecutar aplicaciones gráficas en la máquina a la que nos conectamos tenemos dos opciones. La primera consiste en definir la variable $DISPLAY apuntando a la máquina desde la que nos conectamos.
$ export DISPLAY=host_local:0.0

Este mecanismo no se recomienda por motivos de seguridad (el protocolo X11 no se encuentra cifrado) y, además, pueden encontrarse problemas porque cortafuegos intermedios bloqueen ese tráfico (puertos 600x TCP).

Una solución mejor es utilizar un túnel SSH para encapsular el protocolo X11, lo que transmite la información de manera segura y, además, no suele dar problemas con los cortafuegos intermedios.
Para poder ejecutar aplicaciones gráficas en el host remoto de forma segura, necesitamos dos cosas. La primera, que en la configuración del servidor SSH del host remoto (/etc/ssh/sshd_config) se encuentre activada la siguiente opción:
  
           X11Forwarding yes
Para aprovechar esta característica, hemos de conectarnos usando el parámetro -X, lo que exportará la configuración de la variable $DISPLAY con lo que podremos ejecutar aplicaciones gráficas de forma remota:

$ ssh -X usuario_remoto@host_remoto
Ahora si ejecutas el programa xclock verás que la ventana sale en tu escritorio: 
 
$ xclock



Evitar que nos pida el password cada vez

Siempre que conectemos a un ordenador remoto con SSH nos va a pedir el password de acceso para asegurarse de que tenemos permisos. Hay una forma de evitar que nos pida el password siempre haciendo que el ordenador remoto confíe en nosotros. Para ello hemos de generar un par de claves DSA que se usarán en la relación de confianza:

Una vez generada la copiamos al usuario del ordenador remoto con el que queremos mantener la relación de confianza usando el comando ssh-copy-id. Este es un ejemplo del uso con la salida del programa:

$ ssh-copy-id usuario_remoto@192.168.0.1

Now try logging into the machine, with "ssh 
 
'usuario_remoto@192.168.0.1'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys
that you weren't expecting.
Imagen:Nota clasica.png Si te da el error No identities found prueba a indicarle la ruta de la clave pública con -i


Imagen:Nota clasica.png Para que funcione correctamente el comando ssh-copy-id el agente tiene que estar activo para la sesión. Si no lo has puesto que lo arranque al inicio como se explica un poco más abajo, tendrás que arrancarlo desde la consola ejecutando ssh-add.

Ahora solo hay que arrancar el agente SSH para que recuerde nuestra contraseña. Nos pregunta la contraseña y ahora ya podemos acceder al ordenador remoto sin tener que escribir el password cada vez.
               $ ssh-add
El agente sólo dura mientras esté activa nuestra consola. O sea que  si la cerramos y la volvemos a abrir ya no está activo el agente y nos  volverá a pedir el password cada vez. Para evitar esto lo que podemos  hacer es añadir el agente a la sesión para que se ejecute cada vez que  se inicie GNOME. Al iniciar saldrá un diálogo que nos preguntará por la  contraseña. 

Cómo nota


Imaginemos que la IP de nuestro servidor es 192.168.2.3. Nos conectamos via SSH desde otro equipo, la primera vez tarda un poco más porque tiene que escribir en el archivo /home/[nuestro_usuario]/.ssh/known_host una entrada para esa IP.

Las subsiguientes veces que nos conectemos compara la clave gpg de la IP con la que tiene guardada en el archivo known_host, en caso de variar supone que el ordenador es distinto -por ejemplo, porque el ordenador servidor ssh ha sido formateado o porque se ha apagado y sustituido por otro al que se le ha asignado la misma IP-. Ese es el error man-in-the-middle y significa: "el ordenador cuya IP es esa, no es el mismo que yo conocía.

Puede ser que alguien se esté haciendo pasar por él" y no nos deja volvernos a conectar salvo que borremos la entrada de esa IP en el archivo known_host.

Video explicativo (INGLÉS): http://www.youtube.com/watch?v=d1u6TnN3YEw









No hay comentarios:

Publicar un comentario