
Un outil d'audit de sécurité UNIX basé sur plusieurs frameworks de sécurité.

Audit et Verrouillage UNIX
Version actuelle 15.9.1
Reportez-vous à lunar.sh et au changelog pour des informations de version plus à jour.
CC BY-SA: https://creativecommons.org/licenses/by-sa/4.0/
Soutenez-moi ici : https://ko-fi.com/richardatlateralblast
Exécutez ce code uniquement en mode audit, par exemple avec l'option -a ou --audit. Exécutez le verrouillage à vos propres risques. Comme pour toute modification système, faites des sauvegardes. Je travaille à améliorer le mode de récupération, mais il peut encore y avoir des bugs.
J'ai essayé de nettoyer ce script autant que possible en utilisant shellcheck, et j'ai activé l'option d'utiliser les indicateurs de shell -e (errexit) et -u (nounset) pour aider à se protéger contre les erreurs. L'indicateur de shell -x (xtrace) peut être activé en utilisant le script avec l'option -Q ou --debug.
En cours :
Ce script génère un rapport d'audit noté de la sécurité d'un hôte Unix. Il est basé sur le CIS et d'autres frameworks. Lorsque c'est possible, il y a des références au CIS et à d'autres benchmarks dans la documentation du code.
Pourquoi un script shell ? Je voulais un outil capable de s'exécuter sur des systèmes verrouillés où d'autres outils peuvent ne pas être disponibles. Je voulais aussi un outil qui fonctionne sur toutes les versions d'UNIX. Cela dit, il existe des différences entre sh et bash, j'ai donc utilisé uniquement des fonctions de sh.
Il n'y a aucune garantie implicite ou donnée avec ce script. Ma recommandation est d'utiliser ce script uniquement en mode audit, et de traiter chaque avertissement individuellement via la politique, la documentation et la gestion de configuration.
Je ne suis en aucun cas un codeur, donc il y a forcément des bugs et de meilleures façons d'aborder les choses dans ce script, donc un sincère merci aux personnes qui ont fourni des retours, des mises à jour et des correctifs pour résoudre les bugs/ajouter des fonctionnalités dans le code.
Il peut également effectuer un verrouillage. Contrairement à d'autres scripts, j'ai ajouté une capacité à annuler les modifications. Les fichiers sont sauvegardés en utilisant cpio dans un répertoire basé sur la date.
Bien qu'il puisse effectuer un verrouillage, comme indiqué précédemment, je vous recommande de traiter les avertissements via la politique, la documentation et la gestion de configuration. C'est ainsi que j'utilise l'outil. L'audit des services AWS ne prend en charge que le rapport, il ne fournit pas de capacité de verrouillage.
Les systèmes d'exploitation suivants sont pris en charge :
Le support Windows nécessiterait l'installation de logiciels supplémentaires, donc je ne m'y suis pas penché. Cela dit, le support Windows pourrait venir à l'avenir via bash.
Les services suivants sont pris en charge :
L'audit des services AWS utilise l'AWS CLI et nécessite donc un utilisateur disposant des droits appropriés. Il ne prend actuellement pas en charge la capacité de verrouillage, il ne supporte que la génération d'un rapport d'audit par rapport au benchmark CIS.
Il y a quelques vérifications qui ne peuvent être effectuées ou résolues que via l'interface graphique. Un exemple est l'activation de la facturation. Reportez-vous au benchmark CIS pour plus d'informations.
Lorsque c'est possible, j'ai mis des commandes de correction suggérées dans la sortie d'audit verbeuse. Là encore, dans certains cas, celles-ci ne peuvent être effectuées que par la CLI. Reportez-vous au benchmark CIS pour plus d'informations.
De plus, j'ai ajouté un mode de recommandations qui vérifie AWS par rapport aux meilleures pratiques disponibles publiquement provenant d'entreprises comme Cloud Conformity.
Les sorties de gestion de configuration suivantes sont prises en charge :
Cette option produit des exemples de code/stances de gestion de configuration ansible pour implémenter la recommandation.
Pour UNIX :
Pour AWS :
Pour Azure :
Usage: ./lunar.sh -switch|--switch
switch(es):
-----------
-1|--list)
Liste les modifications/sauvegardes
-2|--tests)
Affiche les tests
-3|--printfunct)
Affiche la fonction
-4|--dryrun)
Exécute en mode simulation
-6|--format)
Format/type de sortie
-7|--file)
Fichier de sortie
-8|--usesudo)
Utilise sudo
-9|--shellcheck)
Exécute shellcheck sur le script
-0|--force)
Force l'action
-a|--audit)
Exécute en mode audit (pour les systèmes d'exploitation - aucune modification apportée au système)
-A|--fullaudit)
Exécute en mode audit et inclut les systèmes de fichiers (pour les systèmes d'exploitation - aucune modification apportée au système)
-b|--backups|--listbackups)
Liste les sauvegardes
-B|--basedir)
Définit le répertoire de base
-c|--codename|--distro)
Distribution/Nom de code (utilisé avec docker/multipass)
-C|--shell)
Exécute la suite de tests docker-compose (passe en shell pour effectuer plus de tests)
-d|--dockeraudit)
Exécute en mode audit (pour Docker - aucune modification apportée au système)
-D|--dockertests)
Liste toutes les fonctions Docker disponibles pour le mode sélectif
-e|--host)
Exécute en mode audit sur un hôte externe (pour les systèmes d'exploitation - aucune modification apportée au système)
-E|--hash|--passwordhash)
Hachage de mot de passe
-f|--action)
Action (ex. delete - utilisé avec multipass)
-F|--tempfile)
Fichier temporaire à utiliser pour les opérations
-g|--giturl)
URL Git pour copier le code dans le conteneur
-G|--wheelgroup)
Définit le groupe wheel
-h|--help)
Affiche l'aide
-H|--usage)
Affiche l'utilisation
-i|--anacron)
Activer/Désactiver anacron
-I|--type)
Type d'audit
-k|--kubeaudit)
Exécute en mode audit (pour Kubernetes - aucune modification apportée au système)
-K|--function|--test)
Effectue une fonction spécifique
-l|--lockdown)
Exécute en mode verrouillage (pour les systèmes d'exploitation - modifications apportées au système)
-L|--fulllockdown|fulllock)
Exécute en mode verrouillage (pour les systèmes d'exploitation - modifications apportées au système)
-m|--machine|--vm)
Définit le type de virtualisation
-M|--workdir)
Définit le répertoire de travail
-n|--ansible)
Sortie ansible
-N|--nocat)
N'affiche pas le cat dans le score
-o|--os|--osver)
Définit la version du système d'exploitation
-O|--osinfo|--systeminfo)
Affiche les informations du système d'exploitation/système
-p|--previous)
Affiche les informations d'audit précédentes
-P|--sshsandbox|--sandbox)
Activer/Désactiver le sandbox SSH
-q|--quiet|--nostrict)
Exécute en mode silencieux
-Q|--debug)
Exécute en mode débogage
-r|--awsregion|--region)
Définit la région AWS
-R|--moduleinfo|--testinfo)
Affiche les informations sur un module
-s|--select|--check)
Exécute en mode sélectif (exécute uniquement les tests que vous voulez)
-S|--unixtests|--unix)
Liste les tests UNIX
-t|--tag|--name)
Définit le tag docker
-T|--tempdir)
Définit le répertoire temporaire
-u|--undo)
Annule le verrouillage (pour les systèmes d'exploitation - modifications apportées au système)
-U|--dofiles)
Inclut les systèmes de fichiers
-v|--verbose)
Exécute en mode verbeux
-V|--version)
Affiche la version
-w|--awsaudit)
Exécute en mode audit (pour AWS - aucune modification apportée au système)
-W|--awstests|--aws)
Liste toutes les fonctions AWS disponibles pour le mode sélectif
-x|--awsrec)
Exécute en mode recommandations (pour AWS - aucune modification apportée au système)
-X|--strict)
Exécute shellcheck sur le script
-z)
Exécute la fonction d'audit spécifiée en mode verrouillage
-Z|--changes|--listchanges)
Liste les modifications
Effectuer un audit complet (sans vérifications récursives du système de fichiers) :
./lunar.sh --audit
Lister les tests :
./lunar.sh --tests
Lister les tests AWS :
./lunar.sh --tests aws
Effectuer un test spécifique :
./lunar.sh --audit --select remote_shell
Créer une VM multipass Ubuntu 24.04 pour les tests :
./lunar.sh --action create --machine multipass --osver 24.04
Pour plus d'informations, reportez-vous au wiki :
Ajout d'un cadre de test simple pour déboguer le script lunar lui-même. Cela utilise docker compose pour démarrer un conteneur, monter le répertoire lunar et exécuter lunar.
bash
#!/bin/bash
export LUNAR_HOME=/lunar
docker-compose up -d
Cela devrait vous donner un shell dans le conteneur