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 funcionando8.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 |
|---|---|---|---|
| Lynis | Auditoría general del sistema — punto de partida | F1 | Alta |
| UFW / iptables | Firewall — política deny by default | F4 | Alta |
| Fail2Ban | Protección ante fuerza bruta SSH y web | F6 | Alta |
| auditd | Auditoría de llamadas al sistema y archivos críticos | F5 | Media |
| ClamAV | Antivirus — escaneos programados de malware | F1 / F6 | Media |
| AIDE | Integridad de archivos — detecta cambios no autorizados | F5 | Media |
| AppArmor | Control de acceso obligatorio (MAC) — confina aplicaciones | F6 | Media |
| rkhunter / chkrootkit | Detección de rootkits y malware de bajo nivel | F1 | Media |
| OpenVAS | Escáner de vulnerabilidades completo | F8 | Baja |
| OpenSCAP | Cumplimiento de benchmarks CIS / DISA STIG | F8 | Baja |
| BorgBackup / rsync | Backup cifrado con deduplicación | F7 | Alta |
| Falco / OSSEC / Wazuh | IDS/HIDS — detección en tiempo real | F5 | Media |