
Audit de distribution Debian GNU/Linux durcie
Audit de distributions durcies Debian GNU/Linux et CentOS 8.
L'environnement de test principal est Debian GNU/Linux 9/10/11/12/13, CentOS 8 et Ubuntu 22. Les autres versions ne sont pas complètement testées. Cette version ne comporte aucune implémentation relative au bureau.
Le cadre du code est basé sur le projet OVH-debian-cis. Certaines implémentations originales ont été modifiées selon les caractéristiques de Debian 9/10/11/12/13 et CentOS 8. Des éléments de vérification ont été ajoutés et implémentés pour les recommandations STIG Red_Hat_Enterprise_Linux_7_V2R5, STIG Ubuntu V1R2 et cisecurity.org, ainsi que certains éléments de vérification par la communauté HardenedLinux. Les fonctions d'audit et d'application de l'infrastructure sont implémentées, et la fonction de correction automatique est implémentée pour les éléments pouvant être corrigés automatiquement.
# 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
[...]
Si vous utilisez une installation réseau à partir d'un CD minimal pour installer Debian GNU/Linux, vous devez installer des paquets avant d'utiliser l'outil de durcissement.
# apt-get install -y bc net-tools pciutils network-manager
Redhat/CentOS nécessite l'installation de paquets avant d'utiliser l'outil de durcissement :
# yum install -y bc net-tools pciutils NetworkManager epel-release
Vous devez définir un mot de passe pour tous les utilisateurs avant le durcissement. Sinon, vous ne pourrez pas vous connecter après la fin du durcissement. Exemple (utilisateur OS : root et test) :
# passwd
# passwd test
Les scripts de durcissement se trouvent dans bin/hardening. Chaque script a un fichier de configuration correspondant dans etc/conf.d/[nom_script].cfg.
Chaque script de durcissement peut être activé individuellement à partir de son fichier de configuration. Par exemple, voici le fichier de configuration par défaut pour disable_system_accounts :
# Configuration for script of same name
status=disabled
# Put here your exceptions concerning admin accounts shells separated by spaces
EXCEPTIONS=""
Le paramètre status peut prendre 3 valeurs :
disabled (ne rien faire) : Le script ne s'exécutera pas.audit (lecture seule) : Le script vérifiera si un changement devrait être appliqué.enabled (lecture-écriture) : Le script vérifiera si un changement doit être effectué et appliquera automatiquement ce qu'il peut.Vous pouvez également définir l'élément de configuration pour activer en modifiant le niveau, avec la commande suivante :
# bash bin/hardening.sh --audit-all
# bash bin/hardening.sh --set-hardening-level <level>
La configuration globale se trouve dans etc/hardening.cfg. Ce fichier contrôle le niveau de journalisation ainsi que le répertoire de sauvegarde. Lorsqu'un script est invité à modifier un fichier, il créera une sauvegarde horodatée dans ce répertoire.
Pour exécuter les vérifications et appliquer les corrections, exécutez bin/hardening.sh.
Cette commande a 2 modes de fonctionnement principaux :
--audit : Auditez votre système avec tous les scripts activés et en mode audit--apply : Auditez votre système avec tous les scripts activés et en mode audit et appliquez les modifications pour les scripts activésDe plus, --audit-all peut être utilisé pour forcer l'exécution de tous les scripts d'audit, y compris ceux désactivés. Cela ne modifiera pas le système.
--audit-all-enable-passed peut être utilisé comme un moyen rapide de démarrer votre configuration. Il exécutera tous les scripts en mode audit. Si un script réussit, il sera automatiquement activé pour les exécutions futures. N'UTILISEZ PAS cette option si vous avez déjà commencé à personnaliser votre configuration.
Utilisez la commande pour durcir votre OS :
# bash bin/hardening.sh --apply
Si rsyslog est utilisé et que vous souhaitez imprimer le journal harbian-audit dans un fichier journal séparé, la configuration est la suivante :
user.info /var/log/harbian-audit.log
user.* -/var/log/user.log
Le journal sera écrit dans le fichier /var/log/harbian-audit.log.
Si vous appliquez docs/configurations/etc.iptables.rules.v4.sh à vos règles de pare-feu et souhaitez imprimer le journal iptables dans un fichier journal séparé, insérez les lignes suivantes dans rsyslog.conf :
:msg,contains,"FW-" -/var/log/firewalllog.log
& stop
Lorsque vous exécutez --apply et que set-hardening-level est défini sur 5 (le niveau le plus élevé), vous devez effectuer les opérations suivantes :