Conectarse a un servidor usando SSH (Secure Shell) es una tarea fundamental para administradores de

Conectarse a un servidor usando SSH (Secure Shell) es una tarea fundamental para administradores de sistemas y desarrolladores. Si bien SSH proporciona un canal cifrado, es esencial configurarlo de forma segura para proteger su servidor del acceso no autorizado. Esta guía cubre las prácticas clave p

Beginner

Conectarse a un servidor usando SSH (Secure Shell) es una tarea fundamental para administradores de sistemas y desarrolladores. Si bien SSH proporciona un canal cifrado, es esencial configurarlo de forma segura para proteger su servidor del acceso no autorizado. Esta guía cubre las prácticas clave para conexiones SSH seguras.

1. Usar Autenticación Basada en Claves SSH

Las claves SSH son significativamente más seguras que las contraseñas. Implican un par de claves criptográficas: una clave privada (mantenida en secreto en su máquina local) y una clave pública (colocada en el servidor).

  • Generar Claves: En su máquina local, use ssh-keygen para crear un par de claves. bash ssh-keygen -t rsa -b 4096 Se le pedirá que ingrese una frase de contraseña para su clave privada. Use una fuerte.
  • Copiar Clave Pública al Servidor: Use ssh-copy-id para transferir fácilmente su clave pública al servidor. bash ssh-copy-id username@your_server_ip Este comando agrega su clave pública al archivo ~/.ssh/authorized_keys en el servidor.

2. Deshabilitar Autenticación por Contraseña

Una vez que la autenticación por clave SSH funcione, deshabilite los inicios de sesión con contraseña para evitar ataques de fuerza bruta.

  • Editar Configuración SSH: Abra el archivo de configuración del demonio SSH en el servidor. bash sudo nano /etc/ssh/sshd_config
  • Modificar Configuraciones: Busque y cambie las siguientes líneas: PasswordAuthentication no # Si está utilizando el inicio de sesión de root, asegúrese de que también esté deshabilitado: # PermitRootLogin no
  • Reiniciar Servicio SSH: Aplique los cambios reiniciando el servicio SSH. bash sudo systemctl restart sshd

3. Cambiar el Puerto SSH Predeterminado

El puerto SSH predeterminado (22) es un objetivo común para escaneos automatizados. Cambiarlo puede reducir el tráfico no deseado.

  • Editar Configuración SSH: En /etc/ssh/sshd_config, busque la línea Port 22 y cambie 22 por un número de puerto diferente y no utilizado (por ejemplo, 2222). Port 2222
  • Actualizar Firewall: Asegúrese de que su firewall permita el tráfico en el nuevo puerto. bash sudo ufw allow 2222/tcp sudo ufw delete allow ssh # Eliminar la regla antigua para el puerto 22
  • Reiniciar Servicio SSH: bash sudo systemctl restart sshd Al conectarse, deberá especificar el nuevo puerto: ssh -p 2222 username@your_server_ip.

4. Limitar el Acceso de Usuarios

Restrinja el acceso SSH solo a los usuarios necesarios.

  • Deshabilitar Inicio de Sesión de Root: Establezca PermitRootLogin no en /etc/ssh/sshd_config. Siempre inicie sesión como un usuario normal y use sudo para tareas administrativas.
  • Permitir Usuarios/Grupos Específicos: Use las directivas AllowUsers o AllowGroups en sshd_config para poner en lista blanca cuentas específicas. AllowUsers your_user another_user

5. Usar un Firewall

Configure el firewall de su servidor (por ejemplo, ufw) para permitir conexiones SSH solo desde direcciones IP o redes confiables.

  • Ejemplo con UFW: bash sudo ufw allow from trusted_ip_address to any port 2222 proto tcp # O para permitir desde una subred específica # sudo ufw allow from 192.168.1.0/24 to any port 2222 proto tcp Recuerde también permitir otros puertos necesarios para sus aplicaciones.

6. Implementar Fail2Ban

Fail2Ban escanea los archivos de registro en busca de actividad maliciosa (como intentos de inicio de sesión fallidos repetidos) y actualiza automáticamente las reglas del firewall para bloquear las direcciones IP infractoras.

  • Instalar Fail2Ban: bash sudo apt install fail2ban
  • Configurar: Generalmente funciona directamente para SSH, pero puede personalizar su configuración en /etc/fail2ban/jail.local.

7. Mantener el Software Actualizado

Actualice regularmente el sistema operativo y el software SSH de su servidor para parchear cualquier vulnerabilidad conocida.

sudo apt update && sudo apt upgrade -y

Al implementar estas prácticas, mejora significativamente la seguridad de sus conexiones SSH y protege su servidor del acceso no autorizado.