diciembre 28, 2024
Tabla de Contenido

Guía para Implementar Seguridad en un Servidor Linux

La seguridad en los servidores Linux es un tema fundamental para garantizar la integridad, confidencialidad y disponibilidad de los datos. Esta guía cubrirá desde las configuraciones básicas hasta estrategias avanzadas para proteger un servidor Linux, incluyendo comandos, configuraciones y mejores prácticas.

1. Configuraciones Iniciales de Seguridad

1.1 Actualiza tu Sistema Operativo

Mantener el sistema operativo actualizado es una de las primeras y más importantes medidas de seguridad. Los desarrolladores lanzan actualizaciones regularmente para corregir vulnerabilidades y mejorar la funcionalidad. No realizar actualizaciones puede exponer el servidor a ataques que ya tienen soluciones conocidas.

Ejecuta los siguientes comandos:

sudo apt update && sudo apt upgrade -y

O para distribuciones basadas en Red Hat:

sudo yum update -y

Configura actualizaciones automáticas para garantizar que tu servidor siempre esté al día:

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

1.2 Cambiar el Puerto por Defecto de SSH

El puerto 22 es el predeterminado para SSH, lo que lo convierte en un objetivo frecuente para bots y atacantes. Cambiar el puerto dificulta los intentos de fuerza bruta automatizados.

Edita el archivo de configuración de SSH:

sudo nano /etc/ssh/sshd_config

Cambia el puerto a un valor no usado, por ejemplo:

Port 2222

Guarda los cambios y reinicia el servicio SSH:

sudo systemctl restart sshd

Asegúrate de actualizar tu firewall para permitir el nuevo puerto SSH:

sudo ufw allow 2222/tcp

1.3 Crear Usuarios con Privilegios Limitados

Usar la cuenta root para tareas cotidianas aumenta el riesgo de comprometer todo el sistema en caso de una vulneración. Crea usuarios con permisos limitados y otórgales acceso sudo solo cuando sea necesario.

Crea un usuario:

sudo adduser nombre_usuario

Otórgale privilegios administrativos:

sudo usermod -aG sudo nombre_usuario

Para mejorar la seguridad, deshabilita el acceso SSH directo del usuario root:

sudo nano /etc/ssh/sshd_config

Modifica esta línea:

PermitRootLogin no

Reinicia SSH:

sudo systemctl restart sshd

2. Configuración del Cortafuegos

Un cortafuegos es esencial para controlar el tráfico que entra y sale del servidor, permitiendo solo las conexiones necesarias.

2.1 Configurar UFW (Uncomplicated Firewall)

UFW es una herramienta sencilla y efectiva para administrar reglas de firewall.

Habilita UFW y configura las reglas:

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

Revisa el estado del firewall:

sudo ufw status

2.2 Configurar Firewalld (Distribuciones Red Hat)

Firewalld es una alternativa popular para gestionar reglas de firewall en distribuciones basadas en Red Hat.

Inicia y habilita el servicio:

sudo systemctl start firewalld 
sudo systemctl enable firewalld

Permite servicios y puertos necesarios:

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

2.3 Mejorar la Seguridad del Firewall

Implementa listas blancas (whitelisting) para permitir solo conexiones específicas:

sudo ufw allow from 192.168.1.0/24 to any port 2222

Esto asegura que solo las IPs en tu red local puedan acceder al puerto SSH.


3. Configuración de Autenticación Avanzada

3.1 Configurar Autenticación de Llaves SSH

La autenticación por llaves SSH elimina la dependencia de contraseñas y proporciona una seguridad significativamente mayor.

  1. Genera un par de llaves en tu máquina local:
ssh-keygen -t rsa -b 4096
  1. Copia la clave pública al servidor:
ssh-copy-id -i ~/.ssh/id_rsa.pub usuario@ip_del_servidor

3.2 Deshabilitar Autenticación por Contraseña

Reducir la superficie de ataque deshabilitando el acceso por contraseña es una medida crítica.

Edita el archivo de configuración de SSH:

sudo nano /etc/ssh/sshd_config

Cambia las siguientes líneas:

PasswordAuthentication no

Reinicia SSH para aplicar los cambios:

sudo systemctl restart sshd

4. Instalación de Software de Seguridad

4.1 Fail2Ban

Fail2Ban ayuda a prevenir intentos de fuerza bruta bloqueando direcciones IP después de varios intentos fallidos.

  1. Instala Fail2Ban:
sudo apt install fail2ban -y
  1. Configura la protección para SSH:
sudo nano /etc/fail2ban/jail.local

Agrega estas líneas:

[sshd] enabled = true 
port = 2222 
filter = sshd 
logpath = /var/log/auth.log 
maxretry = 5

Reinicia el servicio:

sudo systemctl restart fail2ban

4.2 DDoS Deflate

DDoS Deflate es una herramienta ligera diseñada para mitigar ataques de denegación de servicio distribuidos (DDoS).

  1. Descarga e instala DDoS Deflate:
wget https://github.com/jgmdev/ddos-deflate/archive/master.zip
unzip master.zip
cd ddos-deflate-master
sudo ./install.sh
  1. Configura el archivo de configuración principal:
sudo nano /usr/local/ddos/ddos.conf

Ajusta los valores para los límites de conexiones y listas blancas según tus necesidades.

  1. Activa el servicio:
sudo /usr/local/ddos/ddos.sh -c

4.3 RKHunter y ClamAV

RKHunter y ClamAV son herramientas esenciales para proteger el servidor contra rootkits y malware.

  • Instala RKHunter:
sudo apt install rkhunter -y 
sudo rkhunter --update 
sudo rkhunter --checkall
  • Instala ClamAV y realiza un escaneo:
sudo apt install clamav -y 
sudo freshclam 
sudo clamscan -r /home

5. Monitoreo y Auditoría

5.1 Configurar Logwatch

Logwatch ofrece informes detallados sobre la actividad del servidor.

  1. Instala Logwatch:
sudo apt install logwatch -y
  1. Configura informes automáticos:
sudo nano /etc/cron.daily/00logwatch

Agrega:

/usr/sbin/logwatch --output mail --mailto [email protected] --detail high

5.2 Instalar y Configurar Auditd

Auditd registra eventos clave en el sistema para auditorías de seguridad.

  1. Instala Auditd:
sudo apt install auditd -y
  1. Define reglas personalizadas para monitorear cambios críticos:
sudo nano /etc/audit/audit.rules

Ejemplo:

-w /etc/passwd -p wa -k passwd_changes 
-w /etc/ssh/sshd_config -p wa -k ssh_changes

Reinicia Auditd:

sudo systemctl restart auditd

6. Configuración de Backup y Recuperación

6.1 Configurar Backups Automatizados

Los backups son esenciales para garantizar la disponibilidad de los datos ante fallos o ataques. Usa rsync para sincronizar directorios importantes con un servidor de respaldo.

Ejemplo:

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

Automatiza este proceso con cron:

crontab -e

Agrega:

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

6.2 Configurar Snapshots con LVM

Si usas LVM, puedes crear snapshots para restauraciones rápidas:

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

Resumen

Implementar seguridad en un servidor Linux requiere un enfoque integral y constante. Siguiendo los pasos detallados en esta guía, lograrás:

  • Asegurar el acceso SSH mediante cambios en el puerto predeterminado y autenticación por llaves.
  • Configurar cortafuegos robustos con UFW o Firewalld.
  • Implementar herramientas de protección como Fail2Ban, DDoS Deflate, RKHunter y ClamAV.
  • Monitorear la actividad del servidor con Logwatch y Auditd.
  • Establecer una estrategia de respaldo confiable usando rsync y snapshots con LVM.

🚀 Recuerda que la seguridad es un proceso continuo y requiere supervisión constante.

Entradas relacionadas

Cómo Montar un Servidor de Node.js en Nginx

Cómo Migrar un Proyecto Docker de Local a un VPS

Cómo Implementar un Proyecto de Laravel en un VPS

Guía Definitiva para No Volverte Loco Configurando Firewalls

Guía Completa para Detectar Rootkits con RKHunter y Chkrootkit

Automatización de Backups en Servidores Linux con Rsync y Cron

Más Artículos

Cómo Migrar un Proyecto Docker de Local a un VPS

Cuando tienes un proyecto Docker funcionando perfectamente en tu entorno local y estás..

Cómo Implementar un Proyecto de Laravel en un VPS

Configurar un proyecto de Laravel en un VPS puede sonar como desactivar una..

Guía Definitiva para No Volverte Loco Configurando Firewalls

Configurar un firewall puede sonar tan aterrador como intentar desactivar una bomba en..

Translate »