GNU/Linux >> Tutoriels Linux >  >> Linux

Analysez votre sécurité Linux avec Lynis

Avez-vous déjà pensé à la sécurité réelle de votre machine Linux ? Il existe de nombreuses distributions Linux, chacune avec ses propres paramètres par défaut, sur lesquels vous exécutez des dizaines de packages logiciels avec des numéros de version différents, et de nombreux services fonctionnant en arrière-plan, que nous connaissons à peine ou dont nous nous soucions à peine.

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

Pour trouver la posture de sécurité - l'état de sécurité global du logiciel, du réseau et des services exécutés sur votre machine Linux - vous pouvez exécuter quelques commandes et obtenir des informations pertinentes, mais la quantité de données que vous devez analyser est énorme .

Ce serait tellement mieux si vous pouviez simplement exécuter un outil qui génère un rapport sur la posture de sécurité d'une machine. Et heureusement il y en a une :Lynis. Il s'agit d'un outil d'audit de sécurité open source extrêmement populaire qui aide à renforcer les systèmes basés sur Linux et Unix. Selon le projet :

"Il effectue une analyse de sécurité approfondie et s'exécute sur le système lui-même. L'objectif principal est de tester les défenses de sécurité et de fournir des conseils pour un renforcement supplémentaire du système. Il analysera également les informations générales sur le système, les packages logiciels vulnérables et les éventuels problèmes de configuration. Lynis [est] couramment utilisé par les administrateurs système et les auditeurs pour évaluer les défenses de sécurité de leurs systèmes."

Installer Lynis

Lynis peut être disponible dans votre référentiel de logiciels Linux. Si c'est le cas, vous pouvez l'installer en utilisant :

dnf install lynis 

ou

apt install lynis 

Cependant, si la version de votre référentiel n'est pas la plus récente, vous feriez mieux de l'installer à partir de GitHub. (J'utilise un système Red Hat Linux, mais vous pouvez l'exécuter sur n'importe quelle distribution Linux.) Comme pour tous les outils, il est logique de l'essayer d'abord sur une machine virtuelle. Pour l'installer depuis GitHub :

$ cat /etc/redhat-release 
Red Hat Enterprise Linux Server version 7.8 (Maipo)
$
$ uname  -r
3.10.0-1127.el7. x86_64
$
$ git clone https://github.com/CISOfy/lynis.git
Clonage dans 'lynis'...
distant :énumération d'objets :30, terminé .
distant :Comptage d'objets :100 % (30/30), terminé.
distant :Compression d'objets :100 % (30/30), terminé.
distant :Total 12 566 (delta 15 ), réutilisé 8 (delta 0), pack réutilisé 12536
Réception d'objets :100 % (12566/12566), 6,36 Mio | 911,00 Kio/s, terminé.
Résolution des deltas :100 % (9264/9264), terminé.
$

Une fois que vous avez cloné le référentiel, accédez-y et voyez ce qui est disponible. L'outil principal se trouve dans un fichier appelé lynis . C'est en fait un script shell, vous pouvez donc l'ouvrir et lire ce qu'il fait. En fait, Lynis est principalement implémenté à l'aide de scripts shell :

$ cd lynis/
$ ls
CHANGELOG.md        CONTRIBUTING.md  db           developer.prf  FAQ             include  LICENSE  lynis.8  README     SECURITY.md
CODE_OF_CONDUCT.md  CONTRIBUTORS.md  default.md extras         HAPPY_USERS.md  INSTALL  lynis    plugins  README.md
$
$ fichier lynis
lynis :script shell POSIX, texte ASCII exécutable, avec de très longues lignes
$

Exécuter Lynis

Emmenez Lynis faire un tour en lui donnant un -h option pour voir la section Aide :

$ ./lynis -h 

Vous verrez un court écran d'information suivi de toutes les commandes prises en charge par Lynis.

Ensuite, essayez quelques commandes de test pour avoir une idée des choses et vous mettre à l'aise. Pour voir avec quelle version de Lynis vous travaillez, exécutez :

$ ./lynis afficher la version
3.0.0
$

Pour voir toutes les commandes disponibles dans Lynis :

commandes $ ./lynis show

Commandes :
lynis audit
lynis configure
lynis generate
lynis show
lynis update
lynis téléchargement uniquement

$

Auditer un système Linux

Pour auditer la posture de sécurité de votre système, exécutez la commande suivante :

$ ./lynis audit system 

Cela s'exécute rapidement et renvoie un rapport détaillé - la sortie peut sembler intimidante au début, mais je vais vous expliquer ci-dessous. La sortie de la commande est également enregistrée dans un fichier journal, vous pouvez donc toujours y revenir plus tard et vérifier tout ce qui pourrait vous intéresser.

Lynis enregistre les journaux ici :

  Fichiers :
   - Informations de test et de débogage      :/var/log/lynis.log
  - Données de rapport                     :/var/log/lynis-report.dat

Vous pouvez vérifier si les fichiers journaux ont été créés, et ils l'ont bien été :

$ ls -l /var/log/lynis.log
-rw-r-----. 1 root root 341489 30 avril 05:52 /var/log/lynis.log
$
$ ls -l /var/log/lynis-report.dat
-rw-r-- ---. 1 root root 638 30 avril 05:55 /var/log/lynis-report.dat
$

Explorer les rapports

Lynis fournit des rapports assez complets, je couvrirai donc certaines des sections importantes. La toute première chose que Lynis fait dans le cadre de l'initialisation est de trouver des informations complètes sur le système d'exploitation exécuté sur la machine. Ceci est suivi de vérifications pour voir quels outils système et plugins sont installés :

[+] Initialisation du programme
--------------------------------------------------
   - Détection du système d'exploitation...                                         [ TERMINÉ ]
  - Vérification des profils...                                      [ TERMINÉ ]

  ------------------ ---------------------------------
  Version du programme :          3.0.0
  Système d'exploitation :Linux
  Nom du système d'exploitation :    Red Hat Enterprise Linux Server 7.8 (Maipo)
  Version du système d'exploitation : 7.8
  Version du noyau :           3.10.0
  Plate-forme matérielle :        x86_64
  Nom d'hôte :                 exemple
  -------------------------------------------- -------
< >

[+] Outils système
---------------- -------------------
  - Analyse des outils disponibles...
  - Vérification des fichiers binaires du système...

[ +] Plugins (phase 1)
--------------------------------------------------
 Remarque :les plug-ins sont soumis à des tests plus approfondis et peuvent prendre plusieurs minutes.
 
  - Plug-in :pam
    [..]
 - Plug-in :systemd
    [................]

Ensuite, le rapport est divisé en plusieurs sections, et chaque section commence par un [+] symbole. Certaines des sections peuvent être vues ci-dessous. (Wow, il y a tellement de domaines à auditer, et Lynis est l'outil qu'il vous faut !)

[+] Boot et services
[+] Noyau
[+] Mémoire et processus
[+] Utilisateurs, groupes et authentification
[+] Shells
[+] Systèmes de fichiers
[+] Périphériques USB
[+] Stockage
[+] NFS
[+] Services de noms
[+] Ports et packages
[+] Mise en réseau
[+] Imprimantes et bobines
[+] Logiciel :e-mail et messagerie
[+] Logiciel :pare-feu
[+] Logiciel :serveur Web
[+] Support SSH
[+] Support SNMP
[+] Bases de données
[+] Services LDAP
[+] PHP
[ +] Support Squid
[+] Journalisation et fichiers
[+] Services non sécurisés
[+] Bannières et identification
[+] Tâches planifiées
[+] Comptabilité
[+] Temps et Synchronisation
[+] Cryptographie
[+] Virtualisation
[+] Conteneurs
[+] Frameworks de sécurité
[+] Logiciel :intégrité des fichiers
[+] Logiciel :outils système
[+] Logiciel :logiciels malveillants
[+] Autorisations des fichiers
[+] Répertoires personnels
[+] Durcissement du noyau
[+] Durcissement
[+] Tests personnalisés

Lynis utilise un code couleur pour faciliter l'analyse du rapport :

  • Vert :tout va bien
  • Jaune :ignoré, introuvable ou il peut contenir une suggestion
  • Red :Vous devrez peut-être examiner cela de plus près

Dans mon cas, la plupart des marques rouges ont été trouvées dans la section Kernel Hardening. Le noyau possède divers paramètres réglables qui définissent le fonctionnement du noyau, et certains de ces paramètres réglables peuvent avoir un contexte de sécurité. La distribution ne les définit peut-être pas par défaut pour diverses raisons, mais vous devriez examiner chacune d'entre elles et voir si vous devez modifier sa valeur en fonction de votre posture de sécurité :

[+] Durcissement du noyau
-----------------------------------------
  - Comparaison des paires de clés sysctl avec le profil d'analyse
    - fs.protected_hardlinks (exp :1)                         [ OK ]
    - fs.protected_symlinks (exp :1)                           [ OK ] -fumps. (exp:0) [OK]
- kernel.core_us_pid (exp:1) [OK]
- Kernel.ctrl-alt-del (exp:0) [OK]
- Noyau .dmesg_restrict (exp:1) [différent]
- kernel.kptr_restrict (exp:2) [différent]
- kernel.randomize_va_space (exp:2) [OK]
- Kernel.SysRQ (exp:0) [différent]
- kernel.yama.ptrace_scope (exp:1 2 3) [différent]
- net.ipv4.conf.all.accept_redirects (exp:0) [différent]
    - net.ipv4.conf.all. accept_source_route (exp :0)          [ OK ]
    - net.ipv4.conf.all.bootp_relay (exp :0)                  [ OK ]
    - net.ipv4.conf.all.forwarding (exp :0) [ OK ]
    - net.ipv4.conf.all.log_martians (exp :1)                 [ DIFFÉRENT ]
    - net.ipv4.conf.all.mc_forwarding (exp :0)                [ OK ]
    - net.ipv4.conf.all.proxy_arp (exp :0)                    [ OK ]
    - net.ipv4.conf.all.rp_filter (exp :1)                    [ OK ]
    - net.ipv4. conf.all.send_redirects (exp :0)               [ DIFFÉRENT ]
    - net.ipv4.conf.default.accept_redirects (exp :0)         [ DIFFÉRENT ]
    - net.ipv4.conf.default.accept_source_route ( exp :0)      [ OK ]
    - net.ipv4.conf.default.log_martians (exp :1)             [ DIFFÉRENT ]
    - net.ipv4.icmp_echo_ignore_broadcasts (exp :1)           [ OK ]
    - net.ipv4.icmp_ignore_bogus_error_responses (exp :1)     [ OK ]
    - net.ipv4.tcp_syncookies (exp :1)                        [ OK ]
    - net.ipv4.tcp_timestamps (exp :0 1)                      [ OK ]
    - net.ipv6.conf.all.accept_redirects (exp :0)        >    - net.ipv6.conf.all.accept_source_route (exp :0)          [ OK ]
    - net.ipv6.conf.default.accept_redirects (exp :0)         [ DIFFERENT ]
    - net.ipv6. conf.default.accept_source_route (exp :0)      [ OK ]

Regardez SSH, un exemple, car il s'agit d'un domaine clé et doit être sécurisé. Il n'y a rien en rouge ici, mais Lynis a beaucoup de suggestions pour renforcer le service SSH sur ma configuration :

[+] Prise en charge SSH
--------------------------------------------------
- OpenSSH Option:Compression [Suggestion]
- OpenSSH Option:PRINTMINHASH [OK]
- OpenSSH Option:Gatewayports [OK]
- Option OpenSSH :Ignorerhosts [OK]
- OpenSSH Option:LogingRacétime [OK]
- OpenSSH Option:LogLevel [Suggestion]
- OpenSSH Option:MaxauthTries [Suggestion]
- Option OpenSSH:MaxSessions [Suggestion]
- OpenSSH Option:PerformationRootlogin [Suggestion]
- OpenSSH Option:PerformatriceViron [OK]
- OpenSSH Option:Permittunnel [OK]
- Option OpenSSH:Port [Suggestion]
- Openssh Option:PrintLastLog [OK]
- OpenSSH Option:StrictModes [OK]
- Openssh Option:TCPKeepalive [Suggestion]
- Openssh Option:Employée [Suggestion]
- OpenSSH Option:X11Fornant [Suggestion]
- OpenSSH Option:OpenSeSh Option [Suggestion]
- OpenSSH Option:UtiliserPrivilegesparation [OK]
- Option OpenSSH:Autoriser les utilisateurs                             [ INTROUVABLE ]
    - Option OpenSSH : AllowGroups                             [ INTROUVABLE ]

Je n'ai pas de machines virtuelles ou de conteneurs en cours d'exécution sur mon système, ils affichent donc des résultats vides :

[+] Virtualisation
--------------------------------------------------

[+] Conteneurs
--------------------------------------------------

Lynis vérifie les autorisations de fichiers sur certains fichiers importants du point de vue de la sécurité :

[+] Autorisations de fichiers
-----------------------------------------
- Démarrage des autorisations de fichier Vérifier
Fichier:/boot/grUB2/grUB.cfg [Suggestion]
Fichier:/etc/cron.Deny [OK]
Fichier:/ etc / crontab [ Suggestion]
Fichier:/ etc / groupe [OK]
Fichier:/ etc / Groupe- [OK]
Fichier:/etc/hosts.allow [OK]
Fichier:/etc/hosts.Deny [OK]
Fichier:/ etc / problème [OK]
Fichier:/etc/issue.net [OK]
Fichier:/ etc / Motd [OK] [OK]
Fichier:/ etc / ssh / ssh / sshd_config [OK]
Annuaire:/root/.ssh [Suggestion]
Annuaire:/etc/cron.d [Suggestion]
Répertoire:/etc/cron.daily [Suggestion]
Annuaire:/etc/cron.Hourly [Suggestion]
Annuaire:/etc/cron.weekly [suggestion]
Annuaire:/ etc /cron.monthly                              [ SUGGESTION ]

Vers le bas du rapport, Lynis propose des suggestions basées sur les conclusions du rapport. Chaque suggestion est suivie d'un TEST-ID (gardez ceci à portée de main pour la suite) :

 Suggestions (47) :
  ----------------------------
  * Si ce n'est pas obligatoire, envisagez désactivation explicite du core dump dans le fichier /etc/security/limits.conf [KRNL-5820]
      https://cisofy.com/lynis/controls/KRNL-5820/

  * Vérifier Configuration PAM, ajoutez des rondes le cas échéant et expirez les mots de passe pour chiffrer avec de nouvelles valeurs [AUTH-9229]
      https://cisofy.com/lynis/controls/AUTH-9229/

Lynis fournit une option pour trouver plus d'informations sur chaque suggestion, auxquelles vous pouvez accéder en utilisant les afficher les détails commande suivie du numéro d'identification du test :

./lynis show details TEST-ID 

Cela affichera des informations supplémentaires sur ce test. Par exemple, j'ai vérifié les détails de SSH-7408 :

$ ./lynis show details SSH-7408
2020-04-30 05:52:23 Exécution du test ID SSH-7408 (Vérifiez les options définies spécifiques à SSH)
2020-04-30 05 :52:23 Test :Vérification des options définies spécifiques dans /tmp/lynis.k8JwazmKc6
2020-04-30 05:52:23 Résultat :ajout d'options supplémentaires pour OpenSSH <7.5
2020-04-30 05 :52:23 Test :Vérification de AllowTcpForwarding dans /tmp/lynis.k8JwazmKc6
2020-04-30 05:52:23 Résultat :Option AllowTcpForwarding trouvée
2020-04-30 05:52:23 Résultat :Option La valeur de AllowTcpForwarding est YES
2020-04-30 05:52:23 Résultat :l'option OpenSSH AllowTcpForwarding est dans un état de configuration faible et doit être corrigée
2020-04-30 05:52:23 Suggestion :envisager durcissement de la configuration SSH [test :SSH-7408] [détails : AllowTcpForwarding (définir OUI sur NON)] [solution : -]

Essayez-le

Si vous voulez en savoir plus sur la sécurité de votre machine Linux, consultez Lynis. Et, si vous voulez savoir comment fonctionne Lynis, explorez ses scripts shell pour voir comment il rassemble toutes ces informations.


Linux
  1. Surveillez votre système Linux dans votre terminal avec procps-ng

  2. Gérer votre matériel connecté sous Linux avec systemd-udevd

  3. Surveillance de la sécurité sous Linux avec Tripwire

  4. Sécurité Linux :protégez vos systèmes avec fail2ban

  5. Comment analyser votre serveur avec le conseiller de sécurité cPanel

Épicez votre bureau Linux avec Cinnamon

Modernisez votre bureau Linux avec Enlightenment

Comment auditer un système Linux distant avec Lynis Security Tool

Audit de sécurité Linux avec Lynis

Audit de sécurité avec Lynis

Gérez vos serveurs avec Cockpit Linux