Configuración SSH

Esta página forma parte de la guía: Configuración básica de un servidor dedicado, VPS o cloud basado en Linux.

El primer paso que debemos dar es asegurar el acceso por SSH, para ello, eliminaremos la pregunta de clave y echaremos mano de las claves pública y privada. A partir de ahora, deberemos generar una nueva clave para cada ordenador desde el que queramos conectar. Esto nos proporcionará comodidad a nosotros, y seguridad, entre otras cosas porque ese fichero es mucho más grande que cualquier clave normal que podamos tener en ese servidor.

Generar claves pública y privada

Todo esto se hará en nuestro ordenador local.

Aunque la versión 2 de SSH permite la generación de varios tipos de clave, RSA, DSA y ECDSA, no existe ninguna forma fiable de comparar estos tres algoritmos y determinar cuál es mejor, hay un gran debate sobre el tema. Tal vez entre DSA y ECDSA podamos quedarnos con el segundo, puesto que claves más pequeñas nos brindan la misma seguridad que DSA, y también es algo más rápido; pero a la hora de elegir la longitud de clave, entre DSA y RSA, para SSH DSA está limitado a 1024bits mientras que RSA no.

Aunque una clave de 2048bit se considera segura, generaremos una clave RSA de 4096bit:

$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in wich to save the key (/home/cloud/.ssh/id_rsa):
Enter passphase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/cloud/.ssh/id_rsa.
Your public key has been saved in /home/cloud/.ssh/id_rsa.pub
The fingerprint is ...

En este paso, nos pregunta una clave, por si queremos algo más de seguridad, en este caso, lo podemos dejar sin clave, ya que para poder acceder necesitamos uno de los archivos generados.

Cuando terminamos encontramos en nuestro directorio $HOME/.ssh/ dos archivos nuevos id_rsa e id_rsa.pub (en el proceso de creación nos pregunta el nombre que le queremos dar al archivo).

Copiar la identificación al servidor

Ahora debemos transferir el archivo al servidor, para ello, si tenemos acceso por ssh con contraseña, por ahora, podemos hacer lo siguiente:

$ ssh-copy-id usuario@servidor

Si nuestro archivo no se llama id_rsa.pub , debemos hacer:

$ ssh-copy-id -i archivo_de_identidad usuario@servidor

Si por el contrario no disponemos ahora mismo de acceso (lo que podrá ocurrir en el futuro), o no disponemos de ssh-copy-id, debemos adjuntar nuestra clave pública al archivo $HOME/.ssh/authorized_keys ; es decir, imaginemos que copiamos el archivo id_rsa.pub en /home/cloud/tmp/, entonces:

cloud $ cat ~/tmp/id_rsa.pub >> ~/.ssh/authorized_keys

De este modo, todas las claves autorizadas para este usuario se adjuntarán en el mismo archivo.

Más máquinas autorizadas

Podemos repetir libremente este proceso si deseamos poder entrar en este servidor desde otra máquina, sólo tenemos que tener cuidado de no borrar el archivo authorized_keys, por lo que es recomendable hacer un backup periódico del archivo.

Otras configuraciones para el servidor SSH

Estos cambios, se harán en el archivo /etc/ssh/sshd_config de nuestro servidor remoto.

Desactivar identificación con password

Puede que estemos permitiendo las dos autentificaciones, por lo que debemos desactivar la autentificación con contraseña, por lo tanto debemos modificar la línea que dice:

PasswordAuthentication yes

y poner en su lugar:

PasswordAuthentication no

Puede que la primera línea no la encontremos, o esté comentada (con # delante), entonces debemos añadir la línea que vemos en segundo lugar.

Asegurarnos de que no podemos entrar como root:

Para ello, la línea que dice:

PermitRootLogin yes

debe decir:

PermitRootLogin no

Definir los usuarios permitidos por el sistema:

Puede que no nos interese que todos los usuarios de nuestro sistema puedan entrar por ssh, para ello, podemos definir dos argumentos más en el fichero:

AllowUsers pedro andres jacinto

o

DenyUsers alex guest

El primero permitiría usuarios como pedro, andres y jacinto entrar al sistema, y sólo estos, aunque puede que para describir el acceso a nuestro sistema sea más fácil decir qué usuarios no pueden entrar, para ello, podemos utilizar el segundo caso.

Pantalla de entrada al login

Podemos, además, proporcionar una pantalla de entrada a los usuarios que se conecten, podemos hacerlo de dos formas, poniendo un texto estático, o uno dinámico:

Texto estático

Para ello, editamos, en el servidor /etc/ssh/sshd_conf y añadimos, si no está, la línea:

Banner /etc/issue.net

A continuación, editamos el archivo /etc/issue.net añadiendo el texto que queramos mostrar.

Texto dinámico

Para añadir un texto dinámico podemos aprovechar el mensaje del día (Message Of The Day) o MOTD, en muchas distribuciones modernas, encontraremos en /etc la carpeta update-motd.d dentro de la cual podemos añadir bash scripts que nos permitirán añadir un mensaje personalizado al usuario que acaba de hacer login, tanto local como remoto.

Solución de algunos problemas comunes

Puede que no se puedan leer bien las claves a la hora de acceder a nuestro sistema, para ello debemos asegurarnos que, tanto en local como en remoto, el permiso del directorio $HOME/.ssh es 0700, es decir, lectura, escritura y ejecución sólo para el dueño. Para ello:

$ chmod 0700 ~/.ssh

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *