A. Preparar el Script
Descarga
fortress_improved.sh desde el repositorio de GitHub de captainzero93 y dale permisos de ejecución.1
Descargar el script con wget
Descarga la versión más reciente directamente desde la rama
main del repositorio.2
Otorgar permisos de ejecución
chmod +x fortress_improved.sh — el script necesita ser ejecutable antes de poder lanzarse con sudo.bash — descargar y preparar
# Descargar el script desde GitHub (rama main)
wget https://raw.githubusercontent.com/captainzero93/security_harden_linux/main/fortress_improved.sh
# Otorgar permisos de ejecución
chmod +x fortress_improved.sh
🔗 Repositorio: github.com/captainzero93/security_harden_linux
B. Dry-Run — Simulación Previa (Obligatorio)
Antes de aplicar cualquier cambio, siempre ejecuta primero el dry-run. Recorre todos los módulos sin modificar el sistema y genera un informe detallado.
bash — simulación completa con verbose
# Dry-run + verbose: muestra TODO lo que haría sin tocar nada
sudo ./fortress_improved.sh --dry-run -v
El script recorrerá los 21 módulos mostrando para cada uno: [INFO] [DRY RUN] Would X... seguido de [SUCCESS] Module Y completed. Si todos terminan en SUCCESS, la ejecución real es segura.
✅ Parámetros de la ejecución dry-run
Security Level
moderate
Desktop Mode
true
Dry Run
true ← solo simulación, sin cambios reales
Interactive
true
Executed modules
21 / 21
[SUCCESS]
Security hardening completed!
[INFO] Report
/root/security_hardening_report_20251110_084835.html
Salida del
--dry-run -v — todos los módulos completados con [SUCCESS]✅ Dry-run exitoso: Si ves
[SUCCESS] Security hardening completed! al final con los 21 módulos, la ejecución real es segura. El informe HTML generado documenta todo lo que se aplicaría.C. Ejecutar e Instalar
Una vez satisfecho con el dry-run, aplica los cambios reales. El script pedirá confirmación para funcionalidades de escritorio que podría deshabilitar.
3
Ejecutar con nivel moderado (por defecto)
Modo interactivo, nivel moderate. El script solicitará confirmación para IPv6, mDNS, KDE Connect o Samba.
4
Responder a las preguntas interactivas
El script preguntará si deseas deshabilitar ciertas funcionalidades de escritorio. Responde según tus necesidades — en un entorno de escritorio con GNOME, probablemente quieras mantener mDNS activo.
5
Reiniciar el sistema
sudo reboot — es obligatorio para que los cambios de kernel (sysctl), servicios y configuraciones de boot surtan efecto completo.bash — ejecución estándar
# Ejecutar con nivel moderate (por defecto), modo interactivo
sudo ./fortress_improved.sh
# Reiniciar para aplicar todos los cambios de kernel y servicios
sudo reboot
Ejecución real del script — módulos aplicados con [SUCCESS]
Flags y Opciones de Línea de Comando
Combina estas opciones para personalizar exactamente qué módulos se aplican, con qué nivel de seguridad y si la ejecución debe ser interactiva o no.
| Flag | Opción larga | Descripción y ejemplo |
|---|---|---|
| -l | --level | Nivel de seguridad: low, moderate, high, paranoid.Ej: sudo ./fortress_improved.sh -l high |
| -n | --non-interactive | Sin paradas para preguntas. Ideal para automatización y CI/CD. Ej: sudo ./fortress_improved.sh -n |
| -e | --enable | Ejecutar solo los módulos indicados (separados por comas). Ej: sudo ./fortress_improved.sh -e firewall,ssh_hardening |
| -x | --disable | Omitir módulos específicos. Útil si ya tienes ClamAV o AIDE configurados. Ej: sudo ./fortress_improved.sh -x clamav,aide |
| -r | --restore | Revertir cambios usando la copia de seguridad automática del script. Ej: sudo ./fortress_improved.sh --restore |
| -R | --report | Auditoría del estado actual de seguridad sin aplicar cambios. Ej: sudo ./fortress_improved.sh --report |
| --dry-run | Simular todos los cambios sin aplicar nada. Combinar con -v para verbose completo. |
|
| -v | --verbose | Salida detallada de cada acción. Usar junto con --dry-run o ejecución real. |
bash — ejemplos de combinaciones útiles
# Solo módulos firewall y SSH (rápido, sin tocar el resto)
sudo ./fortress_improved.sh -e firewall,ssh_hardening
# Nivel alto sin interacción (CI/CD, scripts automatizados)
sudo ./fortress_improved.sh -l high -n
# Nivel alto sin ClamAV (ya instalado por separado)
sudo ./fortress_improved.sh -l high -x clamav
# Solo auditoría — ver estado actual sin cambiar nada
sudo ./fortress_improved.sh --report
# Verificar el hardening aplicado
sudo ./verify_fortress.sh
Niveles de Seguridad
Elige el nivel adecuado a tu entorno. Cuanto más alto el nivel, más restricciones — algunos pueden romper funcionalidades de escritorio.
low -l low
🖥️ Entornos de aprendizaje y desarrollo. Mínimo impacto en funcionalidad.
Incluye: reglas de firewall básicas, endurecimiento de SSH manteniendo autenticación por contraseña.
moderate -l moderate (default)
🖥️ Escritorio y uso general. Equilibrio entre seguridad y usabilidad.
Incluye: firewall completo, Fail2Ban, auditd, endurecimiento básico del kernel.
high -l high
🖧 Servidores de producción y usuarios con altas exigencias de seguridad.
Incluye: todo lo de moderate + endurecimiento de kernel más estricto + restricciones de dispositivos USB.
paranoid -l paranoid
🔒 Máxima seguridad. No recomendado para escritorio — restricciones muy severas.
Incluye: hardening de kernel más agresivo, Zero GRUB timeout, restricciones USB más estrictas.
⚠️ Nivel paranoid en escritorio: Las restricciones son tan severas que pueden romper funcionalidades cotidianas. Reserva este nivel para servidores sin acceso físico donde la seguridad es absolutamente prioritaria.
21 Módulos de Hardening
El dry-run simuló con éxito todos estos módulos. Cada uno puede activarse o desactivarse individualmente con
-e / -x.Actualizaciones del sistema
Actualiza paquetes y configura actualizaciones de seguridad automáticas (
unattended-upgrades).SSH Hardening
Deshabilita login de root, configura solo autenticación por clave (en niveles altos), cambia parámetros del servidor SSH.
Firewall UFW
Configura reglas de UFW. En nivel
moderate+ cierra todos los puertos excepto los explícitamente permitidos.Fail2Ban
Bloqueo automático de IPs con intentos de fuerza bruta contra SSH y otros servicios.
auditd
Configura el subsistema de auditoría del kernel para registrar accesos a archivos sensibles y cambios de privilegios.
Lynis
Ejecuta el escáner de auditoría de seguridad Lynis y genera un informe detallado del estado del sistema.
ClamAV
Instala y configura el antivirus ClamAV con escaneos programados y actualización automática de firmas.
Scanners de Rootkits
Instala
rkhunter y chkrootkit para detección de rootkits y malware a nivel de sistema.AIDE — Integridad de Archivos
Configura AIDE (Advanced Intrusion Detection Environment) para detectar cambios no autorizados en archivos del sistema.
Parámetros de Kernel (sysctl)
Aplica configuraciones de seguridad al kernel: deshabilita IPv4/IPv6 forwarding, SYN cookies, protección contra ataques de red.
Memoria Compartida
Asegura
/dev/shm con opciones de montaje noexec,nodev,nosuid para prevenir ejecución de código malicioso.AppArmor
Configura y activa perfiles de AppArmor para confinar aplicaciones con acceso limitado al sistema de archivos y red.
Políticas de Contraseñas
Configura PAM con políticas de contraseñas fuertes: longitud mínima, complejidad, historial e intentos fallidos.
Acceso Root
Restringe el acceso directo de root: deshabilita login en consola, limita el uso de
su solo al grupo sudo.Configuración IPv6
Endurece o deshabilita IPv6 según el nivel de seguridad y las necesidades del entorno (previa confirmación interactiva).
Políticas USB
Restringe el uso de dispositivos USB. En nivel
high+ se bloquea el montaje automático de nuevos dispositivos.Deshabilitar FS sin usar
Carga en lista negra módulos de sistemas de archivos no necesarios (cramfs, freevxfs, jffs2, hfs, etc.).
Seguridad de Boot
Asegura la configuración de GRUB: parámetros del kernel seguros, restricciones de acceso al modo recovery.
NTP — Sincronización de Tiempo
Configura la sincronización segura de tiempo, necesaria para la correcta correlación de logs y certificados.
Remover Paquetes Innecesarios
Desinstala paquetes superfluos que amplían la superficie de ataque sin aportar funcionalidad necesaria.
Informe de Seguridad
Genera un informe HTML detallado en
/root/security_hardening_report_*.html con el estado antes/después.Caso de Uso: Escritorio Local
Para entornos de escritorio Ubuntu con GNOME, el nivel
moderate por defecto es el más equilibrado.bash — escritorio Ubuntu (recomendado)
# 1. Siempre hacer dry-run primero
sudo ./fortress_improved.sh --dry-run -v
# 2. Aplicar (modo interactivo, level moderate)
sudo ./fortress_improved.sh
# 3. Reiniciar
sudo reboot
# 4. Verificar el hardening aplicado
sudo ./verify_fortress.sh
Caso de Uso: Servidor Remoto
En servidores remotos, el nivel
high no interactivo es lo recomendado — pero DEBES configurar las claves SSH antes de ejecutar el script.
🚨 ADVERTENCIA SERVIDORES REMOTOS: El nivel
Orden obligatorio: (1) Configura claves SSH → (2) Prueba el acceso con clave → (3) Ejecuta el script.
high deshabilita la autenticación por contraseña en SSH. Si ejecutas el script sin tener una clave SSH configurada y probada, quedarás bloqueado fuera del servidor sin posibilidad de recuperación remota.
Orden obligatorio: (1) Configura claves SSH → (2) Prueba el acceso con clave → (3) Ejecuta el script.
bash — servidor remoto (nivel high, no interactivo)
# ANTES: verificar que el acceso SSH por clave funciona
ssh -i ~/.ssh/tu_clave usuario@servidor
# Dry-run en servidor
sudo ./fortress_improved.sh --dry-run -v -l high
# Aplicar: nivel high, no interactivo (ideal para scripts)
sudo ./fortress_improved.sh -l high -n
# Reiniciar el servidor
sudo reboot