El mito del puerto aleatorio
Cambiar el puerto SSH de 22 a 49152 reduce el ruido de bots, pero no añade seguridad real. Cualquier escáner de nmap lo encuentra en segundos. La seguridad real está en la configuración.
1. Claves ed25519
# Generar clave en el cliente
ssh-keygen -t ed25519 -C "tu@correo.com"
# Copiar al servidor
ssh-copy-id -i ~/.ssh/id_ed25519.pub usuario@servidor
2. Configuración de sshd_config
# /etc/ssh/sshd_config — Tinux Net estándar
Port 22
Protocol 2
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
AuthorizedKeysFile .ssh/authorized_keys
# Límites
MaxAuthTries 3
MaxSessions 5
LoginGraceTime 30
# Tiempos de inactividad
ClientAliveInterval 300
ClientAliveCountMax 2
# Deshabilitar extras
X11Forwarding no
AllowTcpForwarding no
PermitEmptyPasswords no
# Solo usuarios autorizados
AllowUsers deploy admin
3. Fail2ban para SSH
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 600
bantime = 3600
action = nftables
4. Opcional: 2FA con Google Authenticator
apt install libpam-google-authenticator
# Añadir a /etc/pam.d/sshd:
auth required pam_google_authenticator.so nullok
Resultado
Con esta configuración, un atacante necesitaría: tu clave privada (que no existe en el servidor), el usuario exacto, y opcionalmente el código 2FA. Cambiar el puerto queda como decisión opcional del cliente.