
Uma ferramenta de auditoria de segurança UNIX baseada em várias estruturas de segurança.

Auditoria e Relatórios de Bloqueio UNIX
Versão atual 15.9.1
Consulte lunar.sh e o changelog para informações de versão mais atualizadas
CC BY-SA: https://creativecommons.org/licenses/by-sa/4.0/
Me apoie aqui: https://ko-fi.com/richardatlateralblast
Execute este código apenas em modo de auditoria, por exemplo, com a opção -a ou --audit. Execute o bloqueio por sua conta e risco. Como em qualquer alteração no sistema, tenha backups. Estou trabalhando para melhorar o modo de recuperação, mas ainda pode haver bugs.
Tentei limpar este script o máximo possível usando shellcheck, e habilitei a opção de usar as flags de shell -e (errexit) e -u (nounset) para ajudar a proteger contra erros. A flag de shell -x (xtrace) pode ser ativada usando o script com a flag -Q ou --debug.
Em andamento:
Este script gera um relatório de auditoria pontuado da segurança de um host Unix. Ele é baseado no CIS e em outros frameworks. Sempre que possível, há referências ao CIS e outros benchmarks na documentação do código.
Por que um script shell? Eu queria uma ferramenta que pudesse ser executada em sistemas bloqueados onde outras ferramentas podem não estar disponíveis. Também queria uma ferramenta que rodasse em todas as versões do UNIX. Dito isso, existem algumas diferenças entre sh e bash, então usei funções apenas do sh.
Não há garantia implícita ou explícita com este script. Minha recomendação é usar este script apenas no modo de auditoria e tratar cada aviso individualmente por meio de política, documentação e gerenciamento de configuração.
Não sou de forma alguma um programador, então certamente existem bugs e maneiras melhores de abordar as coisas neste script, então um sincero agradecimento às pessoas que forneceram feedback, atualizações e patches para corrigir bugs/features no código.
Ele também pode realizar um bloqueio. Diferente de alguns outros scripts, adicionei a capacidade de reverter alterações. Os arquivos são copiados usando cpio para um diretório baseado na data.
Embora possa realizar um bloqueio, como dito anteriormente, recomendo que você trate os avisos por meio de política, documentação e gerenciamento de configuração. É assim que uso a ferramenta. A auditoria de Serviços AWS suporta apenas relatórios, não oferece capacidade de bloqueio.
Os seguintes sistemas operacionais são suportados:
O suporte ao Windows exigiria a instalação de software adicional, então não investiguei. Dito isso, o suporte ao Windows pode vir no futuro via bash.
Os seguintes serviços são suportados:
A auditoria de Serviços AWS usa a AWS CLI e, como tal, requer um usuário com os direitos apropriados. Atualmente, não suporta a capacidade de bloqueio, apenas gera um relatório de auditoria de acordo com o benchmark CIS.
Existem algumas verificações que só podem ser feitas ou resolvidas via GUI. Um exemplo disso é a ativação de faturamento. Consulte o Benchmark CIS para mais informações.
Sempre que possível, coloquei comandos de correção sugeridos na saída de auditoria detalhada. Novamente, em alguns casos, estes só podem ser feitos pela CLI. Consulte o Benchmark CIS para mais informações.
Além disso, adicionei um modo de recomendações que verifica a AWS contra as melhores práticas disponíveis publicamente de empresas como a Cloud Conformity.
A seguinte saída de gerenciamento de configuração é suportada:
Esta opção gera exemplos de código/estrofes de gerenciamento de configuração Ansible para implementar a recomendação.
Para UNIX:
Para AWS:
Para 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
Realizar auditoria completa (sem verificações recursivas do sistema de arquivos):
./lunar.sh --audit
Listar testes:
./lunar.sh --tests
Listar testes AWS:
./lunar.sh --tests aws
Realizar um teste específico:
./lunar.sh --audit --select remote_shell
Criar uma VM multipass Ubuntu 24.04 para teste:
./lunar.sh --action create --machine multipass --osver 24.04
Para mais informações, consulte a wiki:
Adicionado um framework de teste simples para depurar o próprio script lunar. Isso usa docker compose para iniciar um container, montar o diretório lunar e executar o lunar.