SSH
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.
Contenido
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
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
Enlaces externos
- Sitio Oficial de OpenSSH (en inglés)
- Seguridad de Debian Sitio oficial. (en inglés)
- Guía documentada para Ubuntu (en español)
- Securing the connection between MySQL and MySQL Administrator using an SSH tunnel Crear un túnel SSH al servidor MySQL. (en inglés)
- Cliente SSH en un sitio web (en inglés)
- SSH y SCP sin contraseña (en español)