
Auditoria de distribuição Debian GNU/Linux endurecida
Auditoria de distribuições endurecidas Debian GNU/Linux e CentOS 8.
O ambiente de teste principal é Debian GNU/Linux 9/10/11/12/13, CentOS 8 e Ubuntu 22, e outras versões não foram totalmente testadas. Não há implementações de itens relacionados a desktop nesta versão.
A estrutura do código é baseada no projeto OVH-debian-cis, modificamos algumas implementações originais de acordo com as características do Debian 9/10/11/12/13 e CentOS 8, adicionamos e implementamos itens de verificação para STIG Red_Hat_Enterprise_Linux_7_V2R5 STIG Ubuntu V1R2 e recomendações do cisecurity.org, e também adicionamos e implementamos alguns itens de verificação da comunidade HardenedLinux. As funções de auditoria e aplicação da infraestrutura são implementadas, e a função de correção automática é implementada para os itens que podem ser corrigidos automaticamente.
# bash bin/hardening.sh --audit-all
[...]
hardening [INFO] Treating /home/test/harbian-audit/bin/hardening/13.15_check_duplicate_gid.sh
13.15_check_duplicate_gid [INFO] Working on 13.15_check_duplicate_gid
13.15_check_duplicate_gid [INFO] Checking Configuration
13.15_check_duplicate_gid [INFO] Performing audit
13.15_check_duplicate_gid [ OK ] No duplicate GIDs
13.15_check_duplicate_gid [ OK ] Check Passed
[...]
################### SUMMARY ###################
Total Available Checks : 271
Total Checks Run : 271
Total Passed Checks : [ 226/271 ]
Total Failed Checks : [ 44/271 ]
Enabled Checks Percentage : 100.00 %
Conformity Percentage : 83.39 %
$ git clone https://github.com/hardenedlinux/harbian-audit.git && cd harbian-audit
# cp etc/default.cfg /etc/default/cis-hardening
# sed -i "s#CIS_ROOT_DIR=.*#CIS_ROOT_DIR='$(pwd)'#" /etc/default/cis-hardening
# bin/hardening.sh --init
# bin/hardening.sh --audit-all
hardening [INFO] Treating /home/test/harbian-audit/bin/hardening/1.1_install_updates.sh
1.1_install_updates [INFO] Working on 1.1_install_updates
1.1_install_updates [INFO] Checking Configuration
1.1_install_updates [INFO] Performing audit
1.1_install_updates [INFO] Checking if apt needs an update
1.1_install_updates [INFO] Fetching upgrades ...
1.1_install_updates [ OK ] No upgrades available
1.1_install_updates [ OK ] Check Passed
[...]
################### SUMMARY ###################
Total Available Checks : 284
Total Checks Run : 284
Total Passed Checks : [ 260/284 ]
Total Failed Checks : [ 24/284 ]
Enabled Checks Percentage : 100.00 %
Conformity Percentage : 91.55 %
# bin/hardening.sh --set-hardening-level 5
# bin/hardening.sh --apply
hardening [INFO] Treating /home/test/harbian-audit/bin/hardening/1.1_install_updates.sh
1.1_install_updates [INFO] Working on 1.1_install_updates
1.1_install_updates [INFO] Checking Configuration
1.1_install_updates [INFO] Performing audit
1.1_install_updates [INFO] Checking if apt needs an update
1.1_install_updates [INFO] Fetching upgrades ...
1.1_install_updates [ OK ] No upgrades available
1.1_install_updates [INFO] Applying Hardening
1.1_install_updates [ OK ] No Upgrades to apply
1.1_install_updates [ OK ] Check Passed
[...]
Se usar a instalação via rede a partir de um CD minimalista para instalar Debian GNU/Linux, é necessário instalar pacotes antes de usar a ferramenta de endurecimento.
# apt-get install -y bc net-tools pciutils network-manager
Redhat/CentOS precisa instalar pacotes antes de usar a ferramenta de endurecimento:
# yum install -y bc net-tools pciutils NetworkManager epel-release
Você deve definir uma senha para todos os usuários antes do endurecimento. Caso contrário, não será possível fazer login após a conclusão do endurecimento. Exemplo (usuário do SO: root e test):
# passwd
# passwd test
Os scripts de endurecimento estão em bin/hardening. Cada script tem um arquivo de configuração correspondente em etc/conf.d/[script_name].cfg.
Cada script de endurecimento pode ser habilitado individualmente a partir de seu arquivo de configuração. Por exemplo, este é o arquivo de configuração padrão para disable_system_accounts:
# Configuration for script of same name
status=disabled
# Put here your exceptions concerning admin accounts shells separated by spaces
EXCEPTIONS=""
O parâmetro status pode assumir 3 valores:
disabled (não faz nada): O script não será executado.audit (somente leitura): O script verificará se alguma alteração deve ser aplicada.enabled (leitura/escrita): O script verificará se alguma alteração deve ser feita e aplicará automaticamente o que puder.Você também pode definir o item de configuração para habilitar modificando o nível, com o seguinte comando:
# bash bin/hardening.sh --audit-all
# bash bin/hardening.sh --set-hardening-level <level>
A configuração global está em etc/hardening.cfg. Este arquivo controla o nível de log e o diretório de backup. Sempre que um script recebe a instrução de editar um arquivo, ele criará um backup com timestamp neste diretório.
Para executar as verificações e aplicar as correções, execute bin/hardening.sh.
Este comando tem 2 modos principais de operação:
--audit: Auditar seu sistema com todos os scripts habilitados e em modo de auditoria--apply: Auditar seu sistema com todos os scripts habilitados e em modo de auditoria e aplicar alterações para scripts habilitadosAdicionalmente, --audit-all pode ser usado para forçar a execução de todos os scripts de auditoria, incluindo os desabilitados. Isso não alterará o sistema.
--audit-all-enable-passed pode ser usado como uma maneira rápida de iniciar sua configuração. Ele executará todos os scripts em modo de auditoria. Se um script passar, ele será automaticamente habilitado para execuções futuras. NÃO use esta opção se você já começou a personalizar sua configuração.
Use o comando para endurecer seu SO:
# bash bin/hardening.sh --apply
Se o rsyslog for usado e você quiser imprimir o log do harbian-audit em um arquivo de log separado, a configuração é a seguinte:
user.info /var/log/harbian-audit.log
user.* -/var/log/user.log
O log será enviado para o arquivo /var/log/harbian-audit.log.
Se você aplicar docs/configurations/etc.iptables.rules.v4.sh às suas regras de firewall e quiser imprimir o log do iptables em um arquivo de log separado, insira as seguintes linhas no rsyslog.conf:
:msg,contains,"FW-" -/var/log/firewalllog.log
& stop
Ao executar --apply e set-hardening-level definido como 5 (o nível mais alto), você precisa fazer o seguinte: