Un servidor sin proteger es una invitación abierta a los hackers. En Theory7 vemos a diario intentos de comprometer servidores mediante ataques de fuerza bruta, exploits y otros métodos. Con las medidas de seguridad adecuadas puedes bloquear la gran mayoría de estos ataques. En esta guía repasamos lo esencial de la seguridad de servidores.

Por qué la seguridad del servidor es crucial

Un servidor hackeado puede provocar:

  • Pérdida de datos: archivos importantes borrados o cifrados
  • Envío de spam: tu servidor envía spam y tu IP acaba en listas negras
  • Alojamiento de malware: tu servidor aloja contenido malicioso
  • Ataques DDoS: tu servidor se usa para atacar a otros
  • Daños a la reputación: tu dominio y tu IP quedan contaminados

Más vale prevenir que curar. Es esencial proteger tu servidor frente a estas amenazas, no solo para proteger tus propios datos, sino también para salvaguardar la integridad de tus clientes y usuarios.

Proteger SSH

SSH es la principal puerta de acceso a tu servidor. Protégela a fondo.

Cambiar el puerto SSH

El puerto predeterminado 22 se escanea constantemente. Cámbialo por otro puerto:

sudo nano /etc/ssh/sshd_config

Busca la línea Port 22 y cámbiala, por ejemplo, por:

Port 2222

Reinicia SSH después del cambio:

sudo systemctl restart sshd

No olvides ajustar el firewall para el nuevo puerto. Para ello, actualiza las reglas del firewall de modo que el nuevo puerto sea accesible.

Desactivar el inicio de sesión como root

Desactiva el inicio de sesión directo como root. Trabaja con un usuario normal y usa sudo para las tareas de administración:

sudo nano /etc/ssh/sshd_config

Cambia:

PermitRootLogin no

Así evitas que los hackers accedan fácilmente a la cuenta root, que es un objetivo muy habitual.

Exigir claves SSH

Desactiva la autenticación por contraseña y usa solo claves SSH:

PasswordAuthentication no
PubkeyAuthentication yes

Primero genera una clave SSH en tu ordenador local y copia la clave pública al servidor antes de desactivar la autenticación por contraseña. Esto aumenta considerablemente la seguridad, porque a los atacantes les resulta más difícil acceder sin la clave correcta.

Configurar el firewall con UFW

UFW (Uncomplicated Firewall) hace que la gestión del firewall sea sencilla y accesible para todo el mundo.

Instalar UFW y reglas básicas

sudo apt install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing

Esta configuración básica hace que se bloqueen todas las conexiones entrantes, salvo las que se permitan expresamente.

Abrir puertos

Abre solo los puertos que necesites:

# SSH (puerto personalizado)
sudo ufw allow 2222/tcp

# Tráfico web
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# DirectAdmin
sudo ufw allow 2222/tcp

Activar el firewall

sudo ufw enable

Comprueba el estado:

sudo ufw status verbose

Esto te da una vista general de los puertos abiertos y de las reglas activas.

Fail2ban contra la fuerza bruta

Fail2ban supervisa los archivos de registro y bloquea las IP que fallan repetidamente al intentar iniciar sesión. Es una forma eficaz de evitar los ataques de fuerza bruta.

Instalación

sudo apt install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Configurar la jail de SSH

Crea una configuración local:

sudo nano /etc/fail2ban/jail.local

Añade:

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600

Esto bloquea una IP durante 1 hora tras 3 intentos de inicio de sesión fallidos en 10 minutos. Puede ayudar a disuadir a los atacantes y a hacer tu servidor más seguro.

sudo systemctl restart fail2ban

Actualizaciones del sistema

El software obsoleto suele contener vulnerabilidades conocidas que los atacantes pueden aprovechar.

Actualizaciones manuales

sudo apt update && sudo apt upgrade -y

Es importante actualizar tu sistema con regularidad para recibir los últimos parches de seguridad.

Actualizaciones de seguridad automáticas

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

Al activar las actualizaciones automáticas te aseguras de tener siempre los parches de seguridad más recientes sin tener que acordarte de ello.

Consejos de seguridad adicionales

Desactivar los servicios que no se usan

Cada proceso en ejecución es un posible vector de ataque. Desactiva los servicios que no uses:

sudo systemctl list-unit-files --type=service --state=enabled
sudo systemctl disable servicenaam

Imponer contraseñas seguras

Configura políticas de contraseñas con PAM o usa solo claves SSH. Esto ayuda a evitar contraseñas débiles que son fáciles de adivinar.

Supervisión de registros

Revisa con regularidad tus registros en busca de actividad sospechosa:

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

Si revisas tus registros con regularidad, podrás detectar a tiempo las actividades sospechosas y actuar.

Autenticación de dos factores

Plantéate usar 2FA para SSH con Google Authenticator o una herramienta similar. Esto añade una capa de seguridad adicional, de modo que, aunque un atacante tenga tu contraseña, no podrá iniciar sesión sin el segundo factor.

Lista de comprobación de seguridad

Usa esta lista de comprobación con cada servidor nuevo:

  • Puerto SSH cambiado
  • Inicio de sesión como root desactivado
  • Claves SSH configuradas
  • Autenticación por contraseña desactivada
  • Firewall UFW activo
  • Fail2ban instalado
  • Actualizaciones automáticas activas
  • Servicios innecesarios desactivados

Más información sobre los servidores VPS de Theory7

¿Necesitas ayuda?

Estamos a tu disposición. ¿Te has encontrado con algún problema o tienes alguna pregunta? Nuestro equipo de soporte te ayuda encantado de forma personal. Envíanos un mensaje a través del sistema de tickets: solemos responder en unas pocas horas y estaremos encantados de pensar contigo en la solución.