Generador Configuración SSHD
Zero-Trust Infrastructure Security

Generador de Configuración de Seguridad para Servidor OpenSSH (sshd_config)

Genere plantillas seguras y reforzadas de sshd_config para Linux, imponiendo autenticación por clave pública, cifrados AEAD modernos, tiempos de espera estrictos y bloqueo de root.

CVE-2024-6387 RegreSSHion Protection Active
Plantillas:

Changing to a non-standard port stops 99% of automated port 22 credential bots.

DebianBanner (OS Fingerprinting)
Disabling stops OpenSSH from exposing specific Debian/Ubuntu package versions.
# ==============================================================================
# OpenSSH Server Hardened Configuration (sshd_config)
# Target File: /etc/ssh/sshd_config
# Standards: CIS Linux Benchmark / Mozilla Infosec / NIST SP 800-53
# Generated by ToolsAA: https://toolsaa.com/tools/sshd-config-generator
# ==============================================================================

# ------------------------------------------------------------------------------
# 1. Network & Address Binding
# ------------------------------------------------------------------------------
Port 2222
AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::

# ------------------------------------------------------------------------------
# 2. Host Key Infrastructure (Ed25519 & RSA)
# ------------------------------------------------------------------------------
HostKey /etc/ssh/ssh_host_ed25519_key
HostKey /etc/ssh/ssh_host_rsa_key

# ------------------------------------------------------------------------------
# 3. Logging & Auditing (VERBOSE records key fingerprints for auth tracing)
# ------------------------------------------------------------------------------
LogLevel VERBOSE
SyslogFacility AUTH

# ------------------------------------------------------------------------------
# 4. Authentication & Access Control
# ------------------------------------------------------------------------------
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
KbdInteractiveAuthentication no
ChallengeResponseAuthentication no
GSSAPIAuthentication no
KerberosAuthentication no
StrictModes yes
MaxAuthTries 3
MaxSessions 3
LoginGraceTime 30
AllowGroups ssh-users wheel

# ------------------------------------------------------------------------------
# 5. Cryptography Hardening (Ciphers, KEX, MACs & HostKeyAlgorithms)
# ------------------------------------------------------------------------------
KexAlgorithms [email protected],curve25519-sha256,[email protected],diffie-hellman-group16-sha512,diffie-hellman-group18-sha512
Ciphers [email protected],[email protected],[email protected]
MACs [email protected],[email protected],[email protected]
HostKeyAlgorithms ssh-ed25519,[email protected],rsa-sha2-512,rsa-sha2-256

# ------------------------------------------------------------------------------
# 6. Session Lifecycle & Security Defenses
# ------------------------------------------------------------------------------
ClientAliveInterval 300
ClientAliveCountMax 2
TCPKeepAlive no
X11Forwarding no
AllowTcpForwarding no
AllowAgentForwarding no
GatewayPorts no
PermitUserEnvironment no
Compression no
MaxStartups 10:30:60
UsePAM yes

# ------------------------------------------------------------------------------
# 7. Banners & Information Disclosure
# ------------------------------------------------------------------------------
PrintMotd no
PrintLastLog yes
Banner none
DebianBanner no

# ------------------------------------------------------------------------------
# 8. SFTP Subsystem
# ------------------------------------------------------------------------------
Subsystem sftp internal-sftp
Grado de seguridad
Score: 100/100(A+)
Política criptográfica
Post-Quantum & Curve25519
Protección ante vulnerabilidades
CVE-2024-6387 Mitigated

Estándares criptográficos modernos

Restringe OpenSSH a intercambio de claves poscuántico y Curve25519, cifrados AEAD ChaCha20-Poly1305 y AES-GCM, eliminando totalmente fallos heredados como CBC y 3DES.

Reducción de superficie de ataque Zero-Trust

Impone claves públicas estrictas, bloquea contraseñas de root, mitiga ataques de sincronización RegreSSHion (CVE-2024-6387) y cierra sesiones inactivas.

Archivos drop-in modulares y despliegue seguro

Genera archivos de configuración completos o fragmentos modulares para conf.d, acompañados de un script bash con verificación previa de sintaxis con sshd -t.

Referencia técnica y guía de arquitectura

Guía para Desarrolladores: Generador de Configuración de Seguridad para OpenSSH Server (sshd_config) — Guía de referencia

Genere plantillas seguras y reforzadas de sshd_config para Linux, imponiendo autenticación por clave pública, cifrados AEAD modernos, tiempos de espera estrictos y bloqueo de root.

Parámetros clave y controles

PermitRootLoginenum (no | prohibit-password | yes)

Controla si el superusuario root puede iniciar sesión directamente vía SSH. Establecerlo en 'no' obliga a los administradores a acceder mediante cuentas sin privilegios y escalar con sudo.

Por defecto: no
PasswordAuthenticationboolean (yes | no)

Determina si se acepta la autenticación mediante contraseña. Fijarlo en 'no' desactiva las contraseñas e impone estrictamente el uso de claves criptográficas asimétricas.

Por defecto: no
Ciphersstring list

Especifica los algoritmos de cifrado simétrico permitidos por orden de prioridad, forzando modos AEAD (chacha20-poly1305, aes256-gcm) y eliminando los modos vulnerables CBC.

KexAlgorithmsstring list

Define los algoritmos de intercambio de claves permitidos, priorizando la criptografía de curva elíptica (Curve25519) y rechazando grupos DH obsoletos de 1024 bits.

Por defecto: curve25519-sha256,[email protected],diffie-hellman-group16-sha512,diffie-hellman-group18-sha512
ClientAliveIntervalinteger (segundos)

Establece el intervalo de inactividad en segundos tras el cual el servidor envía una sonda keepalive a través del canal cifrado.

Por defecto: 300
ClientAliveCountMaxinteger

Indica el número máximo de paquetes keepalive no respondidos antes de que el servidor SSH termine la sesión inactiva o descolgada.

Por defecto: 2

Consejos profesionales y mejores prácticas

Ejecute 'sudo sshd -t' para comprobar

Ejecute 'sudo sshd -t' para comprobar si existen errores de sintaxis en /etc/ssh/sshd_config antes de reiniciar el servicio. Si el comando no devuelve salida, la sintaxis es totalmente válida.

Nunca cierre la sesión de su terminal

Nunca cierre la sesión de su terminal actual al aplicar cambios en sshd. Abra otra ventana de terminal e inicie una conexión de prueba ('ssh -i ~/.ssh/id_ed25519 usuario@host') para verificar el acceso antes de desconectarse.

Las directivas condicionales dentro de

Las directivas condicionales dentro de 'Match Group' o 'Match User' afectan a todas las líneas posteriores hasta el siguiente bloque Match o el final del archivo. Coloque todas las directivas globales antes de cualquier bloque Match.

En distribuciones recientes con socket

En distribuciones recientes con socket activation ('ssh.socket'), las modificaciones de puerto requieren ejecutar 'systemctl restart ssh.socket' para que surtan efecto.

Errores comunes y solución de problemas

Aparece 'Permission denied (publickey)' tras deshabilitar la autenticación por contraseña.

Verifique que el directorio ~/.ssh tenga permisos 700 ('chmod 700 ~/.ssh') y que authorized_keys tenga permisos 600 ('chmod 600 ~/.ssh/authorized_keys'). Si el directorio del usuario tiene permisos de escritura para grupo u otros, StrictModes de OpenSSH bloqueará el acceso.

sshd no inicia reportando 'Bad configuration option' o 'Unsupported algorithm'.

Ejecute 'sudo /usr/sbin/sshd -t' para identificar la directiva obsoleta o el algoritmo no compatible. Versiones antiguas de OpenSSH (previas a 7.6) pueden carecer de soporte para algoritmos modernos como curve25519-sha256.

Conexión rechazada o caída por timeout tras cambiar el puerto SSH predeterminado.

Actualice las reglas del cortafuegos ('ufw allow <puerto>/tcp' o 'firewall-cmd --add-port=<puerto>/tcp --permanent'). Si utiliza SELinux en modo Enforcing, registre el nuevo puerto con 'semanage port -a -t ssh_port_t -p tcp <puerto>'.

Preguntas frecuentes (FAQ)

¿Cuál es la diferencia de seguridad entre 'PermitRootLogin no' y 'prohibit-password'?▼

'no' inhabilita por completo el acceso a root sin importar el método de autenticación, exigiendo ingresar como usuario estándar y usar sudo. 'prohibit-password' desactiva las contraseñas para root pero sigue permitiendo autenticación por clave pública, idóneo para tareas automatizadas de respaldo.

¿Por qué se deben eliminar los cifrados CBC y las funciones MAC MD5/SHA-1 en entornos fortificados?▼

Los modos CBC (Cipher Block Chaining) son vulnerables a ataques de oráculo de relleno (como CVE-2008-5161) que permiten descifrar texto en claro. MD5 y SHA-1 presentan colisiones demostradas, incumpliendo normativas como PCI-DSS v4.0, SOC 2 y NIST SP 800-53.

¿Cómo puedo consultar los parámetros reales y efectivos de mi servidor OpenSSH en ejecución?▼

Ejecute 'sshd -T' en el servidor. A diferencia de leer el archivo estático sshd_config, 'sshd -T' muestra los valores evaluados en tiempo de ejecución, incluyendo todos los valores predeterminados aplicados por el daemon.

¿Cómo protege el ajuste de MaxAuthTries contra ataques de fuerza bruta automatizados?▼

Al configurar un valor restrictivo como 'MaxAuthTries 3', se reduce el número de intentos fallidos permitidos por conexión. Al combinarse con herramientas como fail2ban o nftables, se bloquean ataques automatizados de inyección de credenciales tras los primeros fallos.

Herramientas y utilidades relacionadas

Todas las herramientas →
Seguridad de Linux y Automatización de InfraestructuraSeguridad

Genere reglas de firewall UFW de Ubuntu, políticas drop por defecto, limitación de velocidad y reenvío de puertos con script bash ejecutable.

Abrir herramienta→
Generador de Reglas de Firewall iptables de Linux y Scripts Shell - Guía de DesarrolloSeguridad

Construya reglas iptables para cadenas INPUT/FORWARD/OUTPUT, inspección con estado, protección anti SYN flood, reenvío NAT y exportación a shell script.

Abrir herramienta→
Guía para Desarrolladores del Generador y Analizador de Registros DNS SPFSeguridad

Cree, valide y optimice registros SPF TXT conformes con RFC 7208 con rangos CIDR IPv4/IPv6, MX, A, mecanismos include y políticas de fallo.

Abrir herramienta→
Generador de Registros de Política DMARC DNS y Validador de SintaxisSeguridad

Genere y valide registros DNS TXT DMARC conformes a RFC 7489 con políticas de aplicación (none/quarantine/reject), reportes agregados rua/ruf y etiquetas de alineación.

Abrir herramienta→
Guía de Desarrollo del Generador de Registros DNS CAA (Certification Authority Authorization)Seguridad

Genere registros DNS CAA conformes a la RFC 8659 para restringir la emisión de certificados SSL/TLS únicamente a autoridades de confianza (Let's Encrypt, DigiCert, Sectigo).

Abrir herramienta→
Guía de Desarrollo: Generador de Registros DNS DKIM TXT y SelectoresSeguridad

Cree registros DNS DKIM TXT compatibles con RFC 6376 con selector, formato de clave pública (v=DKIM1; k=rsa; p=...), división de 255 caracteres y verificación.

Abrir herramienta→