Quand j'ai lu l'article de Gaurav Kamathe Analysez votre sécurité Linux avec Lynis , cela m'a rappelé l'époque où j'étais administrateur système pour le département américain du travail. L'une de mes tâches était de maintenir nos serveurs Unix renforcés. Chaque trimestre, un vérificateur indépendant venait vérifier l'état de sécurité de nos serveurs. Chaque fois que le jour où le vérificateur devait arriver, j'exécutais Security Readiness Review (SRR), un outil d'analyse qui utilisait un grand nombre de scripts pour identifier et signaler tout résultat de sécurité. SRR était open source, donc je pouvais voir tous les scripts source et leurs fonctions. Cela m'a permis d'examiner le code, de déterminer précisément ce qui n'allait pas et de résoudre rapidement chaque problème détecté.
Qu'est-ce que Lynis ?
Plus de ressources Linux
- Aide-mémoire des commandes Linux
- Aide-mémoire des commandes Linux avancées
- Cours en ligne gratuit :Présentation technique de RHEL
- Aide-mémoire sur le réseau Linux
- Aide-mémoire SELinux
- Aide-mémoire sur les commandes courantes de Linux
- Que sont les conteneurs Linux ?
- Nos derniers articles Linux
Lynis est un outil d'audit de sécurité open source qui fonctionne un peu comme SRR en analysant un système Linux et en fournissant des rapports détaillés sur toutes les faiblesses qu'il trouve. Tout comme SRR, il est composé d'un grand nombre de scripts, et chaque script vérifie un élément spécifique, par exemple, les exigences d'âge minimum et maximum du mot de passe.
Après avoir exécuté Lynis, vous pouvez utiliser son rapport pour localiser le script de chaque élément et savoir exactement comment Lynis a vérifié et signalé chaque problème. Vous pouvez également utiliser le même code de script pour créer un nouveau code afin d'automatiser une résolution.
Comment lire les rapports Lynis
Étant donné que l'article de Gaurav couvrait l'installation et l'utilisation de Lynis, dans cet article, je vais montrer quelques exemples de la façon dont vous pouvez lire et utiliser ses rapports.
Pour commencer, exécutez un audit :
# lynis audit system --quick
Une fois terminé, le rapport complet s'affichera sur votre écran. Vers le bas, les Suggestions répertorie tous les éléments qui peuvent devoir être triés pour mieux renforcer le système, ainsi qu'un TEST-ID pour chacun.
Pour renforcer le système et réduire la taille de la liste, commencez à chasser chaque élément. La description dans les Suggestions section peut contenir tout ce dont vous avez besoin pour savoir quelle action entreprendre. Si ce n'est pas le cas, vous pouvez utiliser le show details
commande :
# lynis show details TEST-ID
Par exemple, l'une des suggestions sur mon système est :
La base de données requise pour
locate
Ne peut être trouvé. Exécutezupdatedb
oulocate.updatedb
pour créer ce fichier. [FILE-6410]
Il semble que j'ai juste besoin d'exécuter la commande updatedb
, mais si je veux être sûr, je peux utiliser l'show details
de Lynis choix :
# lynis show details FILE-6410
2020-06-16 20:54:33 Exécution du test ID FILE-6410 (Vérification de la base de données de localisation)
2020-06-16 20:54:33 Test :Vérification de la base de données de localisation /var/lib/locate/locatedb introuvable
2020-06-16 20:54:33 Résultat :fichier /var/lib/locatedb introuvable
2020-06-16 20:54:33 Résultat :fichier /var/lib/slocate/slocate.db introuvable
2020-06-16 20:54:33 Résultat :fichier /var/cache/locate/locatedb introuvable
2020-06-16 20:54:33 Résultat :fichier /var/db/locate.database introuvable
2020-06-16 20:54:33 Résultat :base de données introuvable
2020-06-16 20:54 :33 Suggestion :La base de données requise pour 'localiser' est introuvable. Exécutez 'updatedb' ou 'locate.updatedb' pour créer ce fichier. [test :FILE-6410] [détails :-] [solution :-]
2020-06-16 20:54:33 ====
Ces détails indiquent que Lynis n'a pas pu trouver divers fichiers. Cette affaire est très nette. Je peux exécuter le updatedb
commande et revérifiez ce test :
# mise à jourb
# lynis --tests FILE-6410
De plus, revérifier les détails montre quel fichier a satisfait au test :
# lynis show details FILE-6410
2020-06-16 21:38:40 Exécution du test ID FILE-6410 (Vérification de la base de données de localisation)
2020-06-16 21:38:40 Test :Vérification de la base de données de localisation :fichier /var/lib/locate/locatedb introuvable
2020-06-16 21:38:40 Résultat :fichier /var/lib/locatedb introuvable
2020-06-16 21:38 :40 Résultat :fichier /var/lib/slocate/slocate.db introuvable
2020-06-16 21:38:40 Résultat :fichier /var/cache/locate/locatedb introuvable
2020-06 -16 21:38:40 Résultat :fichier /var/db/locate.database introuvable
2020-06-16 21:38:40 ====
Plonger plus profondément
Beaucoup de suggestions de Lynis ne sont pas aussi simples que celle-ci. Si vous n'êtes pas sûr de ce à quoi une constatation ou une suggestion fait référence, il peut être difficile de savoir comment résoudre le problème. Supposons que vous exécutez Lynis sur un nouveau serveur Linux et qu'il existe plusieurs éléments relatifs au démon Secure Shell (SSH), dont l'un fait référence à MaxAuthTries
réglage :
* Envisagez de renforcer la configuration SSH [SSH-7408]
- Détails :MaxAuthTries (6 --> 3)
https://cisofy.com/lynis/controls/SSH-7408/Pour résoudre ce problème, vous devez connaître l'emplacement des fichiers de configuration SSH. Un administrateur Linux chevronné peut déjà savoir où les trouver, mais si vous ne le savez pas, il existe un moyen de voir où Lynis les a trouvés.
Localiser les scripts de test Lynis
Lynis prend en charge de nombreux systèmes d'exploitation; par conséquent, votre emplacement d'installation peut varier. Sur un système Red Hat Enterprise Linux ou Fedora Linux, utilisez
rpm
pour trouver les fichiers de test :# rpm -ql lynis
Ceci répertorie tous les fichiers de test et indique leur emplacement dans le
lynis/include
annuaire. Recherchez dans ce répertoire le TEST-ID que vous souhaitez connaître (SSH-7408 dans ce cas) :# grep SSH-7408 /usr/share/lynis/include/*
/usr/share/lynis/include/tests_ssh : # Test :SSH-7408Rechercher des problèmes SSH
Le fichier nommé
tests_ssh
contient le TEST-ID, et c'est là que vous pouvez trouver les fonctions d'analyse liées à SSH. Jetez un oeil à ce fichier pour voir les différentes fonctions appelées par le scanner Lynis. La première section définit une liste de répertoires dans une variable appeléeSSH_DAEMON_CONFIG_LOCS
. Les quelques sections suivantes sont chargées de vérifier l'état du démon SSH, de localiser son fichier de configuration et d'identifier sa version. J'ai trouvé le code qui recherche le fichier de configuration dans la section Test SSH-7404, décrit comme "Déterminer l'emplacement du fichier de configuration du démon SSH". Ce code contient unfor
boucle qui recherche les éléments de la liste pour un fichier appelésshd_config
. Je peux utiliser cette logique pour faire ma propre recherche :# find /etc /etc/ssh /usr/local/etc/ssh /opt/csw/etc/ssh -name sshd_config
/etc/ssh/sshd_config
/etc/ssh/sshd_config
find :'/usr/local/etc/ssh' :aucun fichier ou répertoire de ce type
find :'/opt/csw/etc/ssh' :aucun fichier ou répertoire de ce typeUne exploration plus approfondie de ce fichier révèle le code lié à la recherche de SSH-7408. Ce test couvre
MaxAuthTries
et plusieurs autres paramètres. Je peux maintenant trouver la variable dans le fichier de configuration SSH :# grep MaxAuthTries /etc/ssh/sshd_config
#MaxAuthTries 6Résoudre les problèmes de bannière légale
Lynis a également signalé une découverte concernant les bannières légales affichées lorsque vous vous connectez à un système. Sur mon système de bureau à domicile (où je ne m'attends pas à ce que beaucoup d'autres personnes se connectent), je n'ai pas pris la peine de modifier le
issue
par défaut des dossiers. Un système d'entreprise ou gouvernemental est susceptible d'inclure une bannière légale pour avertir les utilisateurs que leurs connexions et leurs activités peuvent être enregistrées et surveillées. Lynis le rapporte avec les tests BANN-7126 et BANN-7130 :* Ajoutez une bannière légale à /etc/issue, pour avertir les utilisateurs non autorisés [BANN-7126]
https://cisofy.com/lynis/controls/BANN-7126/
* Ajouter une bannière légale à /etc/issue.net, pour avertir les utilisateurs non autorisés [BANN-7130]
https://cisofy.com/lynis/controls/BANN-7130/Je ne trouve pas grand-chose sur mon système exécutant Fedora 32 Workstation :
# cat /etc/issue /etc/issue.net
\S
Noyau \r sur un \m (\l)
\S
Noyau \r sur un \m (\l)Je pourrais ajouter quelque chose comme "Tenir à l'écart" ou "Ne rien casser", mais la description du test ne fournit pas suffisamment d'informations pour résoudre le problème, j'ai donc jeté un autre coup d'œil aux scripts Lynis. J'ai remarqué que le
include
répertoire contenait un fichier nommétests_banners
; cela semblait être un bon endroit pour regarder. Avec l'aide degrep
, j'ai vu les tests associés :# grep -E 'BANN-7126|BANN-7130' /usr/share/lynis/include/tests_banners
# Test :BANN-7126
Register --test-no BANN-7126 - -preqs-met ${PREQS_MET} --weight L --network NO --category security --description "Vérifier le contenu du fichier de bannière de problème"
# Test :BANN-7130
S'inscrire --test-no BANN-7130 --preqs-met ${PREQS_MET} --weight L --network NO --category security --description "Vérifier le contenu du fichier de bannière issue.net"Après avoir examiné le code associé dans le fichier du test, j'ai découvert que ces deux tests parcouraient certains termes juridiques prédéfinis avec un
for
boucle :for ITEM in ${LEGAL_BANNER_STRINGS}; do
Ces mentions légales sont stockées dans la variable
LEGAL_BANNER_STRINGS
défini en haut du fichier. Revenir en haut affiche la liste complète :LEGAL_BANNER_STRINGS="audit access authori condition connect consent continu criminal enforce evidence forbidden intrusion law legal legislat log monitor owner penal policy policies privacy private prohibited record restricted secure subject system terms warning"
Mes premières suggestions ("tenir à l'écart" et "ne rien casser") n'auraient pas satisfait le test, car elles ne contiennent aucun mot de cette liste.
Ce message de bannière contient plusieurs des mots requis, et par conséquent, il satisfera à ce test et empêchera Lynis de le signaler :
Attention, en continuant à vous connecter à ce système, vous consentez à ce que le propriétaire stocke un journal de toutes les activités. L'accès non autorisé est interdit.
Notez que ce message doit être ajouté à la fois à
/etc/issue
et/etc/issue.net
.Le rendre reproductible
Vous pouvez effectuer ces modifications manuellement, mais vous pouvez plutôt envisager l'automatisation. Par exemple, il peut y avoir de nombreux paramètres à modifier ou vous devrez peut-être effectuer ces modifications régulièrement sur de nombreux serveurs. La création d'un script de durcissement serait un excellent moyen de rationaliser ce processus. Pour les configurations SSH, certains
sed
Les commandes de votre script de durcissement résoudront ces problèmes. Vous pouvez également utiliser une instruction echo pour ajouter les bannières légales :sed -i '/MaxAuthTries/s/#MaxAuthTries 6/MaxAuthTries 3/' /etc/ssh/sshd_config
echo "Legal Banner" | tee -a /etc/issue /etc/issue.netL'automatisation vous permet de créer un script reproductible qui peut être enregistré et géré dans votre infrastructure. Vous pouvez également incorporer ce script dans le provisionnement initial de votre serveur.
Renforcez votre système
Ce type d'exercice peut améliorer vos compétences en rédaction de scripts en suivant le code existant et en écrivant vos propres scripts. Parce qu'il est open source, Lynis permet de voir facilement sous le capot comment votre système est vérifié et ce que signifient ses rapports. Le résultat final sera un système bien renforcé que vous pourrez montrer à chaque fois que ces auditeurs se présenteront.