Ghost AcademySecLearn// Seguridad Informática
🗺️ Hoja de ruta · 9 Fases · Debian / Ubuntu · CIS Benchmarks · DISA STIG
Auditar & Securizar Linux
// Hoja de ruta iterativa — del inventario al mantenimiento continuo

Proceso completo de 9 fases para auditar y endurecer sistemas Linux (Debian/Ubuntu): desde el diagnóstico inicial con Lynis/rkhunter hasta el hardening de kernel, SSH, servicios, monitoreo con auditd/AIDE/Fail2Ban, backup con regla 3-2-1 y verificación de cumplimiento CIS. Adaptable a servidor, workstation o contenedor.

Lynis · auditd · AIDE · AppArmor · OpenSCAP UFW · Fail2Ban · SSH hardening · sysctl ClamAV · rkhunter · chkrootkit · Falco CVSS · CWE · CIS Benchmarks · DISA STIG
1Inventario 2Hardening base 3Accesos 4Servicios 5Monitoreo 6Seguridad avanzada 7Backup 8Verificación 9Mantenimiento 🛠Herramientas
1
🔍 Inventario y Diagnóstico Inicial
Antes de securizar, hay que conocer el estado real del sistema. Levanta información de servicios, usuarios, permisos y ejecuta las herramientas de auditoría básicas.

1.1 — Levantamiento de información

bash — información del sistema
# Versión del sistema operativo
lsb_release -a
uname -a

# Servicios y puertos abiertos
ss -tulpn
netstat -tulpn

# Usuarios y grupos del sistema
cat /etc/passwd
cat /etc/group
getent passwd

# Paquetes instalados
dpkg -l
snap list

# Procesos en ejecución
ps auxf
top -b -n 1
bash — revisión de permisos críticos
# Permisos de archivos de sistema críticos
ls -l /etc/passwd /etc/shadow /etc/sudoers

# Archivos con bit SUID (potencial escalada de privilegios)
find / -perm -4000 -type f 2>/dev/null

# Archivos con bit SGID
find / -perm -2000 -type f 2>/dev/null

1.2 — Herramientas de auditoría inicial

bash — instalar y ejecutar auditores
# Instalar herramientas básicas de auditoría
apt update
apt install lynis auditd chkrootkit rkhunter clamav -y

# Auditoría completa del sistema con Lynis
lynis audit system

# Búsqueda de rootkits
chkrootkit
rkhunter --check

# Análisis de malware con ClamAV
clamscan -r /
✅ Objetivo: El informe de Lynis da una puntuación "hardening index" y lista los puntos de mejora ordenados por impacto. Úsalo como punto de partida para priorizar las siguientes fases.
2
🔒 Hardening del Sistema Base
Actualizaciones automáticas, parámetros de kernel seguros y montajes con opciones restrictivas. La base más importante antes de cualquier otro hardening.

2.1 — Actualizaciones automáticas

bash — configurar unattended-upgrades
apt install unattended-upgrades
dpkg-reconfigure --priority=low unattended-upgrades
# Editar: /etc/apt/apt.conf.d/50unattended-upgrades

2.2 — Parámetros de kernel seguros (sysctl)

📄 /etc/sysctl.conf — protecciones de red
# Filtrado de paquetes (anti-spoofing)
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.default.rp_filter=1

# Protección SYN flood
net.ipv4.tcp_syncookies=1

# Deshabilitar aceptación de ICMP redirects
net.ipv4.conf.all.accept_redirects=0
net.ipv6.conf.all.accept_redirects=0
net.ipv4.conf.all.send_redirects=0

# Ignorar broadcasts y respuestas bogus
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_responses=1
bash — aplicar cambios
sysctl -p  # aplica los cambios sin reiniciar

2.3 — Particiones y montajes seguros

📄 /etc/fstab — opciones nosuid,noexec,nodev
tmpfs  /tmp      tmpfs  defaults,nosuid,noexec,nodev  0 0
tmpfs  /var/tmp  tmpfs  defaults,nosuid,noexec,nodev  0 0
tmpfs  /dev/shm  tmpfs  defaults,nosuid,noexec,nodev  0 0
3
🔑 Gestión de Accesos y Autenticación
Políticas de contraseñas robustas, SSH hardening completo y control granular de sudo. El vector de acceso es el punto de entrada más frecuente.

3.1 — Políticas de contraseñas (PAM + login.defs)

📄 /etc/pam.d/common-password
password requisite pam_pwquality.so retry=3 minlen=12 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
📄 /etc/login.defs — expiración de contraseñas
PASS_MAX_DAYS   90   # máximo 90 días de validez
PASS_MIN_DAYS   7    # mínimo 7 días entre cambios
PASS_WARN_AGE   14   # aviso 14 días antes de expirar

3.2 — Hardening SSH

📄 /etc/ssh/sshd_config — configuración segura
Port                    2222        # cambiar puerto por defecto
PermitRootLogin         no          # prohibir login de root
PubkeyAuthentication    yes         # solo clave pública
PasswordAuthentication  no          # deshabilitar contraseñas
X11Forwarding           no
MaxAuthTries            3
ClientAliveInterval     300         # 5 min de inactividad
ClientAliveCountMax     0
Protocol                2           # solo SSH v2
bash — aplicar config SSH
systemctl restart sshd
# Verificar que el puerto nuevo responde ANTES de cerrar la sesión actual
ss -tlnp | grep 2222
⚠️ Antes de deshabilitar PasswordAuthentication: Asegúrate de que tu clave pública está en ~/.ssh/authorized_keys y que puedes conectarte con ella. Si cierras la sesión sin verificarlo, quedarás bloqueado.

3.3 — Control de acceso sudo

📄 sudoers — editar con visudo
# Editar siempre con: visudo
%admin ALL=(ALL) ALL
Defaults logfile=/var/log/sudo.log
4
🔥 Hardening de Servicios
Firewall con política deny-by-default, eliminación de servicios innecesarios y configuración segura de Apache/NGINX/bases de datos.

4.1 — Firewall UFW

bash — configurar UFW (política deny by default)
# Política por defecto: denegar todo el tráfico entrante
ufw default deny incoming
ufw default allow outgoing

# Permitir solo el puerto SSH (el que configuraste)
ufw allow 2222/tcp

# Activar el firewall
ufw enable
ufw status verbose
bash — reglas iptables avanzadas
# Política DROP en todas las cadenas de entrada y reenvío
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

4.2 — Deshabilitar servicios innecesarios

bash — auditar y eliminar servicios
# Listar todos los servicios activos
systemctl list-units --type=service

# Deshabilitar un servicio no necesario
systemctl disable [servicio]
systemctl stop [servicio]

# Eliminar paquetes superfluos
apt remove --purge [paquete-no-necesario]
apt autoremove
💡 Criterio: Si no sabes para qué sirve un servicio y no lo necesitas explícitamente, desactívalo. La superficie de ataque se reduce con cada servicio eliminado.
5
📡 Monitoreo y Detección
Auditoría de eventos con auditd, integridad de archivos con AIDE y detección en tiempo real con Falco/OSSEC. Centralización de logs hacia SIEM.

5.1 — auditd — auditoría de sistema

bash — instalar y activar auditd
apt install auditd
auditctl -e 1  # activar auditoría
📄 /etc/audit/rules.d/audit.rules — reglas críticas
# Monitorizar cambios en archivos de identidad
-w /etc/passwd  -p wa -k identity
-w /etc/shadow  -p wa -k identity
-w /etc/sudoers -p wa -k sudoers

# Monitorizar log de autenticación
-w /var/log/auth.log -p wa -k auth

5.2 — AIDE — integridad de archivos

bash — instalar y inicializar AIDE
apt install aide

# Inicializar la base de datos (puede tardar varios minutos)
aideinit
mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

# Verificación manual de integridad
aide --check
ℹ️ Falco / OSSEC: Para detección en tiempo real de comportamientos anómalos (syscalls, cambios de permisos en caliente, conexiones sospechosas), considera también Falco (especialmente en contenedores) o OSSEC/Wazuh para HIDS completo.
6
🛡️ Herramientas de Securización Avanzada
Control de acceso obligatorio (MAC) con AppArmor, protección ante fuerza bruta con Fail2Ban y escaneos continuos de malware y rootkits.

6.1 — AppArmor (MAC)

bash — verificar y activar AppArmor
# Ver estado de perfiles AppArmor
aa-status

# Habilitar e iniciar AppArmor
systemctl enable apparmor
systemctl start apparmor

6.2 — Fail2Ban

bash — instalar y configurar Fail2Ban
apt install fail2ban

# Nunca editar jail.conf directamente — usar jail.local
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
nano /etc/fail2ban/jail.local

# Reiniciar y verificar
systemctl restart fail2ban
fail2ban-client status

6.3 — ClamAV y Rootkit hunters

bash — actualizar firmas y escanear
# Actualizar base de datos de ClamAV
freshclam

# Escaneo completo (muestra solo infectados, alerta sonora)
clamscan -r --bell -i /

# Programar escaneo diario con cron
# 0 2 * * * clamscan -r --bell -i / >> /var/log/clamav/daily.log
7
💾 Backup y Recuperación
Estrategia 3-2-1 con backups cifrados y plan de respuesta a incidentes en 5 pasos. Un sistema securizado sin backup es un sistema no recuperable.

7.1 — Estrategia de backups (regla 3-2-1)

  • 3 copias de los datos (1 original + 2 backups)
  • 2 tipos de soporte distintos (disco local + nube o cinta)
  • 1 copia offsite (geográficamente separada)
bash — herramientas de backup recomendadas
# rsync — sincronización incremental
rsync -avz --delete /origen/ usuario@servidor:/destino/

# BorgBackup — backups deduplicados y cifrados
borg init --encryption=repokey /mnt/backup
borg create /mnt/backup::$(date +%Y%m%d) /etc /home /var

# Verificar integridad del backup
borg check /mnt/backup

7.2 — Plan de respuesta a incidentes

PASO 1
Detección y análisis
PASO 2
Contención
PASO 3
Erradicación
PASO 4
Recuperación
PASO 5
Lecciones aprendidas
8
✅ Verificación y Cumplimiento
Checklist de seguridad CIS, escaneo de vulnerabilidades con OpenVAS y pruebas de penetración controladas para validar el hardening aplicado.

8.1 — Checklist de seguridad

✓
CIS Benchmarks aplicados al sistema
✓
Puertos cerrados excepto los estrictamente necesarios
✓
Autenticación multifactor implementada (donde aplique)
✓
Políticas de contraseñas vigentes y verificadas
✓
Sin contraseñas por defecto en ningún servicio
✓
Todos los servicios con parches al día
✓
Monitoreo activo — auditd + AIDE + Fail2Ban funcionando

8.2 — Escaneo de vulnerabilidades y pruebas de penetración

bash — herramientas de verificación
# OpenVAS — escáner de vulnerabilidades completo
apt install openvas

# Herramientas de pentesting (solo en entorno controlado y con autorización)
# nmap     — descubrimiento de puertos y servicios
# nikto    — vulnerabilidades en servidores web
# sqlmap   — inyección SQL
# metasploit — framework de explotación
9
🔄 Mantenimiento Continuo
Automatización con Ansible/bash, documentación de la línea base y capacitación del equipo. La seguridad no es un estado, es un proceso continuo.

9.1 — Automatización

  • Scripts de hardening en Bash o Ansible para reproducir la configuración
  • Actualizaciones automáticas con unattended-upgrades
  • Escaneos programados con cron: Lynis semanal, ClamAV diario, rkhunter diario

9.2 — Documentación

  • Línea base de configuración — snapshot del estado hardened inicial
  • Registro de cambios — qué se modificó, cuándo y por qué
  • Responsables — quién administra qué parte del sistema
  • Políticas de seguridad — documentos formales de acceso y uso
  • Procedimientos operativos — runbooks para situaciones de incidente

9.3 — Capacitación

  • Buenas prácticas para administradores del sistema
  • Uso seguro para usuarios finales
  • Simulacros de respuesta ante incidentes
🔁 Iterativo: Esta hoja de ruta debe adaptarse al propósito específico de la máquina (servidor, workstation, contenedor) y al nivel de riesgo requerido. Repite las fases de verificación periódicamente.
🛠
Herramientas Recomendadas
Resumen de todas las herramientas de la hoja de ruta ordenadas por prioridad de implementación.
Herramienta Función Fase Prioridad
LynisAuditoría general del sistema — punto de partidaF1Alta
UFW / iptablesFirewall — política deny by defaultF4Alta
Fail2BanProtección ante fuerza bruta SSH y webF6Alta
auditdAuditoría de llamadas al sistema y archivos críticosF5Media
ClamAVAntivirus — escaneos programados de malwareF1 / F6Media
AIDEIntegridad de archivos — detecta cambios no autorizadosF5Media
AppArmorControl de acceso obligatorio (MAC) — confina aplicacionesF6Media
rkhunter / chkrootkitDetección de rootkits y malware de bajo nivelF1Media
OpenVASEscáner de vulnerabilidades completoF8Baja
OpenSCAPCumplimiento de benchmarks CIS / DISA STIGF8Baja
BorgBackup / rsyncBackup cifrado con deduplicaciónF7Alta
Falco / OSSEC / WazuhIDS/HIDS — detección en tiempo realF5Media