Abrir SSH sin abrir la casa: lista de comprobación para tu servidor

Abrir SSH sin abrir la casa: lista de comprobación para tu servidor

Abrir el puerto SSH de tu servidor casero a Internet es cómodo y, hecho sin cuidado, una invitación. Esta es la lista que repasamos antes de abrir nada. Cada punto se hace en minutos.

Antes de abrir el puerto

☐ Claves, no contraseñas. Genera un par de claves en tu equipo y cópialo al servidor:

ssh-keygen -t ed25519
ssh-copy-id usuario@servidor

☐ Desactiva el acceso por contraseña y el de root. En /etc/ssh/sshd_config (o en un fichero dentro de sshd_config.d/):

PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no

Reinicia con sudo systemctl restart ssh y, sin cerrar la sesión actual, comprueba desde otra terminal que puedes entrar.

☐ Limita los usuarios. AllowUsers tuusuario en la misma configuración.

☐ Instala fail2ban. Bloquea durante un tiempo las IP que fallan varias veces:

sudo apt install fail2ban

La configuración por defecto ya protege SSH en Debian y Ubuntu.

☐ Cortafuegos con lo mínimo. Con ufw:

sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enable

En el router

☐ Redirige solo el puerto necesario y solo a la IP del servidor. Nada de DMZ.

☐ Considera otro puerto externo. Redirigir el 2222 externo al 22 interno no es seguridad, pero reduce muchísimo el ruido de bots en los logs.

☐ IP fija en la red local para el servidor (reserva DHCP en el router), o la redirección dejará de funcionar el día que cambie.

Después

☐ Revisa los logs la primera semana: journalctl -u ssh y sudo fail2ban-client status sshd.

☐ Actualizaciones automáticas de seguridad: sudo apt install unattended-upgrades.

☐ Pregúntate si necesitas SSH abierto. Si solo tú accedes, una VPN con WireGuard expone un único puerto UDP que no responde a nadie sin clave. Es lo que acabamos haciendo para todo lo que no sea SSH.

Si tu conexión no tiene IP fija, te hará falta además un nombre que siga a tu IP; eso lo resolvemos con DNS dinámico.