GNU/Linux >> Tutoriels Linux >  >> Linux

Comment lire les rapports Lynis pour améliorer la sécurité Linux

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écutez updatedb ou locate.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-7408

Rechercher 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ée SSH_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 un for 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 type

Une 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 6

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 de grep , 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.net

L'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.


Linux
  1. Analysez votre sécurité Linux avec Lynis

  2. Comment améliorer le temps de démarrage des applications sous Linux

  3. Linux - Exécuter Vs Lire Bit. Comment fonctionnent les autorisations de répertoire sous Linux ?

  4. Linux – Comment réparer/installer/réinstaller Grub ?

  5. Comment lire le journal d'audit sous Linux

Comment améliorer les performances de la batterie d'un ordinateur portable sous Linux

Comment améliorer la sécurité des systèmes Linux à l'aide de Firejail

Comment nous utilisons Linux Test Project pour tester et améliorer Linux

Comment utiliser l'outil d'audit de sécurité Lynis Linux sur Ubuntu

Comment exécuter un audit de sécurité sur AlmaLinux avec Lynis

Comment améliorer la sécurité SSH sur Ubuntu 18.04