SSH

De Wiki de Sistemas Operativos
Revisión del 17:00 13 oct 2011 de Ferguatol (discusión | contribuciones) (Accediendo remotamente)
Saltar a: navegación, buscar

SSH (Secure SHell, en español: intérprete de órdenes seguro) es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder a máquinas remotas a través de una red, ya sea local o pública. Permite manejar por completo el ordenador mediante un intérprete de comandos, y también puede redirigir el tráfico de aplicaciones gráficas si tenemos un Servidor X (en sistemas tipo Unix y Windows) corriendo.

Seguridad

SSH funciona de manera similar a Telnet con la diferencia de que aquí la información viaja cifrada, lo cual hace inútil la intercepción de un paquete al ser éste ilegible.

Además de conectarnos a otros dispositivos para manejarlos remotamente, SSH también nos permite crear túneles seguros a través de los cuales podemos redirigir tráfico, o enviar y recibir ficheros de forma totalmente segura, fiable y simple gracias a su gestión de claves RSA, como si se tratase de un servidor FTP.

Por lo tanto, podemos concluir que la seguridad está presente en todo momento.

Tunneling

Esquema Tunneling

Por lo general, los protocolos envían sus datos «en claro» (sin encriptar), por lo que cualquier persona con acceso físico a nuestra red y un sniffer (programa de captura de tramas de red) es capaz de interceptar nuestros paquetes y verlos libremente. Si tenemos información sensible en circulación, la seguridad estará seriamente comprometida, obviando usuarios y contraseñas como en los casos de Telnet o

El tunneling nos permitirá salvar este problema fácilmente sin dejar de usar los protocolos que necesitemos. Esta técnica consiste en abrir conexiones entre dos máquinas por medio de un protocolo seguro, como puede ser el SSH, a través de las cuales realizaremos las transferencias inseguras, que pasarán de este modo a ser seguras.

Aplicaciones SSH

Resumiendo, las principales aplicaciones del SSH que en esta página se van a explicar son:

  • Redirigir el tráfico de algunos puertos, por ejemplo de un cliente de correo (Thunderbird). Es decir, encriptar nuestras conexiones para evitar miradas «ajenas» gracias a que creamos un túnel seguro entre el puerto del servidor de correo (ej. 110) y uno local (ej. 1110).
  • Saltarse un cortafuegos.
  • Enviar y descargar archivos de manera segura.
  • Acceso total a una computadora remota por Terminal.

Todo lo vamos a hacer desde el punto de vista de una distribución Linux, en nuestro caso y por ser la más extendida a nivel de usuario, Ubuntu.

Instalando y Configurando SSH

Abrimos un terminal de Ubuntu y escribimos:

 sudo aptitude install openssh-server

Seguidamente, pasamos a configurar nuestro servidor ya instalado. Para ello usaremos el editor de textos nano, aunque también podríamos usar gedit o vim:

 sudo nano /etc/ssh/sshd_config

Claves para aumentar la seguridad de nuestro servidor:

  • Cambiar el puerto estándar de conexión (22) a otro cualquiera para evitar ataques es una buena forma de permanecer invisibles a los molestos bots que, a pesar de no representar una amenaza sin tener nuestra contraseña de acceso, es mejor evitar. Para ello, en la quinta línea, cambiamos el puerto a, por ejemplo:
  Port 443 (Estándar HTTPS)
  • No permitir el logueo como Root es algo básico y esencial para la seguridad de nuestro sistema. Así que buscamos la línea siguiente y cambiamos el valor de "yes" a "no":
  PermitRootLogin no
  • Imponer un número máximo de intentos fallidos de autentificación es una buena estrategia, sobre todo si nuestro servidor está escuchando en una red pública. De ésta forma podremos evitar que un posible atacante intente averiguar una contraseña por un método de fuerza bruta. En este caso, crearemos una nueva instrucción dentro del archivo, de la siguiente forma:
  MaxAuthTries 2 (si fallamos dos veces la contraseña, el servidor nos desconecta y hay que volver a establecer la conexión)
  • Definir exactamente quién puede o no acceder a nuestro servidor puede ser útil especialmente si trabajamos a nivel local, aunque es extensible a la red externa. Para ello, basta con configurar los archivos hosts.allow (permitir) y hosts.deny (denegar) añadiendo las IP's que nos interese administrar (un buen paranoico, denegaría todas las conexiones y configuraría solo las que fueran absolutamente necesarias):
 sudo nano /etc/hosts.allow
 sudo nano /etc/hosts.deny

Arranque y parada del servidor

  • Arrancar el servidor SSH:
 sudo service ssh start
  • Detener el servicio:
 sudo service ssh stop
  • Reiniciar el servicio:
 sudo service ssh restart

Clientes DNS

Si tenemos intención de usar nuestro servidor SSH externamente a nuestra red local, necesitaremos un cliente DNS que nos permita olvidar nuestra dirección IP; más aún en el caso de ser dinámica, y sustituirla por un nombre de dominio.

Aquí vamos a trabajar con dos servicios distintos y gratuitos: No-IP.com y DynDNS.com


No-IP

Nos registramos en su página web, y cuando hayamos accedido al menú principal, clickeamos en Add a Host.

Seguidamente, escribiremos el nombre que le queramos dar al host, que irá seguido de un subdominio obligatorio que nos impone No-IP, aunque podremos elegir entre varios.

  • El «Host Type» ha de ser siempre «DNS Host (A)» No debemos rellenar nada más, así que pulsamos en Create Host.

Una vez hecho esto, instalaremos el programa cliente en nuestro ordenador, que mandará periódicamente a nuestro dominio de No-IP la dirección IP que tengamos en ese momento.

 sudo apt-get install noip2

Durante la instalación, el programa nos hará preguntas para configurarse. No obstante, podremos reconfigurarlo sin problemas si algo ha ido mal con la siguiente instrucción:

 sudo noip2 -C


Por último, solo nos queda por saber las instrucciones para arrancar, parar y reiniciar el servicio. Cabe decir que este servicio, al igual que el propio SSH, arrancará automáticamente con el ordenador una vez instalado.

  • Arrancar el cliente noip2:
 sudo service noip2 start
  • Detener el servicio:
 sudo service noip2 stop
  • Reiniciar el servicio:
 sudo service noip2 restart

DynDNS

Nos registramos en su página web, y cuando hayamos accedido al menú principal, clickeamos en Add Host Services. Seguidamente, escribiremos el nombre que le queramos dar al host, que irá seguido de un subdominio obligatorio que nos impone DynDNS, aunque podremos elegir entre varios.

  • El «Service Type» ha de ser siempre «Host with IP adress».
  • En el apartado IP Adress, pinchamos donde veamos nuestra IP y finalmente en Add to Cart.

Una vez hecho esto, instalaremos el programa cliente en nuestro ordenador, que mandará periódicamente a nuestro dominio de DynDNS la dirección IP que tengamos en ese momento.

 sudo apt-get install ddclient

Durante la instalación, el programa nos hará preguntas para configurarse. No obstante, podremos reconfigurarlo sin problemas si algo ha ido mal con la siguiente instrucción:

 sudo dpkg-reconfigure ddclient


Si usamos ddclient, solo tendremos la opción de reiniciar el servicio, ni arrancarlo ni pararlo, y lo haremos de la siguiente forma:

 sudo service ddclient restart

Notas

  • No olvidar nunca abrir correctamente el puerto que vayamos a usar en el SSH tanto en nuestro router como en el cortafuegos.
  • Los servicios de No-Ip y DynDNS nos enviarán aproximadamente cada sesenta días un e-mail pidiéndonos que confirmemos que queremos mantener nuestros dominos activos (al usarlos como SSH no se registran visitas a los mismos y por lo tanto parece que están inactivos)

Accediendo remotamente

Lo más básico de todo consiste en realizar una conexión simple que nos permita acceder y loguearnos remotamente a nuestro ordenador con el servidor SSH ya activo. Para ello, abrimos un terminal y tecleamos:

 ssh -p puerto usuario@host

Si el puerto es el 22 (por defecto) podemos omitir la opción -p. Un ejemplo práctico del comando anterior:

 ssh -p 443 fernando@micasa.dyndns.org

Con esta simple instrucción, automáticamente el terminal pasará a tener nuestro usuario y equipo, y podremos usarlo como si estuviésemos en nuestro propio PC: instalar programas, eliminar archivos, reiniciar el sistema...

Esquema Tunneling

Una buena forma, cómoda y rápida de traspasar archivos entre el servidor y el ordenador utilizado en ese momento, es el programa FileZilla (libre y en los repositorios de Ubuntu), que nos permite conectarnos del mismo modo que si fuese una conexión FTP.

Enlaces externos