Proteja su Raspberry Pi: seguridad del protocolo SSH

Jinku Hu 14 abril 2022
Proteja su Raspberry Pi: seguridad del protocolo SSH

Este artículo presentará varios métodos para proteger su conexión remota SSH a Raspberry Pi de fallas de seguridad comunes.

Reforzar la configuración de SSH para asegurar el acceso remoto en Raspberry Pi

El SSH es un método común para acceder a hosts remotos para la administración del sistema u otras tareas.

A menudo se utiliza para acceder a dispositivos Raspberry Pi en la red local de forma remota. Por lo tanto, es esencial proteger el método de autenticación SSH y algunos de sus parámetros de configuración para garantizar que el atacante no acceda a su dispositivo.

Si acaba de escuchar sobre el protocolo de acceso remoto SSH, le sugerimos que primero revise nuestro artículo de introducción sobre este tema y luego continúe con las siguientes instrucciones.

La conexión SSH utiliza un esquema de autenticación de nombre de usuario/contraseña de forma predeterminada, que los atacantes pueden usar por fuerza bruta. Por lo tanto, se recomienda que cambie a la autenticación de clave pública e incluso que sea obligatoria para todas las sesiones.

Al principio, debe generar un par de claves públicas si no tiene una para la máquina host que accederá a la Raspberry Pi mediante SSH. Esto último se puede hacer utilizando la utilidad de línea de comandos ssh-keygen, que se incluye en la mayoría de los sistemas Linux/BSD como parte del kit de herramientas OpenSSH.

El siguiente comando genera el par de claves ed25519, y por el momento se considera uno de los algoritmos seguros:

ssh-keygen -o -a 256 -t ed25519 -C "$(hostname)-$(date +'%d-%m-%Y')"

El comando anterior le pedirá que especifique un nombre de archivo de clave, pero puede presionar Intro para usar el nombre predeterminado si está generando claves públicas por primera vez.

Le pedirá que ingrese una frase de contraseña, lo cual es muy recomendable si desea dificultar el trabajo del atacante. La frase de contraseña especificada se utilizará para verificar su identidad en cada nueva sesión de acceso remoto.

Tenga en cuenta que esta frase de contraseña no se guarda en un archivo automáticamente. Por lo tanto, debe recordarlo si necesita usar el par de claves públicas generado en el futuro.

De forma predeterminada, dos archivos clave generados se encuentran en el directorio ~/.ssh/, denominados id_ed25519 e id_ed25519.pub. No debe compartir el contenido de id_ed25519 con nadie, pero normalmente copiará el contenido de id_ed25519.pub a cualquier máquina (por ejemplo, Raspberry Pi) donde necesite establecer una conexión SSH.

A continuación, puede iniciar sesión en una consola Raspberry Pi y configurar los parámetros del servidor SSH. Tenga en cuenta que las siguientes instrucciones asumen que ha habilitado previamente el servidor SSH en Pi.

Primero, necesitamos copiar el contenido de id_ed25519.pub. al archivo /home/pi/.ssh/authorized_keys en Raspberry Pi. Es posible que este último archivo no exista en el Pi, por lo que es posible que deba crearlo manualmente.

Alternativamente, puede copiar el archivo usando el comando scp en la máquina host desde donde tiene acceso SSH al Pi.

Tenga en cuenta que debe modificar la dirección IP de Pi en el siguiente comando y cambiar el nombre del archivo de origen si especificó un nombre de archivo de clave personalizado en el símbolo del sistema ssh-keygen.

scp ~/.ssh/id_ed25519.pub pi@192.168.0.12:/home/pi/.ssh/authorized_keys

Una vez copiado con éxito, puede pasar a editar el archivo /etc/ssh/sshd_config en el sistema operativo Raspberry Pi. Este paso requerirá privilegios sudo para cada comando.

Abra el archivo sshd_config usando cualquier editor de texto (con sudo) con el que se sienta cómodo y descomente/inserte las siguientes líneas como se muestra y guarde los cambios:

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

PubkeyAuthentication yes
AuthorizedKeysFile    .ssh/authorized_keys .ssh/authorized_keys2

PasswordAuthentication no
ChallengeResponseAuthentication no

Después de la modificación del archivo de configuración, puede reiniciar el servicio sshd con el siguiente comando para que los cambios surtan efecto:

sudo systemctl restart sshd.service

Ahora puede volver a conectarse al Pi usando SSH, y debería iniciar sesión automáticamente en el sistema. Sin embargo, aún se le solicitará una frase de contraseña de clave pública si la especificó durante el comando ssh-keygen.

Cambiar el puerto predeterminado para el servidor SSH en el sistema operativo Raspberry Pi

Otra medida de seguridad útil es cambiar el puerto de servicio predeterminado 22 para el SSH. Puede modificar el puerto predeterminado en el archivo /etc/ssh/sshd_config que editamos en los pasos anteriores.

Esta vez, descomentaremos y cambiaremos la siguiente línea:

Port 60001

Puede elegir el número de puerto de los puertos de servicio privado en el rango - 49152-65535. Es poco probable que entre en conflicto con otros servicios que se ejecutan en el sistema.

Tenga en cuenta que las líneas anteriores generalmente ya están incluidas en el archivo sshd_config, pero se comentan con el carácter # como prefijo. Puede descomentar cualquiera de ellos eliminando este prefijo.

Además, no olvide guardar los cambios en el archivo y reiniciar el servicio SSH con el comando systemctl restart como se muestra en los pasos anteriores. Además, deberá agregar el número de puerto a su comando ssh para acceder a Raspberry Pi desde otros hosts de la siguiente manera:

ssh pi@192.168.0.12 -p 600001
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artículo relacionado - Raspberry Pi