Saltar al contenido
Infrastructure 2024-12-28 12 min de lectura

Guía Completa para Implementar Seguridad en un Servidor Linux

Un servidor Linux recién desplegado, con su configuración por defecto, es un blanco fácil para escaneos automatizados que buscan puertos abiertos y credenciales débiles las 24 horas del día. Endurecer la seguridad de tu servidor no requiere ser un experto en ciberseguridad: se trata de aplicar, capa sobre capa, un conjunto de prácticas probadas que reducen drásticamente tu superficie de ataque. Esta guía cubre desde el acceso SSH hasta firewall, detección de intrusos, monitoreo y backups, con comandos listos para copiar y adaptar a tu distribución.

Guía Completa para Implementar Seguridad en un Servidor Linux
#Infrastructure#Linux#Seguridad#VPS
T
Equipo Terranode
Editorial

1. Mantén el sistema operativo actualizado

La mayoría de los ataques exitosos explotan vulnerabilidades ya conocidas y parcheadas. Mantener el sistema al día es la medida de seguridad con mejor relación esfuerzo-beneficio que existe.

En distribuciones basadas en Debian/Ubuntu:

bash
sudo apt update && sudo apt upgrade -y

En distribuciones basadas en Red Hat/CentOS:

bash
sudo yum update -y

Para automatizar las actualizaciones de seguridad en Debian/Ubuntu:

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

2. Endurece el acceso SSH

El servicio SSH es la puerta de entrada principal a tu servidor y, por lo tanto, el objetivo número uno de los ataques de fuerza bruta.

2.1 Cambia el puerto por defecto de SSH

Mover SSH del puerto 22 a uno personalizado no detiene a un atacante decidido, pero elimina de un golpe el 90% del ruido de bots que escanean el puerto estándar de forma automática.

bash
sudo nano /etc/ssh/sshd_config

Busca y modifica la línea del puerto:

text
Port 2222

Reinicia el servicio y abre el nuevo puerto en el firewall antes de cerrar tu sesión actual (para no quedar bloqueado fuera del servidor):

bash
sudo systemctl restart sshd
sudo ufw allow 2222/tcp

2.2 Crea usuarios con privilegios limitados y deshabilita el login root

Operar directamente como root es una mala práctica: si esa cuenta se ve comprometida, el atacante tiene control total inmediato. Crea un usuario normal con permisos de sudo en su lugar:

bash
sudo adduser nombre_usuario
sudo usermod -aG sudo nombre_usuario

Luego deshabilita el acceso directo por SSH del usuario root:

bash
sudo nano /etc/ssh/sshd_config
text
PermitRootLogin no
bash
sudo systemctl restart sshd

2.3 Usa autenticación por llaves SSH en lugar de contraseñas

Las llaves SSH son prácticamente inmunes a ataques de fuerza bruta comparadas con una contraseña, sin importar qué tan compleja sea esta última.

Genera un par de llaves en tu máquina local:

bash
ssh-keygen -t rsa -b 4096

Copia la clave pública al servidor:

bash
ssh-copy-id -i ~/.ssh/id_rsa.pub usuario@ip_del_servidor

Una vez confirmado que puedes iniciar sesión con la llave, deshabilita la autenticación por contraseña por completo:

bash
sudo nano /etc/ssh/sshd_config
text
PasswordAuthentication no
bash
sudo systemctl restart sshd

Importante: verifica que puedes conectarte con la llave SSH en una segunda terminal antes de cerrar tu sesión actual y de deshabilitar la contraseña, para evitar quedar bloqueado fuera del servidor.

3. Configura un firewall

Un firewall bien configurado bloquea todo el tráfico que no necesitas exponer, reduciendo la superficie de ataque a solo los servicios que realmente usas.

3.1 UFW (Uncomplicated Firewall) — Debian/Ubuntu

bash
sudo ufw allow 2222/tcp   # Puerto SSH personalizado
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
sudo ufw status

3.2 Firewalld — distribuciones Red Hat/CentOS

bash
sudo systemctl start firewalld
sudo systemctl enable firewalld

sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

3.3 Restringe el acceso SSH a rangos de IP específicos

Si administras el servidor siempre desde la misma red u oficina, puedes restringir el puerto SSH únicamente a ese rango, cerrando el acceso a cualquier otra IP:

bash
sudo ufw allow from 192.168.1.0/24 to any port 2222

4. Detección de intrusos y protección contra ataques

Además del firewall, conviene añadir herramientas activas que detecten y respondan a comportamiento malicioso en tiempo real.

4.1 Fail2Ban — bloqueo automático de fuerza bruta

Fail2Ban monitorea los logs del sistema y bloquea automáticamente las IPs que exceden un número de intentos fallidos de inicio de sesión.

bash
sudo apt install fail2ban -y

Crea o edita la configuración local para SSH:

bash
sudo nano /etc/fail2ban/jail.local
ini
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bash
sudo systemctl restart fail2ban

4.2 DDoS Deflate — mitigación básica de ataques DDoS

bash
wget https://github.com/jgmdev/ddos-deflate/archive/master.zip
unzip master.zip
cd ddos-deflate-master
sudo ./install.sh

Ajusta los umbrales de conexión en el archivo de configuración según el tráfico normal de tu servidor:

bash
sudo nano /usr/local/ddos/ddos.conf

Activa el servicio:

bash
sudo /usr/local/ddos/ddos.sh -c

4.3 RKHunter y ClamAV — detección de rootkits y malware

RKHunter escanea el sistema en busca de rootkits, backdoors y exploits locales conocidos:

bash
sudo apt install rkhunter -y
sudo rkhunter --update
sudo rkhunter --checkall

ClamAV es un antivirus de código abierto útil sobre todo si tu servidor maneja archivos subidos por usuarios (por ejemplo, un servidor de correo o de hosting compartido):

bash
sudo apt install clamav -y
sudo freshclam
sudo clamscan -r /home

5. Monitoreo y auditoría continua

Ninguna defensa es completa sin visibilidad de lo que ocurre en el servidor. El monitoreo permite detectar comportamiento anómalo antes de que se convierta en un incidente grave.

5.1 Logwatch — informes automáticos de actividad

bash
sudo apt install logwatch -y

Configura informes diarios por correo:

bash
sudo nano /etc/cron.daily/00logwatch
bash
/usr/sbin/logwatch --output mail --mailto [email protected] --detail high

5.2 Auditd — auditoría de cambios críticos del sistema

bash
sudo apt install auditd -y

Define reglas para monitorear cambios en archivos sensibles:

bash
sudo nano /etc/audit/audit.rules
text
-w /etc/passwd -p wa -k passwd_changes
-w /etc/ssh/sshd_config -p wa -k ssh_changes
bash
sudo systemctl restart auditd

6. Backups: tu última línea de defensa

Ninguna medida de seguridad es infalible al 100%. Un backup reciente y probado es lo que separa un incidente menor de una pérdida total de datos.

6.1 Backups automatizados con rsync y cron

bash
rsync -avz /ruta/del/directorio usuario@backup-server:/ruta/de/backup

Programado diariamente a las 2 AM con cron:

bash
crontab -e
text
0 2 * * * rsync -avz /ruta/del/directorio usuario@backup-server:/ruta/de/backup

6.2 Snapshots con LVM

Si tu servidor usa LVM (Logical Volume Manager), puedes crear snapshots casi instantáneos como punto de restauración antes de cambios riesgosos:

bash
sudo lvcreate --size 1G --snapshot --name backup_nombre /dev/volume_group/logical_volume

Resumen de la checklist de seguridad

  • Acceso SSH: puerto personalizado, autenticación por llaves, login root deshabilitado.
  • Firewall: UFW o Firewalld configurado para exponer solo los servicios necesarios.
  • Protección activa: Fail2Ban, DDoS Deflate, RKHunter y ClamAV instalados y actualizados.
  • Monitoreo: Logwatch para informes diarios, Auditd para auditar cambios críticos.
  • Backups: estrategia automatizada con rsync/cron, complementada con snapshots LVM cuando sea posible.

La seguridad de un servidor Linux no es un checklist que se completa una sola vez, sino un proceso continuo de mantenimiento, monitoreo y respuesta. Aplicando las capas descritas en esta guía —acceso restringido, firewall, detección de intrusos, auditoría y backups— reduces drásticamente el riesgo de que un ataque automatizado o dirigido comprometa tu infraestructura. Si tienes dudas durante la implementación, nuestro equipo de soporte técnico está disponible 24/7 para ayudarte.

¿Listo para llevar tu sitio al siguiente nivel?

Hosting con LiteSpeed, NVMe y soporte 24/7 desde $3/mes.

Ver planes de hosting

Preguntas frecuentes