Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CPLHF — Toolkit Bash modulare che rafforza i sistemi Debian/Ubuntu per le competizioni CyberPatriot, automatizzando l'hardening di account, firewall, SSH, PAM e servizi con logging e backup. | Kitploit
Strumenti/GitHubGitHub/whereisxuezugi/cplhf
Strumenti DifensiviAnalisi delle VulnerabilitàScripting e AutomazioneAudit di ConfigurazioneInformatica ForenseCTFPenetration TestingApprendimento e FormazioneRisposta agli Incidenti
GitHubwhereisxuezugi/cplhf

CPLHF

Toolkit Bash modulare che rafforza i sistemi Debian/Ubuntu per le competizioni CyberPatriot, automatizzando l'hardening di account, firewall, SSH, PAM e servizi con logging e backup.

33 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Vedi Repository
Condividi

CyberPatriot Linux Hardening Toolkit

Un toolkit Bash modulare per irrobustire sistemi della famiglia Debian/Ubuntu sotto la pressione del tempo di gara. Costruito e perfezionato nel corso di molteplici stagioni della CyberPatriot National Youth Cyber Defense Competition, recentemente classificatosi al livello Platinum nella divisione Linux al turno semifinale del 2025.

Questo non è un framework di conformità generico. È un automatizzatore di checklist per un esercizio a tempo di sei ore: esegue la maggioranza scriptabile di un passaggio di hardening Linux in modo corretto, rapido e idempotente, registra tutto ciò che ha toccato e lascia le decisioni di giudizio alla persona che lo esegue.

Contenuti

  • Perché esiste
  • Architettura
  • Avvio rapido
  • Cosa fa effettivamente
  • Note di sicurezza per la competizione
  • Configurazione
  • Struttura del repository
  • Testing
  • Controlli di sicurezza e riferimenti
  • Cosa questo progetto deliberatamente non fa
  • Licenza

Perché esiste

I round Linux di CyberPatriot valutano un'immagine live rispetto a una rubrica che premia un insieme piuttosto prevedibile di passaggi di hardening -- igiene degli account, policy delle password, configurazione del firewall, esposizione dei servizi, permessi dei file, livello di patch -- entro un limite di tempo rigido, di solito senza preavviso su quali vulnerabilità siano state inserite. Eseguire quella checklist a mano, correttamente, sotto un conto alla rovescia, è dove i team perdono punti facili a causa di errori di battitura e passaggi dimenticati, non per materiale sconosciuto.

Questo toolkit è nato come un singolo script monolitico scritto esattamente sotto quella pressione. Questo repository è una riscrittura di quello script: stessa copertura della checklist, ristrutturata in piccoli moduli monofunzionali che sono più facili da leggere, testare e ragionare in modo indipendente, con ogni decisione non ovvia collegata a una specifica sezione del CIS Benchmark o a un controllo NIST SP 800-53 (vedi Controlli di sicurezza e riferimenti).

Architettura

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)]

Ogni modulo è caricato tramite source da bin/harden.sh, che gestisce il parsing degli argomenti, il questionario sul ruolo del servizio e l'ordine di esecuzione. I moduli non si chiamano direttamente tra loro, e ogni comando che modifica lo stato in ogni modulo passa attraverso il wrapper run() in lib/common.sh, che dà all'intero progetto un unico punto in cui implementare il supporto dry-run, un logging coerente e una gestione degli errori non fatale.

Avvio rapido

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

Ti verrà chiesta una breve serie di domande sì/no sul ruolo della macchina (se necessita di Samba, FTP, SSH, un web server e così via), poi viene eseguito senza supervisione attraverso i moduli elencati sopra. Un log, un set completo di backup di configurazione con timestamp e uno snapshot di baseline del sistema vengono scritti in ~/hardening-run/.

In un round reale, salta i prompt di conferma per singolo pacchetto e rispondi alle domande sul ruolo da un file di risposte preparato invece di digitarle dal 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

Vuoi vedere esattamente cosa farebbe prima che tocchi qualcosa?

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

Cosa fa effettivamente

ModuloFa
lib/packages.shAggiornamento completo del sistema; rimuove automaticamente cracker di password e strumenti di exploitation; esamina strumenti a doppio uso (nmap, Wireshark, netcat) e servizi legacy (VNC, NFS, telnet) prima di rimuoverli
lib/firewall.shDefault-deny in ingresso / default-allow in uscita tramite ufw, più un blocco esplicito su una nota porta backdoor comune
lib/ssh.shCifrari/KEX/MAC moderni, nessun login root, limiti di connessione e sessione -- oppure rimuove completamente SSH se il ruolo non ne ha bisogno
lib/services.shSamba, FTP, mail, printing, MySQL, HTTP, DNS: ciascuno viene installato e minimamente irrobustito se il ruolo ne ha bisogno, oppure rimosso e bloccato dal firewall se no
lib/users.shRevisione interattiva degli account esistenti (diritti admin, cancellazione, reset password), rilevamento di account nascosti con UID 0 e password vuote
lib/kernel.shImpostazioni sysctl per lo stack di rete e l'autoprotezione del kernel (source routing, redirect ICMP, ASLR, scope ptrace, restrizione dmesg/kptr)
lib/pam.shComplessità e cronologia delle password tramite pam_pwquality/pam_pwhistory, blocco account tramite pam_faillock, scadenza password in login.defs
lib/filesystem.shPermessi dei file principali, restrizione cron/at, un rc.local minimale, banner legali di login, scansione in sola lettura di SUID/world-writable/file senza proprietario
lib/monitoring.shfail2ban e auditd per impostazione predefinita; ClamAV e una scansione completa rkhunter/chkrootkit sono opt-in (vedi Note di sicurezza per la competizione)
lib/forensics.shSnapshot in sola lettura di utenti, processi, porte in ascolto e pacchetti installati per confronti successivi

tools/find-port-owner.sh e tools/list-nonstandard-users.sh sono piccole utility autonome per lo stesso tipo di lavoro di triage, utilizzabili indipendentemente dallo script principale -- vedi le loro intestazioni per l'uso.

Note di sicurezza per la competizione

Uno script di hardening che rompe la macchina che dovrebbe proteggere è peggio che inutile in un round a tempo. Alcune impostazioni predefinite lo riflettono, e vale la pena comprenderle prima di eseguirlo senza supervisione:

  • L'autenticazione SSH con password è attiva per impostazione predefinita. La raccomandazione CIS più rigorosa, solo chiavi, è a un valore di configurazione di distanza (SSH_PASSWORD_AUTH=no), ma l'impostazione predefinita qui favorisce il non chiudere fuori un team dalla propria macchina quando nessuno ha ancora provisionato le chiavi.
  • Gli strumenti a doppio uso vengono esaminati, non rimossi automaticamente. nmap, Wireshark, tcpdump e le varianti di netcat sono comuni strumenti da attaccante, ma sono anche comuni strumenti da amministratore, e alcune immagini di competizione richiedono specificamente uno di essi per il ruolo dichiarato della macchina. Vengono rimossi dopo conferma, non silenziosamente.
  • ClamAV e la scansione rkhunter/chkrootkit sono opt-in (INSTALL_CLAMAV, RUN_BASELINE_SCAN), perché sono le due cose più lente che questo script può fare e nessuna delle due modifica lo stato del sistema da sola. Attivale se la tua checklist le richiede o se hai tempo a disposizione.
  • Nulla qui verifica la connettività del tuo scoring engine. Il modulo firewall è impostato per impostazione predefinita su allow-all-outbound e chiude solo le porte in ingresso per i servizi di cui il ruolo non ha bisogno, ma se la tua specifica immagine riporta a un server di scoring o a un agente locale su una porta non standard, sta a te verificarlo -- vedi ~/hardening-run/baseline/listening_ports.txt da un'esecuzione precedente se non sei sicuro di cosa sia effettivamente in ascolto prima di irrobustire una macchina per la prima volta.
  • Le password GRUB non sono automatizzate, per lo stesso motivo: una cattiva password GRUB può trasformare un passaggio di hardening in una macchina non avviabile senza un rapido percorso di ripristino a metà round. Vedi docs/security-controls.md per la procedura manuale.
  • Ogni modulo è idempotente. Rieseguire lo script su una macchina già irrobustita (per esempio, dopo che un'esecuzione parziale è stata interrotta) non duplicherà blocchi di configurazione né andrà in errore.

Configurazione

bin/harden.sh chiederà interattivamente il ruolo di servizio della macchina se non rispondi in anticipo. Per saltare i prompt, copia examples/config.env.example, compila il ruolo effettivo e passalo con --config. Qualsiasi variabile che ometti dal file ricade su un prompt interattivo, quindi un file di configurazione parzialmente compilato va bene.

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

Flag:

FlagEffetto
--config FILECarica le risposte su ruolo/policy da un file env
--dry-runRegistra ogni azione che verrebbe intrapresa; non cambia nulla
--auto-approveSalta i prompt di conferma per la rimozione di singoli pacchetti

Struttura del repository

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

Testing

Ogni script viene analizzato con ShellCheck al push tramite GitHub Actions (.github/workflows/shellcheck.yml). Per verificare localmente prima di aprire una PR:

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

bin/harden.sh --dry-run è anche, di per sé, un test: esercita il flusso di controllo e il logging di ogni modulo senza toccare il filesystem o installare nulla, ed è il modo più rapido per verificare un cambiamento su una VM usa e getta prima di eseguirlo per davvero. Vedi CONTRIBUTING.md per le aspettative complete sui nuovi moduli (idempotenza, instradamento delle azioni distruttive attraverso run() e citazione di una fonte per qualsiasi nuovo passaggio di hardening).

Controlli di sicurezza e riferimenti

Il commento di intestazione di ogni modulo e docs/security-controls.md citano la specifica sezione dello standard alla base di ogni decisione. Fonti primarie utilizzate in tutto il progetto:

StandardFonte
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/

Strumenti di rilevamento referenziati (non inclusi nel repository, installati tramite apt): fail2ban, Linux Audit / auditd, rkhunter, chkrootkit. Lynis e OpenSCAP sono raccomandati come audit successivo e indipendente e non vengono eseguiti automaticamente da questo progetto.

Cosa questo progetto deliberatamente non fa

  • Automatizzare le password del bootloader GRUB (rischio di macchina non avviabile; vedi sopra)
  • Correggere automaticamente qualsiasi cosa trovata dalle scansioni SUID/world-writable/rootkit -- i risultati vengono registrati per la revisione umana, mai gestiti automaticamente
  • Scaricare o eseguire strumenti di enumerazione offensiva di qualsiasi tipo
  • Toccare pacchetti che non riconosce esplicitamente -- un pacchetto sconosciuto (che potrebbe benissimo essere un agente di scoring) viene lasciato stare invece di essere indovinato
  • Coprire impostazioni solo GUI (timeout di blocco schermo, preferenze di update-manager, configurazione del browser) -- quelle devono ancora essere verificate a mano

Vedi docs/security-controls.md per il ragionamento completo dietro ciascuna di queste scelte.

Licenza

MIT. Vedi LICENSE.

Scarica lo strumento