Instalación y configuración de un servidor ssh en Debian
|Una de las herramientas indispensables para administrar los servidores es a través de SSH (Secure SHell). Pero antes, un poco de teoría.
Definición
“SSH (Secure SHell) 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. Permite manejar por completo la maquina mediante un intérprete de comandos, y también puede redirigir el tráfico de X para poder ejecutar programas gráficos si tenemos un Servidor X (en sistemas Unix y Windows) corriendo.
Además de la conexión a otros dispositivos, SSH nos permite copiar datos de forma segura (tanto ficheros sueltos como simular sesiones FTP cifradas), gestionar claves RSA para no escribir claves al conectar a los dispositivos y pasar los datos de cualquier otra aplicación por un canal seguro tunelizado mediante SSH” (Wikipedia).
Funcionamiento
El cliente inicia la conexión hacia un puerto predeterminado del servidor, en este caso el puerto reservado número 22. Establecida la conexión TCP los extremos se envían, en texto plano, sus identificadores de versión, para ver si la comunicación es posible entre ellos. De ser compatibles entre sí cambian a un modo de transferencia binaria durante el cual se identifican los interlocutores y se negocian los protocolos de cifrado y firma que se usarán.
Esta negociación de protocolos se lleva a cabo de tal manera que la información intercambiada entre cliente y servidor sólo puede ser descifrada por el destinatario legítimo de la misma, y sólo por él. Para ello al principio de esta fase el servidor envía al cliente su clave pública, para que el cliente la use para cifrar todos los mensajes siguientes hacia el servidor, haciéndolos sólo legibles para el propio servidor. Entonces el cliente genera una clave de cifrado para la sesión en curso, que envía cifrada al servidor junto con el algoritmo seleccionado, y a partir de este momento todo el tráfico entre cliente y servidor viaja cifrado y seguro.
Llegados a este punto el cliente y el servidor se han puesto de acuerdo en un cierto algoritmo de cifrado, han acordado una clave para su sesión, y el servidor se ha identificado ante el cliente con su clave pública RSA (u opcionalmente DSA, en la versión 2 del protocolo). Pero aún falta que el cliente se identifique ante el servidor, que deberá decidir entonces si deja o no acceder al cliente remoto. La identificación del cliente podrá ser mediante pareja de usuario y contraseña, rhost, rhost más identificación de máquina mediante clave RSA o simplemente mediante claves RSA o DSA.
De todos los mecanismos sólo nos interesan el primero y el último. En el primero, el servidor nos dará acceso siempre y cuando la pareja de usuario y contraseña introducida por el cliente sean los de un usuario válido en el sistema operativo del servidor, salvo restricciones adicionales. En la identificación por claves el cliente dispone, al igual que el servidor, de su propia pareja de claves, que envía al servidor durante la identificación. Si el servidor confía en el usuario cuya clave ha recibido, entonces le dará permiso de acceso.
A grandes rasgos el mecanismo de conexión y de identificación del protocolo SSH es sencillo, aunque conviene destacar un par de aspectos relevantes de cara al uso y configuración de los programas relacionados:
- Las conexiones las inicia siempre el cliente hacia el puerto TCP número 22 del servidor.
- Las versiones de los protocolos soportados por cliente y servidor deben coincidir, o la conexión no se llevará a cabo.
- El servidor siempre necesita disponer de una pareja de claves, puesto que usa la clave pública para establecer la conexión segura con el cliente. El tipo de clave tiene que estar soportado en el cliente.
- El cliente y el servidor deben tener algún algoritmo de cifrado en común, o la conexión no se establecerá.
- Dependiendo de los mecanismos de identificación soportados por ambas partes, o exigidos por el servidor, la identificación podrá o no fallar.
- Aún cuando haya un mecanismo de identificación soportado por ambas partes, el cliente deberá proporcionar credenciales válidas al servidor, bien sea una pareja de usuario y contraseña, bien una clave pública.
Al margen de todo lo anterior, el servidor del protocolo SSH, sshd podrá implementar restricciones adicionales de acceso, así como el propio sistema operativo donde ejecuta. Por ejemplo, no es infrecuente que sshd esté compilado con soporte de TCP-wrappers, que esté configurado para aceptar o rechazar el acceso a determinados usuarios o máquinas cliente, o simplemente que algún firewall intermedio no permita establecer la conexión.
Instalación y configuración inicial
1.-Abrir una terminal como root y escribir:
# Apt-get install openssh-server
2.-Cuando se termina de instalar viene con una configuración por default que debemos cambiar para tener una mejor seguridad para esto nos vamos al archivo /etc/ssh/sshd_config
# Vim /etc/ssh/sshd_config
El archivo es algo extenso solo se mencionaran las secciones que son de gran importancia:
El servicio SSH por default trabaja sobre el puerto 22 pero se puede cambiar:
Port 22 ## PUERTO POR DEFAULT
El parámetro ListenAddress especifica las direcciones de las interfaces de donde se van a recibir peticiones OJO con esta sección si vamos a accesar desde una red externa como la casa entonces dejarlo como esta sino pues hay que especificar la red:
ListenAddress 0.0.0.0 ## IP por Default para acceder desde cualquier red
Esta es la sección critica a mi manera de ver porque indicamos si el usuario ROOT puede acceder vía ssh yo en lo personal lo deshabilito y entro con un usuario del sistema diferente a root
PermitRootLogin no
También podemos especificar si se va a ejecutar aplicaciones graficas mediante SSH por ejemplo podemos usar VLC a través de SSH por si no son muy dados a usar comandos yo lo dejo como esta:
X11Forwarding no
Otra opción es permitir el acceso a ciertos usuarios de la siguiente manera:
AllowUsers tusuario, miotrousuario, uncolado
En fin son muchas las opciones que trae el archivo seria bueno que le echaran un vistazo y modifiquen lo que mejor crean ustedes que es para su servidor pero siempre pensando en la seguridad y los riesgos que conlleva hacer una mala configuración.
Por último reiniciamos el servicio:
# /etc/init.d/ssh restart
NOTA: Si están detrás de un firewall tienen que abrir el puerto que han especificado pero si están en DMZ pues les recomiendo que pongan reglas IPTABLE por seguridad.
Ahora a hacer un test desde un cliente usando el terminal:
# Ssh usuario@midominio
Cuando se logueen verán lo siguiente:
También se pueden conectar desde un Windows utilizando la herramienta Putty
Mas info sobre configuración: Aquí
Fuente: Aquí
Descargar el Putty: Aqui