
Uno strumento di audit di sicurezza per UNIX basato su diversi framework di sicurezza.

Lockdown UNIX Audit e Reporting
Versione corrente 15.9.1
Fai riferimento a lunar.sh e al changelog per informazioni sulla versione più aggiornate
CC BY-SA: https://creativecommons.org/licenses/by-sa/4.0/
Supportami qui: https://ko-fi.com/richardatlateralblast
Esegui questo codice solo in modalità audit, ad esempio con l'opzione -a o --audit. Esegui il lockdown a tuo rischio. Come per qualsiasi modifica al sistema, fai dei backup. Sto lavorando per migliorare la modalità di ripristino, ma potrebbero ancora esserci bug.
Ho cercato di pulire questo script il più possibile usando shellcheck, e ho abilitato l'opzione per utilizzare i flag -e (errexit) e -u (nounset) della shell per aiutare a proteggere dagli errori. Il flag -x (xtrace) della shell può essere attivato usando lo script con l'opzione -Q o --debug.
In corso:
Questo script genera un report di audit con punteggio della sicurezza di un host Unix. Si basa sul CIS e altri framework. Dove possibile, ci sono riferimenti al CIS e ad altri benchmark nella documentazione del codice.
Perché uno script shell? Volevo uno strumento in grado di funzionare su sistemi bloccati dove altri strumenti potrebbero non essere disponibili. Volevo anche uno strumento che funzionasse su tutte le versioni di UNIX. Detto questo, ci sono alcune differenze tra sh e bash, quindi ho usato solo funzioni di sh.
Non c'è alcuna garanzia implicita o fornita con questo script. La mia raccomandazione è di usare questo script solo in modalità audit, e di affrontare ogni avviso individualmente tramite policy, documentazione e gestione della configurazione.
Non sono assolutamente un programmatore, quindi ci saranno sicuramente bug e modi migliori per affrontare le cose in questo script, quindi un sincero ringraziamento alle persone che hanno fornito feedback, aggiornamenti e patch per correggere bug/funzionalità nel codice.
Può anche eseguire un lockdown. A differenza di altri script, ho aggiunto la capacità di annullare le modifiche. I file vengono salvati usando cpio in una directory basata sulla data.
Sebbene possa eseguire un lockdown, come detto in precedenza, ti consiglio di affrontare gli avvisi tramite policy, documentazione e gestione della configurazione. È così che uso lo strumento. L'audit dei servizi AWS supporta solo la generazione di report, non fornisce capacità di lockdown.
I seguenti sistemi operativi sono supportati:
Il supporto per Windows richiederebbe l'installazione di software aggiuntivo, quindi non l'ho considerato. Detto questo, il supporto per Windows potrebbe arrivare in futuro tramite bash.
I seguenti servizi sono supportati:
L'audit dei servizi AWS utilizza l'AWS CLI e, come tale, richiede un utente con i diritti appropriati. Attualmente non supporta la capacità di lockdown, supporta solo la generazione di un report di audit secondo il benchmark CIS.
Ci sono alcuni controlli che possono essere eseguiti o risolti solo tramite GUI. Un esempio è l'abilitazione della fatturazione. Fai riferimento al benchmark CIS per maggiori informazioni.
Dove possibile, ho inserito comandi di fix suggeriti nell'output verboso dell'audit. Ancora una volta, in alcuni casi, questi possono essere eseguiti solo tramite CLI. Fai riferimento al benchmark CIS per maggiori informazioni.
Inoltre, ho aggiunto una modalità di raccomandazioni che verifica AWS rispetto alle best practice disponibili pubblicamente da aziende come Cloud Conformity.
È supportato il seguente output per la gestione della configurazione:
Questa opzione produce codice/stanza di esempio per la gestione della configurazione Ansible per implementare la raccomandazione.
Per UNIX:
Per AWS:
Per Azure:
Usage: ./lunar.sh -switch|--switch
switch(es):
-----------
-1|--list)
List changes/backups
-2|--tests)
Print tests
-3|--printfunct)
Print function
-4|--dryrun)
Run in dryrun mode
-6|--format)
Outpt format/type
-7|--file)
Output file
-8|--usesudo)
Use sudo
-9|--shellcheck)
Run shellcheck against script
-0|--force)
Force action
-a|--audit)
Run in audit mode (for Operating Systems - no changes made to system)
-A|--fullaudit)
Run in audit mode and include filesystems (for Operating Systems - no changes made to system)
-b|--backups|--listbackups)
List backups
-B|--basedir)
Set base directory
-c|--codename|--distro)
Distro/Code name (used with docker/multipass)
-C|--shell)
Run docker-compose testing suite (drops to shell in order to do more testing)
-d|--dockeraudit)
Run in audit mode (for Docker - no changes made to system)
-D|--dockertests)
List all Docker functions available to selective mode
-e|--host)
Run in audit mode on external host (for Operating Systems - no changes made to system)
-E|--hash|--passwordhash)
Password hash
-f|--action)
Action (e.g delete - used with multipass)
-F|--tempfile)
Temporary file to use for operations
-g|--giturl)
Git URL for code to copy to container
-G|--wheelgroup)
Set wheel group
-h|--help)
Display help
-H|--usage)
Display usage
-i|--anacron)
Enable/Disable anacron
-I|--type)
Audit type
-k|--kubeaudit)
Run in audit mode (for Kubernetes - no changes made to system)
-K|--function|--test)
Do a specific function
-l|--lockdown)
Run in lockdown mode (for Operating Systems - changes made to system)
-L|--fulllockdown|fulllock)
Run in lockdown mode (for Operating Systems - changes made to system)
-m|--machine|--vm)
Set virtualisation type
-M|--workdir)
Set work directory
-n|--ansible)
Output ansible
-N|--nocat)
Do output cat in score
-o|--os|--osver)
Set OS version
-O|--osinfo|--systeminfo)
Print OS/System information
-p|--previous)
Print previous audit information
-P|--sshsandbox|--sandbox)
Enable/Disabe SSH sandbox
-q|--quiet|--nostrict)
Run in quiet mode
-Q|--debug)
Run in debug mode
-r|--awsregion|--region)
Set AWS region
-R|--moduleinfo|--testinfo)
Print information about a module
-s|--select|--check)
Run in selective mode (only run tests you want to)
-S|--unixtests|--unix)
List UNIX tests
-t|--tag|--name)
Set docker tag
-T|--tempdir)
Set temp directoru
-u|--undo)
Undo lockdown (for Operating Systems - changes made to system)
-U|--dofiles)
Include filesystems
-v|--verbose)
Run in verbose mode
-V|--version)
Print version
-w|--awsaudit)
Run in audit mode (for AWS - no changes made to system)
-W|--awstests|--aws)
List all AWS functions available to selective mode
-x|--awsrec)
Run in recommendations mode (for AWS - no changes made to system)
-X|--strict)
Run shellcheck against script
-z)
Run specified audit function in lockdown mode
-Z|--changes|--listchanges)
List changes
Esegui audit completo (senza controlli ricorsivi del filesystem):
./lunar.sh --audit
Elenca i test:
./lunar.sh --tests
Elenca i test AWS:
./lunar.sh --tests aws
Esegui un test specifico:
./lunar.sh --audit --select remote_shell
Crea una VM multipass Ubuntu 24.04 per i test:
./lunar.sh --action create --machine multipass --osver 24.04
Per maggiori informazioni fai riferimento alla wiki:
Aggiunto un semplice framework di test per il debug dello script lunar stesso. Questo utilizza docker compose per avviare un container, montare la directory lunar ed eseguire lunar.