Linux Boards

Fortalecimiento de la Seguridad SSH en Computadoras Monoplaca que ejecutan distribuciones de Linux: Una Guía Paso a Paso

7 min lectura
Fortalecimiento de la Seguridad SSH en Computadoras Monoplaca que ejecutan distribuciones de Linux: Una Guía Paso a Paso
Fortalecimiento de la Seguridad SSH en Computadoras Monoplaca que ejecutan distribuciones de Linux: Una Guía Paso a Paso

Las computadoras de placa única (SBCs) alimentadas por distribuciones de Linux se utilizan cada vez más para diversas aplicaciones. Sin embargo, asegurar la seguridad sólida de estos dispositivos, especialmente en lo que respecta al acceso SSH (Secure Shell), es imperativo para evitar posibles accesos no autorizados y exploits. En esta guía detallada, profundizaremos en medidas integrales para asegurar SSH en SBCs que ejecutan distros de Linux, proporcionando comandos explícitos, fragmentos de código y ejemplos de configuración para cada paso.

Comprendiendo SSH

SSH es un protocolo de red criptográfico que facilita el acceso remoto seguro a computadoras o servidores sobre redes no seguras. Ofrece mecanismos de encriptación y autenticación para salvaguardar la transmisión de datos y las credenciales de usuario contra la interceptación y el acceso no autorizado.

Diagrama del protocolo SSH
Diagrama del protocolo SSH

Para los consumidores que utilizan computadoras de placa única (SBCs) en casa, ya sea para proyectos personales, centros multimedia o automatización del hogar, asegurar la configuración SSH es esencial por varias razones:

  1. Proteger datos personales: Muchos usuarios almacenan datos personales, como documentos, fotos e información sensible, en sus SBCs. Asegurar SSH ayuda a prevenir el acceso no autorizado a estos datos, protegiendo la privacidad y confidencialidad de los usuarios.

  2. Prevenir accesos no autorizados: Las redes domésticas no están exentas de amenazas de seguridad. Sin medidas de seguridad SSH adecuadas, actores malintencionados podrían obtener acceso no autorizado a SBCs, comprometiendo potencialmente la seguridad de la red doméstica, accediendo a archivos personales o incluso llevando a cabo actividades maliciosas, como lanzar ataques a otros dispositivos en la red.

  3. Salvaguardar dispositivos IoT: Los SBCs se utilizan comúnmente en proyectos de automatización del hogar DIY, controlando dispositivos inteligentes como luces, termostatos y cámaras de seguridad. Al asegurar el acceso SSH, los usuarios pueden evitar el control o manipulación no autorizados de estos dispositivos IoT, asegurando la integridad y seguridad de sus sistemas de automatización del hogar.

  4. Mitigar riesgos de botnets IoT: En los últimos años, los dispositivos IoT comprometidos han sido explotados para formar botnets utilizadas para lanzar ciberataques a gran escala. Al asegurar el acceso SSH en SBCs, los usuarios pueden reducir el riesgo de que sus dispositivos sean secuestrados y utilizados como parte de ejércitos de botnets, contribuyendo a la seguridad general de Internet.

  5. Prevenir la instalación de software no autorizado: Con el acceso SSH, los usuarios pueden instalar, configurar y gestionar software en sus SBCs de forma remota. Sin embargo, sin medidas de seguridad adecuadas, personas no autorizadas podrían aprovechar este acceso para instalar software malicioso o realizar cambios no autorizados en el sistema, comprometiendo potencialmente la estabilidad y seguridad del dispositivo.

  6. Garantizar la seguridad familiar: En hogares con múltiples usuarios, asegurar el acceso SSH ayuda a garantizar que solo las personas autorizadas puedan acceder y gestionar el SBC. Esto evita la manipulación accidental o intencional de configuraciones críticas del sistema, garantizando la seguridad y estabilidad del dispositivo para todos los miembros de la familia.

Fortalecimiento de la seguridad SSH

Hardening Access to Your Server | Linux Security Tutorial

1. Actualizar el sistema y el software SSH

Antes de fortalecer las medidas de seguridad, asegúrese de que el sistema operativo de su SBC y el software SSH estén actualizados para parchar vulnerabilidades y mejorar la seguridad.

sudo apt update
sudo apt upgrade

2. Deshabilitar el inicio de sesión como root

Evite el inicio de sesión directo como root a través de SSH para mitigar posibles ataques de fuerza bruta. Cree un usuario separado con privilegios de sudo para tareas administrativas.

Edite el archivo de configuración SSH.

sudo nano /etc/ssh/sshd_config

Establezca PermitRootLogin en no.

PermitRootLogin no

Reinicie el servicio SSH.

sudo systemctl restart sshd.service

3. Implementar políticas de contraseña robustas

Haga cumplir políticas de contraseña robustas para los usuarios de SSH, incluyendo longitud mínima, complejidad y vencimiento. Utilice passwd para gestionar las contraseñas de los usuarios.

sudo passwd <usuario>

4. Habilitar la autenticación de dos factores (2FA)

Mejore la seguridad con 2FA, agregando una capa adicional de autenticación. Utilice paquetes como Google Authenticator.

sudo apt install libpam-google-authenticator

Siga los pasos de configuración.

google-authenticator

Edite /etc/pam.d/sshd para habilitar 2FA.

auth required pam_google_authenticator.so

5. Configurar la autenticación SSH basada en llaves

La autenticación basada en llaves ofrece una seguridad superior. Genere pares de llaves SSH en la máquina cliente y transfiera la llave pública al SBC.

Genere el par de llaves SSH.

ssh-keygen -t ed25519 -C 'Description' -f ~/.ssh/id_ed25519

Transfiera la llave pública al SBC.

ssh-copy-id -i ~/.ssh/id_ed25519.pub <usuario>@<direccion-ip-placa>

Deshabilite la autenticación por contraseña en la configuración SSH.

sudo nano /etc/ssh/sshd_config

Establezca PasswordAuthentication en no.

PasswordAuthentication no

Reinicie el servicio SSH.

sudo systemctl restart sshd.service

6. Restringir el acceso SSH

Limite el acceso SSH a direcciones IP específicas o redes utilizando reglas de firewall con ufw.

sudo ufw allow from <trusted-ip-address> to any port 22
sudo ufw enable

7. Cambiar el puerto SSH predeterminado

Cambie el puerto SSH predeterminado a un puerto no estándar para disuadir el escaneo automatizado.

Edite el archivo de configuración SSH.

sudo nano /etc/ssh/sshd_config

Cambie Port al puerto deseado (por ejemplo, 2222).

Port 2222

Reinicie el servicio SSH.

sudo systemctl restart sshd.service

8. Habilitar el registro de intentos de acceso SSH

Habilite el registro SSH para monitorear y auditar intentos de acceso.

Edite el archivo de configuración SSH.

sudo nano /etc/ssh/sshd_config

Descomente o agregue las siguientes líneas.

LogLevel VERBOSE
SyslogFacility AUTH

Reinicie el servicio SSH.

sudo systemctl restart sshd.service

9. Configurar el tiempo de espera de SSH

Edite el archivo de configuración SSH.

sudo nano /etc/ssh/sshd_config

Agregue o ajuste las siguientes líneas.

ClientAliveInterval 300
ClientAliveCountMax 2

Reinicie el servicio SSH.

sudo systemctl restart sshd.service

10. Deshabilitar funciones no utilizadas

Deshabilite las funciones que no son necesarias para su caso de uso específico para reducir la superficie de ataque. Las funciones comúnmente deshabilitadas incluyen el reenvío de X11, el reenvío de TCP y el reenvío de agente.

Edite el archivo de configuración SSH.

sudo nano /etc/ssh/sshd_config

Deshabilite el reenvío de X11.

X11Forwarding no

Deshabilite el reenvío de TCP.

AllowTcpForwarding no

Deshabilite el reenvío de agente.

AllowAgentForwarding no

Reinicie el servicio SSH.

sudo systemctl restart sshd.service

11. Limitar los permisos de usuario

Restrinja el acceso SSH a usuarios o grupos específicos para minimizar el riesgo de acceso no autorizado. Utilice las directivas AllowUsers o AllowGroups para especificar usuarios o grupos permitidos.

Edite el archivo de configuración SSH.

sudo nano /etc/ssh/sshd_config

Limite el acceso SSH a usuarios específicos.

AllowUsers username1 username2

O limite el acceso SSH a grupos específicos.

AllowGroups group1 group2

Reinicie el servicio SSH.

sudo systemctl restart sshd.service

12. Optimizar la configuración criptográfica

Configure SSH para utilizar algoritmos criptográficos y mecanismos de intercambio de claves fuertes para mejorar la seguridad.

Edite el archivo de configuración SSH.

sudo nano /etc/ssh/sshd_config

Reinicie el servicio SSH.

sudo systemctl restart sshd.service

Deshabilite los algoritmos débiles (por ejemplo, SHA1, MD5).

# Deshabilitar algoritmos MAC débiles
MACs [email protected],[email protected]
# Deshabilitar algoritmos de intercambio de claves débiles
KexAlgorithms diffie-hellman-group-exchange-sha256
# Habilitar cifrados fuertes
Ciphers [email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr

13. Implementar limitación de velocidad para intentos de autenticación

Mitigue los ataques de fuerza bruta configurando SSH para limitar el número de intentos de autenticación por conexión o por unidad de tiempo.

Instale y configure Fail2ban para monitorear los registros de autenticación SSH y bloquear dinámicamente las direcciones IP que muestran comportamiento sospechoso.

sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

Agregue o modifique la sección de SSH para habilitar la limitación de velocidad de SSH.

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5

Al reforzar la seguridad de la configuración SSH en sus computadoras de placa única, deshabilitando funciones no utilizadas, limitando los permisos de usuario, optimizando la configuración criptográfica e implementando limitación de velocidad para intentos de autenticación, puede fortalecer la seguridad del acceso SSH y ayudar a proteger sus SBCs contra posibles amenazas de seguridad y intentos de acceso no autorizado. Revise y actualice regularmente su configuración SSH para adaptarse a las mejores prácticas de seguridad emergentes y mitigar eficazmente los riesgos emergentes.

Comentarios