Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CPLHF — Kit modular de herramientas Bash que fortalece los sistemas Debian/Ubuntu para competiciones CyberPatriot, automatizando el endurecimiento de cuentas, firewall, SSH, PAM y servicios con registro y copias de seguridad. | Kitploit
Herramientas/GitHubGitHub/whereisxuezugi/cplhf
Herramientas DefensivasAnálisis de VulnerabilidadesScripting y AutomatizaciónAuditoría de ConfiguraciónAnálisis ForenseCTFPruebas de PenetraciónAprendizaje y EducaciónRespuesta a Incidentes
GitHubwhereisxuezugi/cplhf

CPLHF

Kit modular de herramientas Bash que fortalece los sistemas Debian/Ubuntu para competiciones CyberPatriot, automatizando el endurecimiento de cuentas, firewall, SSH, PAM y servicios con registro y copias de seguridad.

3hace 3 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Ver Repositorio
Compartir

Kit de Endurecimiento de Linux para CyberPatriot

Un kit de herramientas Bash modular para endurecer sistemas de la familia Debian/Ubuntu bajo presión de tiempo en competencia. Construido y refinado a lo largo de múltiples temporadas de la CyberPatriot National Youth Cyber Defense Competition, habiendo alcanzado recientemente el nivel Platinum en la división Linux en la ronda semifinal de 2025.

Esto no es un marco de cumplimiento de propósito general. Es un automatizador de listas de verificación para un ejercicio cronometrado de seis horas: realiza la mayoría scriptable de una pasada de endurecimiento de Linux de forma correcta, rápida e idempotente, registra todo lo que tocó y deja las decisiones de criterio a la persona que lo ejecuta.

Contenido

  • Por qué existe esto
  • Arquitectura
  • Inicio rápido
  • Qué hace realmente
  • Notas de seguridad para la competencia
  • Configuración
  • Estructura del repositorio
  • Pruebas
  • Controles de seguridad y referencias
  • Qué no hace deliberadamente este proyecto
  • Licencia

Por qué existe esto

Las rondas de Linux de CyberPatriot puntúan una imagen en vivo contra una rúbrica que recompensa un conjunto bastante predecible de pasos de endurecimiento -- higiene de cuentas, política de contraseñas, configuración del firewall, exposición de servicios, permisos de archivos, nivel de parches -- bajo un límite de tiempo estricto, generalmente sin aviso previo de exactamente qué vulnerabilidades fueron plantadas. Hacer esa lista de verificación a mano, correctamente, bajo una cuenta regresiva, es donde los equipos pierden puntos fáciles por errores tipográficos y pasos olvidados, no por material desconocido.

Este kit de herramientas comenzó como un único script monolítico escrito bajo exactamente esa presión. Este repositorio es una reescritura de ese script: misma cobertura de la lista de verificación, reestructurado en módulos pequeños y de propósito único que son más fáciles de leer, probar y razonar de forma independiente, con cada decisión no obvia vinculada a una sección específica del CIS Benchmark o a un control de NIST SP 800-53 (ver Controles de seguridad y referencias).

Arquitectura

root@kitploit:~
flowchart TD
    A[bin/harden.sh] --> B[lib/common.sh<br/>logging, backups, run wrapper]
    A --> C[Service-role prompts<br/>or --config file]
    A --> D[lib/packages.sh<br/>updates, attack-tool removal]
    A --> E[lib/firewall.sh<br/>default-deny + ufw]
    A --> F[lib/ssh.sh]
    A --> G[lib/services.sh<br/>samba/ftp/mail/http/mysql/dns]
    A --> H[lib/users.sh<br/>account review, hidden UID 0]
    A --> I[lib/kernel.sh<br/>sysctl hardening]
    A --> J[lib/pam.sh<br/>password policy, lockout]
    A --> K[lib/filesystem.sh<br/>permissions, cron, banners]
    A --> L[lib/monitoring.sh<br/>fail2ban, auditd, rkhunter]
    A --> M[lib/forensics.sh<br/>baseline snapshot]
    D & E & F & G & H & I & J & K & L & M --> N[(~/hardening-run/<br/>log + backups + baseline)]

Cada módulo es cargado por bin/harden.sh, que se encarga del análisis de argumentos, el cuestionario de rol del servicio y el orden de ejecución. Los módulos no se llaman entre sí directamente, y cada comando que cambia el estado en cada módulo pasa por el envoltorio run() en lib/common.sh, lo que le da a todo el proyecto un único lugar para implementar soporte de dry-run, registro consistente y manejo de errores no fatales.

Inicio rápido

root@kitploit:~
git clone <this-repo>
cd cyberpatriot-linux-hardening
sudo ./bin/harden.sh

Se te hará una breve serie de preguntas de sí/no sobre el rol de la máquina (si necesita Samba, FTP, SSH, un servidor web, etc.), y luego se ejecuta de forma desatendida a través de los módulos listados arriba. Un registro, un conjunto completo de copias de seguridad de configuración con marca de tiempo y una instantánea de línea base del sistema se escriben en ~/hardening-run/.

En una ronda real, omite las solicitudes de confirmación por paquete y responde las preguntas de rol desde un archivo de respuestas preparado en lugar de escribirlas en vivo:

root@kitploit:~
cp examples/config.env.example my-machine.env
# edit my-machine.env for this box's actual role
sudo ./bin/harden.sh --config my-machine.env --auto-approve

¿Quieres ver exactamente qué haría antes de que toque algo?

root@kitploit:~
sudo ./bin/harden.sh --dry-run --config my-machine.env

Qué hace realmente

MóduloHace
lib/packages.shActualización completa del sistema; elimina automáticamente crackers de contraseñas y herramientas de explotación; revisa herramientas de doble uso (nmap, Wireshark, netcat) y servicios heredados (VNC, NFS, telnet) antes de eliminarlos
lib/firewall.shDenegar por defecto entrante / permitir por defecto saliente vía ufw, más un bloqueo explícito en un puerto de puerta trasera común conocido
lib/ssh.shCifrados/KEX/MACs modernos, sin inicio de sesión root, límites de conexión y sesión -- o elimina SSH por completo si el rol no lo necesita
lib/services.shSamba, FTP, correo, impresión, MySQL, HTTP, DNS: cada uno se instala y se endurece mínimamente si el rol lo necesita, o se purga y se bloquea con firewall si no
lib/users.shRevisión interactiva de cuentas existentes (derechos de administrador, eliminación, restablecimiento de contraseña), detección de cuentas ocultas con UID 0 y contraseñas vacías
lib/kernel.shConfiguraciones sysctl de la pila de red y autoprotección del kernel (enrutamiento de origen, redirecciones ICMP, ASLR, alcance de ptrace, restricción de dmesg/kptr)
lib/pam.shComplejidad e historial de contraseñas vía pam_pwquality/pam_pwhistory, bloqueo de cuentas vía pam_faillock, caducidad de contraseñas en login.defs
lib/filesystem.shPermisos de archivos principales, restricción de cron/at, un rc.local mínimo, banners legales de inicio de sesión, escaneo de solo lectura de SUID/escribibles por todos/archivos sin propietario
lib/monitoring.shfail2ban y auditd por defecto; ClamAV y un barrido completo de rkhunter/chkrootkit son opcionales (ver Notas de seguridad para la competencia)
lib/forensics.shInstantánea de solo lectura de usuarios, procesos, puertos en escucha y paquetes instalados para comparación posterior

tools/find-port-owner.sh y tools/list-nonstandard-users.sh son pequeñas utilidades independientes para el mismo tipo de trabajo de triaje, utilizables independientemente del script principal -- consulta sus encabezados para el uso.

Notas de seguridad para la competencia

Un script de endurecimiento que rompe la máquina que se supone debe proteger es peor que inútil en una ronda cronometrada. Algunos valores por defecto reflejan eso, y vale la pena entenderlos antes de ejecutar esto de forma desatendida:

  • La autenticación por contraseña de SSH está activada por defecto. La recomendación más estricta del CIS, solo con claves, está a un valor de configuración de distancia (SSH_PASSWORD_AUTH=no), pero el valor por defecto aquí favorece no dejar a un equipo fuera de su propia máquina cuando nadie ha provisionado claves todavía.
  • Las herramientas de doble uso se revisan, no se eliminan automáticamente. nmap, Wireshark, tcpdump y variantes de netcat son herramientas comunes de atacante, pero también son herramientas comunes de administrador, y algunas imágenes de competencia específicamente requieren una de ellas para el rol declarado de la máquina. Se purgan tras confirmación, no silenciosamente.
  • ClamAV y el barrido de rkhunter/chkrootkit son opcionales (INSTALL_CLAMAV, RUN_BASELINE_SCAN), porque son las dos cosas más lentas que este script puede hacer y ninguna cambia el estado del sistema por sí sola. Actívalas si tu lista de verificación las requiere o si tienes tiempo de sobra.
  • Nada aquí verifica la conectividad de tu motor de puntuación. El módulo de firewall por defecto permite todo lo saliente y solo cierra puertos entrantes para servicios que el rol no necesita, pero si tu imagen específica reporta a un servidor de puntuación o agente local a través de un puerto no estándar, eso depende de ti verificarlo -- consulta ~/hardening-run/baseline/listening_ports.txt de una ejecución previa si no estás seguro de qué está realmente escuchando antes de endurecer una máquina por primera vez.
  • Las contraseñas de GRUB no están automatizadas, por la misma razón: una mala contraseña de GRUB puede convertir una pasada de endurecimiento en una máquina que no arranca sin una ruta de recuperación rápida a mitad de ronda. Consulta docs/security-controls.md para el procedimiento manual.
  • Cada módulo es idempotente. Volver a ejecutar el script contra una máquina ya endurecida (por ejemplo, después de que una ejecución parcial fue interrumpida) no duplicará bloques de configuración ni dará error.

Configuración

bin/harden.sh preguntará interactivamente sobre el rol de servicio de la máquina si no respondes de antemano. Para omitir las preguntas, copia examples/config.env.example, completa el rol real y pásalo con --config. Cualquier variable que omitas del archivo recurre a una pregunta interactiva, así que un archivo de configuración parcialmente completo está bien.

root@kitploit:~
sudo ./bin/harden.sh --config my-machine.env

Opciones:

OpciónEfecto
--config FILECarga respuestas de rol/política desde un archivo env
--dry-runRegistra cada acción que se tomaría; no cambia nada
--auto-approveOmite las solicitudes de confirmación de purga por paquete

Estructura del repositorio

root@kitploit:~
.
├── bin/harden.sh                    orchestrator: parses args, asks role questions, runs modules in order
├── lib/
│   ├── common.sh                    logging, backups, idempotent file edits, the run() wrapper
│   ├── packages.sh                  updates, attack-tool removal
│   ├── ssh.sh                       SSH install/removal and hardening
│   ├── services.sh                  samba/ftp/telnet/mail/printing/mysql/http/dns
│   ├── firewall.sh                  ufw default-deny posture
│   ├── users.sh                     account review, hidden UID 0 / empty password detection
│   ├── kernel.sh                    sysctl hardening
│   ├── pam.sh                       password policy, account lockout
│   ├── filesystem.sh                permissions, cron, rc.local, banners, anomaly scan
│   ├── monitoring.sh                fail2ban, auditd, rkhunter, chkrootkit, ClamAV
│   └── forensics.sh                 read-only system baseline snapshot
├── tools/
│   ├── find-port-owner.sh           resolve a listening TCP port to a process path
│   └── list-nonstandard-users.sh    flag UID >= 1000 accounts not on an expected list
├── docs/
│   ├── security-controls.md         every hardening decision, mapped to its source standard
│   └── editor-cheatsheet.md         small editor commands worth remembering under pressure
├── examples/config.env.example      annotated template for non-interactive runs
└── .github/workflows/shellcheck.yml lint on every push/PR

Pruebas

Cada script se analiza con ShellCheck en cada push vía GitHub Actions (.github/workflows/shellcheck.yml). Para verificar localmente antes de abrir un PR:

root@kitploit:~
shellcheck lib/*.sh bin/*.sh tools/*.sh

bin/harden.sh --dry-run es también, en sí mismo, una prueba: ejercita el flujo de control y el registro de cada módulo sin tocar el sistema de archivos ni instalar nada, y es la forma más rápida de verificar un cambio contra una VM desechable antes de ejecutarlo de verdad. Consulta CONTRIBUTING.md para las expectativas completas sobre nuevos módulos (idempotencia, enrutar acciones destructivas a través de run() y citar una fuente para cualquier nuevo paso de endurecimiento).

Controles de seguridad y referencias

El comentario de encabezado de cada módulo y docs/security-controls.md citan la sección específica del estándar detrás de cada decisión. Fuentes primarias utilizadas en todo el proyecto:

EstándarFuente
CIS Ubuntu Linux Benchmarkhttps://www.cisecurity.org/benchmark/ubuntu_linux
NIST SP 800-53 Rev. 5https://csrc.nist.gov/pubs/sp/800/53/r5/upd1/final
DISA STIG for Ubuntuhttps://public.cyber.mil/stigs/downloads/
Mozilla OpenSSH modern configuration guidelineshttps://infosec.mozilla.org/guidelines/openssh
CyberPatriot National Youth Cyber Defense Competitionhttps://www.uscyberpatriot.org/

Herramientas de detección referenciadas (no incluidas en el repositorio, instaladas vía apt): fail2ban, Linux Audit / auditd, rkhunter, chkrootkit. Lynis y OpenSCAP se recomiendan como una auditoría de seguimiento independiente y no son ejecutados automáticamente por este proyecto.

Qué no hace deliberadamente este proyecto

  • Automatizar contraseñas del gestor de arranque GRUB (riesgo de máquina que no arranca; ver arriba)
  • Remediar automáticamente cualquier cosa encontrada por los escaneos de SUID/escribibles por todos/rootkit -- los hallazgos se registran para revisión humana, nunca se actúa sobre ellos automáticamente
  • Descargar o ejecutar herramientas de enumeración ofensiva de ningún tipo
  • Tocar paquetes que no reconoce explícitamente -- un paquete desconocido (que bien podría ser un agente de puntuación) se deja en paz en lugar de adivinarlo
  • Cubrir configuraciones solo de GUI (tiempo de espera de bloqueo de pantalla, preferencias del gestor de actualizaciones, configuración del navegador) -- esas todavía necesitan verificarse a mano

Consulta docs/security-controls.md para el razonamiento completo detrás de cada una de estas.

Licencia

MIT. Ver LICENSE.

Descargar herramienta