Todos los posts
Security SSH — Parte 3
EN ES

Configurando el servidor SSH

Guía práctica para endurecer sshd_config: deshabilitar root, forzar autenticación por clave y ajustar las opciones clave del servidor SSH.

(Actualizado June 6, 2019) 4 min read por b4rt

Serie: SSH

  1. 1. ¿Qué es SSH?
  2. 2. SSH: Llaves públicas
  3. 3. Configurando el servidor SSH

Ya vimos qué es SSH y cómo funcionan los pares de claves. Ahora vamos a configurar el servidor en sí. Una instalación SSH por defecto es funcional pero no está endurecida — acepta logins por contraseña, permite acceso como root y escucha en el conocido puerto 22. Vamos a arreglarlo.

El archivo que editaremos: /etc/ssh/sshd_config

Después de hacer cambios, siempre reinicia el daemon SSH:

sudo systemctl restart sshd

Port

Port 2222

Cambiar el puerto por defecto del 22 a uno poco conocido no añade seguridad real, pero elimina el ruido de los bots automatizados que escanean constantemente el puerto 22. Tus logs serán mucho más limpios.

AddressFamily

AddressFamily inet

inet = solo IPv4. Usa inet6 para solo IPv6, o any para ambos. Si no usas IPv6, bloquéalo a IPv4.

PermitRootLogin

PermitRootLogin no

Crítico. Nunca permitas el login directo como root por SSH. Conéctate como usuario normal y escala privilegios con sudo cuando sea necesario. Esto limita el impacto de cualquier compromiso.

PubkeyAuthentication

PubkeyAuthentication yes

Habilita la autenticación por clave. Esto debe estar activado si seguiste la parte 2 de esta serie.

AuthorizedKeysFile

AuthorizedKeysFile .ssh/authorized_keys

Ruta donde el servidor busca las claves públicas autorizadas. El valor por defecto está bien — solo asegúrate de que el archivo existe y tiene los permisos correctos (chmod 600).

PasswordAuthentication

PasswordAuthentication no

Una vez que tus claves funcionan, deshabilita la autenticación por contraseña completamente. Este es el paso de hardening más importante — hace que los ataques de fuerza bruta sean completamente inútiles.

AllowUsers

AllowUsers b4rt deploy

Lista blanca de usuarios específicos que pueden conectarse por SSH. Cualquiera que no esté en esta lista es rechazado incluso con credenciales válidas.

AllowGroups

AllowGroups sshusers

Alternativa a AllowUsers — restringe el acceso a miembros de un grupo específico. Útil cuando tienes múltiples usuarios que gestionar.

PermitEmptyPasswords

PermitEmptyPasswords no

Nunca permitir que cuentas con contraseña vacía inicien sesión. Siempre debe ser no.

MaxAuthTries

MaxAuthTries 3

Máximo de intentos de autenticación por conexión. Después de 3 fallos se cierra la conexión. Reduce la efectividad de los ataques de fuerza bruta.

UsePAM

UsePAM no

Cuando usas autenticación por clave, PAM (Pluggable Authentication Modules) no es necesario. Deshabilitarlo simplifica el stack de autenticación.

X11Forwarding

X11Forwarding no

A menos que necesites redirigir aplicaciones GUI a través de SSH (raro en servidores), deshabilita esto. Es una superficie de ataque innecesaria.

UsePrivilegeSeparation

UsePrivilegeSeparation yes

Divide el daemon SSH en procesos privilegiados y no privilegiados. El proceso no privilegiado maneja el trabajo de cara a la red — si se ve comprometido, no tiene acceso root.

KexAlgorithms y Ciphers

Para una configuración moderna y endurecida, restringe a algoritmos fuertes únicamente:

KexAlgorithms curve25519-sha256,diffie-hellman-group14-sha256
Ciphers aes256-gcm@openssh.com,chacha20-poly1305@openssh.com
MACs hmac-sha2-256,hmac-sha2-512

Esto deshabilita algoritmos más antiguos y débiles que aún están habilitados por defecto en muchas distribuciones.

Ejemplo de sshd_config endurecido

Port 2222
AddressFamily inet
PermitRootLogin no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
PermitEmptyPasswords no
AllowUsers b4rt
MaxAuthTries 3
UsePAM no
X11Forwarding no
UsePrivilegeSeparation yes
KexAlgorithms curve25519-sha256,diffie-hellman-group14-sha256
Ciphers aes256-gcm@openssh.com,chacha20-poly1305@openssh.com

Prueba la configuración antes de reiniciar:

sudo sshd -t

Si no hay errores, aplícala:

sudo systemctl restart sshd

Eso es todo para la serie SSH. Ya entiendes qué es SSH, cómo funciona la autenticación por clave y cómo asegurar el servidor en sí.

Etiquetas: #ssh #linux #seguridad #servidores #hardening #sshd

Comentarios

Stay in the loop

New posts about Linux, debugging, and systems programming. No noise, no spam — just signal.