Seguridad Linux SSH Hardening

Cómo asegurar tu servidor Linux recién creado (hardening básico)

Los pasos esenciales para proteger un VPS Linux desde el primer día: usuario sin root, SSH seguro, firewall, actualizaciones automáticas y más.

9 de abril de 2026 12 min de lectura Host Crafter

¿Por qué hacer hardening?

Un servidor recién creado conectado a internet empieza a recibir intentos de acceso automatizados en menos de 5 minutos. Los bots escanean rangos de IP continuamente buscando contraseñas débiles y configuraciones por defecto.

Este checklist cubre los pasos fundamentales que deberían hacerse en todo servidor Linux en producción.

Nota importante: Los comandos en esta guía son ejemplos. Los paquetes, gestores y rutas pueden variar según el sistema operativo que estés usando. Se muestran ejemplos para Ubuntu/Debian y Rocky Linux/AlmaLinux/RHEL. Adaptá los comandos a tu distribución.


1. Actualizar el sistema

Lo primero siempre es tener el sistema al día con los últimos parches de seguridad.

Ubuntu / Debian:

apt update && apt upgrade -y
apt autoremove -y

Rocky Linux / AlmaLinux / RHEL:

dnf update -y
dnf autoremove -y

2. Crear un usuario con sudo (no trabajar como root)

Trabajar siempre como root es peligroso — cualquier error o exploit tiene acceso total al sistema.

Ubuntu / Debian:

adduser tuusuario
usermod -aG sudo tuusuario
su - tuusuario
sudo whoami  # Debería mostrar "root"

Rocky Linux / AlmaLinux / RHEL:

useradd tuusuario
passwd tuusuario
usermod -aG wheel tuusuario
su - tuusuario
sudo whoami  # Debería mostrar "root"

En Rocky/RHEL el grupo de privilegios es wheel, no sudo.


3. Configurar autenticación SSH con claves

Las contraseñas pueden romperse por fuerza bruta. Las claves SSH prácticamente no.

Generar la clave en tu computadora local

(Este comando es igual en todos los sistemas)

ssh-keygen -t ed25519 -C "servidor-produccion"

Copiar la clave al servidor

ssh-copy-id tuusuario@IP_DEL_SERVIDOR

Deshabilitar autenticación por contraseña

Editá /etc/ssh/sshd_config (ruta igual en todas las distros):

PasswordAuthentication no
PermitRootLogin no
Protocol 2
LoginGraceTime 30
MaxAuthTries 3

⚠️ Antes de recargar SSH, verificá en otra terminal que podés entrar con la clave.

Ubuntu / Debian:

sudo systemctl reload ssh

Rocky Linux / AlmaLinux / RHEL:

sudo systemctl reload sshd

4. Configurar el firewall

Ubuntu / Debian — UFW:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable

Rocky Linux / AlmaLinux / RHEL — firewalld:

sudo systemctl enable --now firewalld
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

Para un servidor web:

Ubuntu:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Rocky Linux:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

5. Instalar Fail2Ban

Fail2Ban monitorea los logs y bloquea IPs que intentan demasiados accesos fallidos.

Ubuntu / Debian:

sudo apt install fail2ban -y

Rocky Linux / AlmaLinux / RHEL:

sudo dnf install epel-release -y
sudo dnf install fail2ban -y

Creá la configuración local:

sudo nano /etc/fail2ban/jail.local
[DEFAULT]
bantime  = 3600
findtime = 600
maxretry = 5

[sshd]
enabled  = true
port     = ssh
logpath  = %(sshd_log)s
maxretry = 3
sudo systemctl enable fail2ban
sudo systemctl restart fail2ban

# Ver IPs baneadas
sudo fail2ban-client status sshd

6. Cambiar el puerto SSH (opcional pero recomendado)

El puerto 22 recibe miles de intentos automatizados por día. Cambiar a un puerto no estándar reduce el ruido enormemente.

En /etc/ssh/sshd_config:

Port 2222

Actualizá el firewall antes de recargar SSH:

Ubuntu:

sudo ufw allow 2222/tcp
sudo ufw delete allow OpenSSH
sudo systemctl reload ssh

Rocky Linux:

sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload
# En SELinux también hay que habilitar el puerto:
sudo semanage port -a -t ssh_port_t -p tcp 2222
sudo systemctl reload sshd

Para conectarte: ssh -p 2222 tuusuario@IP


7. Configurar actualizaciones de seguridad automáticas

Ubuntu / Debian:

sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades

Rocky Linux / AlmaLinux / RHEL:

sudo dnf install dnf-automatic -y
sudo nano /etc/dnf/automatic.conf
# Cambiar: apply_updates = yes
sudo systemctl enable --now dnf-automatic.timer

8. Deshabilitar servicios innecesarios

Menos servicios corriendo = menor superficie de ataque. El comando para ver y deshabilitar servicios es igual en todas las distros modernas:

# Ver qué servicios están activos
systemctl list-units --type=service --state=active

# Deshabilitar servicios no necesarios (ejemplos)
sudo systemctl disable bluetooth
sudo systemctl disable avahi-daemon

9. Monitorear accesos al servidor

Estos comandos son iguales en todas las distribuciones:

# Últimos logins exitosos
last -n 20

# Intentos fallidos
lastb -n 20

Los logs de autenticación varían según la distro:

Ubuntu / Debian:

sudo tail -f /var/log/auth.log

Rocky Linux / AlmaLinux / RHEL:

sudo tail -f /var/log/secure
# O con journald:
sudo journalctl -u sshd -f

Checklist final

  • ✅ Sistema actualizado
  • ✅ Usuario no-root con sudo/wheel creado
  • ✅ Autenticación SSH con claves configurada
  • ✅ Login por contraseña deshabilitado
  • ✅ Login como root por SSH deshabilitado
  • ✅ Firewall activo con política restrictiva
  • ✅ Fail2Ban instalado y configurado
  • ✅ Actualizaciones de seguridad automáticas activas
  • ✅ Servicios innecesarios deshabilitados

Con estos pasos cubrís el 80% de los vectores de ataque más comunes en servidores VPS, independientemente de la distribución que uses.

Si necesitás soporte para configurar y mantener la seguridad de tu servidor, nuestro equipo está disponible 24/7. Consultanos →

¿Listo para ponerlo en práctica?

VPS con soporte de seguridad 24/7