Le pedimoss a Gemini, la inteligencia artificial de Google que nos explique cómo configurar reglas de acceso remoto por SSH de forma segura
Explicanos detalladamente cómo configurar reglas de acceso remoto por SSH de forma seguraConfigurar SSH (Secure Shell) de forma segura es como poner una cerradura de alta seguridad en la puerta principal de tu servidor. Si lo dejas por defecto, estás permitiendo que robots de todo el mundo intenten "patear la puerta" 24/7.
Aquí tienes una guía detallada para blindar el acceso remoto, desde la configuración del servicio hasta las reglas de red.
1. Fortalecimiento del archivo sshd_config
Casi toda la magia ocurre en /etc/ssh/sshd_config. Antes de editarlo, haz una copia de seguridad. Los cambios principales que debes aplicar son:
Cambiar el puerto por defecto ( Puerto 22 ): No es "seguridad real", pero elimina el 99% del ruido de los bots automatizados que solo escanean el puerto 22.
Port 2222 (o cualquier puerto entre 1024 y 65535).
Deshabilitar el acceso de Root : Nunca permitas que root entre directamente. Entra con un usuario normal y usa sudo.
PermitRootLogin no
Limitar los intentos de autenticación:
MaxAuthTries 3
Deshabilitar contraseñas (Uso de Llaves SSH ): Este es el paso más importante. Las contraseñas son vulnerables a fuerza bruta; las llaves criptográficas no.
PasswordAuthentication no
Restringir usuarios específicos: Solo permite que ciertos usuarios puedan loguearse.
AllowUsers tu_usuario otro_usuario
2. Autenticación mediante Llaves Públicas (Public Key Auth)
En lugar de una contraseña, usas un par de llaves: una privada (que se queda en tu computadora) y una pública (que se sube al servidor).
Pasos para configurar:
Generar la llave en tu PC : Usa el algoritmo Ed25519 (es más rápido y seguro que RSA).
ssh-keygen -t ed25519 -C "tu_email@ejemplo.com"
Enviar la llave al servidor:
ssh-copy-id -p [puerto] usuario@ip_del_servidor
Probar la conexión: Asegúrate de que entras sin contraseña antes de deshabilitar PasswordAuthentication.
3. Reglas de Acceso Remoto (Firewalls)
Incluso con llaves SSH, no deberías permitir que cualquier IP del mundo intente conectarse. Debes filtrar el acceso a nivel de red.
En Linux (usando UFW o Firewalld):
Si tienes una IP fija en tu casa u oficina, limita el SSH solo a esa IP:
UFW : sudo ufw allow from 203.0.113.45 to any port 2222 proto tcp
Firewalld : firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.45" port protocol="tcp" port="2222" accept'
En Routers/Firewalls Cisco (ACLs):
Si estás protegiendo la terminal virtual (VTY) de un router:
Bash
ip access-list extended SSH_ONLY
permit tcp host 203.0.113.45 any eq 2222
deny tcp any any eq 2222
!
line vty 0 4
access-class SSH_ONLY in
transport input ssh
4. Herramientas de Protección Activa
Si por alguna razón debes dejar el SSH abierto al mundo (IP dinámica), necesitas herramientas que reaccionen a ataques.
Fail2Ban: Es indispensable. Analiza los logs y, si ve 3 o 5 intentos fallidos desde una IP, crea una regla de firewall temporal para banear a ese atacante.
2FA (Autenticación de Dos Factores): Puedes usar Google Authenticator con el módulo PAM (libpam-google-authenticator). Esto requiere que, además de tu llave SSH, ingreses un código de 6 dígitos de tu celular.
¿Te gustaría que te ayude a redactar un script de configuración automática para asegurar el SSH de un servidor nuevo o prefieres profundizar en cómo configurar el Segundo Factor de Autenticación (2FA)?