Seguridad en SSH para la Raspberry Pi

Sección Unicamente para Tutoriales y Guías
Avatar de Usuario
egrueda
Pi God
Pi God
Mensajes: 3426
Registrado: 10 Feb 2017, 19:31
Agradecido: 7 veces
Agradecimiento recibido: 269 veces

Existen varios puntos de la configuración de SSH que podemos configurar para tratar de mejorar la seguridad y evitar accesos no deseados si nuestro SSH está accesible desde internet.

La configuración de SSH se encuentra en el archivo /etc/ssh/sshd_config
Es muy recomendable hacer una copia de ese archivo antes de modificarlo
Cuando hacemos cambios en ese archvio, debemos reiniciar SSH para aplicar los cambios.
Para reiniciar SSH basa con ejecutar el comando:

Código: Seleccionar todo

sudo systemctl restart sshd
Vamos a ver qué opciones podemos cambiar o mejorar

1. Contraseñas
Por supuesto, las contraseñas por defecto deben ser cambiadas. Especialmente la del usuario "pi"
Para cambiarla, basta con acceder por ssh o consola y teclear el comando "passwd"

2. Cambiar el puerto de SSH
Esto no mejor la seguridad, simplemente disimula el puerto.
Hay miles de ataques automatizados buscando puertos SSH en el puerto 22.
Si cambiamos el puerto y ponemos, por ejemplo, el 1022, evitaremos gran parte de esos escaneos automáticos.
Para cambiar el puerto, editamos la configuración de SSH y cambiamos el parámetro Port por ejemplo:

Código: Seleccionar todo

Port=1022
3. Prohibir el acceso de root por SSH

Dentro de la configuración de SSH tenemos el parámetro PermitRootLogin
Podemos cambiar ese parámetro para que root no pueda acceder. De esa forma, accederemos como un usuario "normal" y podremos usar sudo para hacer tareas de root

Código: Seleccionar todo

PermitRootLogin no
4. Usar claves SSH y deshabilitar contraseñas

Si creamos un par de claves SSH en nuestro ordenador de trabajo, podemos copiar la clave pública a nuestra raspi, dejando la privada en nuestro ordenador, y de esta forma conectar sin contraseña, usando la clave.

Las claves se almacenan en el archivo ~/.ssh/authorized_keys del usuario al que queremos acceder.
Si no existe el archivo o el directorio, podemos crearlo:

Código: Seleccionar todo

cd ~
mkdir .ssh
touch .ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Una vez tenemos el archivo donde almacenar las claves, seguimos:

Paso 1: crear las claves, por ejemplo con el PuTTYgen
Paso 2: copiar el contenido de la clave pública
Paso 3: pegar la clave en el archivo /home/pi/.ssh/authorized_keys

¡ Listo! Ahora podemos decirle a nuestro cliente SSH que utilice esa clave privada en lugar de pedir la contraseña.
Por tanto, podemos cambiar el parámetro PasswordAuthentication para que SSH no acepte contraseñas:

Código: Seleccionar todo

PasswordAuthentication no
5. Usar fail2ban para bloquear IPs atacantes

El software Fail2Ban monitoriza los logs del sistema y detecta si una determinada IP está realizando muchas conexiones denegadas.
Essto podría significar que alguien intenta entrar forzando la contraseña, probando varias contraseñas por defecto o similar.
Fail2Ban permie bloquear esa IP durante un tiempo, así cesan los ataques desde esa IP

La instalación es sencilla:

Código: Seleccionar todo

sudo apt install fail2ban
Una vez instalado se habrá inciado y estará activado en cada arranque.
Por defecto, fail2ban está configurado para proteger ssh, así que no es necesario hacer nada más.
Igual que existe un jail de fail2ban para ssh, es posible definir otros jails para otros accesos, como apache o postfix.
Más info en el sitio oficial: https://www.fail2ban.org/wiki/index.php/Fail2Ban

Otras ideas

Por supuesto existen muchas formas de añadir capas de seguridad:
  • Cambiar los tipos de encriptación permitidos
  • Uar port-knocking
  • Acceder mediante VPN
  • Usar Google Authenticator
¡Ten cuidado, no vayas a bloquearte a tí mismo!

¿Y tú? ¿Qué otros sistemas utilizas?
Estos usuarios agradecieron al autor egrueda por el mensaje:
th0mas
Responder