Vérification de la sécurité Linux avec Lynis Utility

Nous découvrons comment utiliser l'un des utilitaires gratuits les plus puissants pour l'audit des systèmes Linux.


Vous êtes-vous déjà demandé à quel point votre système Linux est sécurisé? Il existe de nombreuses distributions Linux (chacune avec ses propres paramètres par défaut) sur lesquelles vous exécutez des dizaines de packages logiciels avec des numéros de version différents. De plus, sur votre système d'exploitation en arrière-plan, il existe de nombreux services que vous ne connaissez pas ou auxquels vous ne pensez parfois pas.

Pour obtenir des informations sur le système, c'est-à-dire vérifier l'état général du logiciel, du réseau et des services exécutés sur votre ordinateur avec Linux installé, exécutez simplement quelques commandes. Mais maintenant, que faire des informations reçues? Comment le comprendre? Après tout, la quantité de données que vous devez analyser est énorme.

Il serait préférable de simplement exécuter un outil qui génère un rapport structuré sur le niveau de sécurité du système. Lynis est un outil open source populaire qui audite les systèmes basés sur Linux et Unix.

«Il effectue une analyse complète des paramètres de sécurité et s'exécute sur le système lui-même. L'objectif principal est de tester les fonctions de sécurité et d'émettre des recommandations pour améliorer encore le niveau de sécurité du système. Il analyse également les informations à l'échelle du système, les informations sur les packages installés et les erreurs de configuration possibles. Lynis [est généralement] utilisé par les administrateurs système et les experts en sécurité pour évaluer le niveau de sécurité du système » , explique le site Web du projet.

Installer Lynis


Vous pouvez utiliser des gestionnaires de packages pour installer Lynis. À condition que votre système Linux avec la pertinence des versions dans le référentiel soit en ordre, l'utilitaire peut être installé comme ceci:

dnf install lynis

ou alors:

apt install lynis

Cependant, si la version de l'utilitaire dans votre référentiel n'est pas la dernière, il est préférable d'installer Lynis avec GitHub (j'utilise Red Hat Linux, mais des commandes similaires fonctionnent sur n'importe quelle distribution Linux):

$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.8 (Maipo)
$
$ uname  -r
3.10.0-1127.el7.x86_64
$
$ git clone https://github.com/CISOfy/lynis.git
Cloning into 'lynis'...
remote: Enumerating objects: 30, done.
remote: Counting objects: 100% (30/30), done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 12566 (delta 15), reused 8 (delta 0), pack-reused 12536
Receiving objects: 100% (12566/12566), 6.36 MiB | 911.00 KiB/s, done.
Resolving deltas: 100% (9264/9264), done.
$

Dès que vous clonez le référentiel, allez-y et voyez ce qui est à votre disposition, trouvez un fichier appelé lynis. Il s'agit en fait d'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:

$ 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.prf  extras         HAPPY_USERS.md  INSTALL  lynis    plugins  README.md
$
$ file lynis
lynis: POSIX shell script, ASCII text executable, with very long lines
$ 

Lancer Lynis


Commençons avec Lynis en exécutant l'aide en utilisant l'indicateur -h :

$ ./lynis -h

Vous pouvez donc vous familiariser avec les principales commandes de l'utilitaire. Par exemple, découvrons sa version:

$ ./lynis show version
3.0.0
$

Pour une liste complète des commandes Lynis, tapez:

$ ./lynis show commands

Commands:
lynis audit
lynis configure
lynis generate
lynis show
lynis update
lynis upload-only

$

Exécution d'un audit d'un système Linux


Tout commence par la commande suivante:

$ ./lynis audit system

Après le démarrage de l'équipe, nous recevrons un rapport détaillé. Ne vous inquiétez pas, nous le découvrirons un peu plus tard. Les autres résultats du travail d'équipe sont également enregistrés, vous pouvez donc y revenir plus tard.

Ici, Lynis stocke les journaux:

  Files:
  - Test and debug information      : /var/log/lynis.log
  - Report data                     : /var/log/lynis-report.dat

Vous pouvez vérifier si tous les fichiers nécessaires ont bien été créés:

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

Nous étudions les rapports


Lynis fournit des rapports assez détaillés, donc je ne couvrirai que certains sujets importants. La toute première chose que Lynis fait lors de l'initialisation est de trouver des informations complètes sur le système d'exploitation qui s'exécute sur l'ordinateur. Ensuite, l'utilitaire vérifie quels outils système et plugins vous avez installés:

[+] Initializing program
------------------------------------
  - Detecting OS...                                           [ DONE ]
  - Checking profiles...                                      [ DONE ]

  ---------------------------------------------------
  Program version:           3.0.0
  Operating system:          Linux
  Operating system name:     Red Hat Enterprise Linux Server 7.8 (Maipo)
  Operating system version:  7.8
  Kernel version:            3.10.0
  Hardware platform:         x86_64
  Hostname:                  example
  ---------------------------------------------------
<<snip>>

[+] System Tools
------------------------------------
  - Scanning available tools...
  - Checking system binaries...

[+] Plugins (phase 1)
------------------------------------
 Note: plugins have more extensive tests and may take several minutes to complete
 
  - Plugin: pam
    [..]
  - Plugin: systemd
    [................]



Le rapport est divisé en différentes sections et chaque section commence par [+] . Certaines des sections peuvent être vues ci-dessous.

[+] Boot and services
[+] Kernel
[+] Memory and Processes
[+] Users, Groups and Authentication
[+] Shells
[+] File systems
[+] USB Devices
[+] Storage
[+] NFS
[+] Name services
[+] Ports and packages
[+] Networking
[+] Printers and Spools
[+] Software: e-mail and messaging
[+] Software: firewalls
[+] Software: webserver
[+] SSH Support
[+] SNMP Support
[+] Databases
[+] LDAP Services
[+] PHP
[+] Squid Support
[+] Logging and files
[+] Insecure services
[+] Banners and identification
[+] Scheduled tasks
[+] Accounting
[+] Time and Synchronization
[+] Cryptography
[+] Virtualization
[+] Containers
[+] Security frameworks
[+] Software: file integrity
[+] Software: System tooling
[+] Software: Malware
[+] File Permissions
[+] Home directories
[+] Kernel Hardening
[+] Hardening
[+] Custom tests

Pour plus de clarté, Lynis utilise des conventions de couleur:

  • vert: tout va bien
  • jaune: n'a pas trouvé tout le nécessaire, ou une situation controversée est survenue
  • rouge: c'est un problème, ça vaut le coup

Dans mon cas, la plupart des problèmes (marques rouges) ont été trouvés dans la section Durcissement du noyau. Le noyau possède divers paramètres configurables qui déterminent son fonctionnement, et certains de ces paramètres sont responsables de la sécurité. La distribution peut ne pas les installer par défaut pour diverses raisons, mais vous devez examiner chacun d'eux et voir si vous devez modifier sa valeur en fonction de vos exigences de sécurité:

[+] Kernel Hardening
------------------------------------
  - Comparing sysctl key pairs with scan profile
    - fs.protected_hardlinks (exp: 1)                         [ OK ]
    - fs.protected_symlinks (exp: 1)                          [ OK ]
    - fs.suid_dumpable (exp: 0)                               [ OK ]
    - kernel.core_uses_pid (exp: 1)                           [ OK ]
    - kernel.ctrl-alt-del (exp: 0)                            [ OK ]
    - kernel.dmesg_restrict (exp: 1)                          [ DIFFERENT ]
    - kernel.kptr_restrict (exp: 2)                           [ DIFFERENT ]
    - kernel.randomize_va_space (exp: 2)                      [ OK ]
    - kernel.sysrq (exp: 0)                                   [ DIFFERENT ]
    - kernel.yama.ptrace_scope (exp: 1 2 3)                   [ DIFFERENT ]
    - net.ipv4.conf.all.accept_redirects (exp: 0)             [ DIFFERENT ]
    - 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)                 [ DIFFERENT ]
    - 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)               [ DIFFERENT ]
    - net.ipv4.conf.default.accept_redirects (exp: 0)         [ DIFFERENT ]
    - net.ipv4.conf.default.accept_source_route (exp: 0)      [ OK ]
    - net.ipv4.conf.default.log_martians (exp: 1)             [ DIFFERENT ]
    - 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)             [ DIFFERENT ]
    - 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 par exemple. Il s'agit d'un élément important du système et il doit être protégé. Rien n'est mis en évidence en rouge ici, mais Lynis a de nombreuses suggestions pour améliorer la sécurité du service SSH:

[+] SSH Support
------------------------------------
  - Checking running SSH daemon                               [ FOUND ]
    - Searching SSH configuration                             [ FOUND ]
    - OpenSSH option: AllowTcpForwarding                      [ SUGGESTION ]
    - OpenSSH option: ClientAliveCountMax                     [ SUGGESTION ]
    - OpenSSH option: ClientAliveInterval                     [ OK ]
    - OpenSSH option: Compression                             [ SUGGESTION ]
    - OpenSSH option: FingerprintHash                         [ OK ]
    - OpenSSH option: GatewayPorts                            [ OK ]
    - OpenSSH option: IgnoreRhosts                            [ OK ]
    - OpenSSH option: LoginGraceTime                          [ OK ]
    - OpenSSH option: LogLevel                                [ SUGGESTION ]
    - OpenSSH option: MaxAuthTries                            [ SUGGESTION ]
    - OpenSSH option: MaxSessions                             [ SUGGESTION ]
    - OpenSSH option: PermitRootLogin                         [ SUGGESTION ]
    - OpenSSH option: PermitUserEnvironment                   [ OK ]
    - OpenSSH option: PermitTunnel                            [ OK ]
    - OpenSSH option: Port                                    [ SUGGESTION ]
    - OpenSSH option: PrintLastLog                            [ OK ]
    - OpenSSH option: StrictModes                             [ OK ]
    - OpenSSH option: TCPKeepAlive                            [ SUGGESTION ]
    - OpenSSH option: UseDNS                                  [ SUGGESTION ]
    - OpenSSH option: X11Forwarding                           [ SUGGESTION ]
    - OpenSSH option: AllowAgentForwarding                    [ SUGGESTION ]
    - OpenSSH option: UsePrivilegeSeparation                  [ OK ]
    - OpenSSH option: AllowUsers                              [ NOT FOUND ]
    - OpenSSH option: AllowGroups                             [ NOT FOUND ]

Aucun conteneur ni aucune machine virtuelle ne fonctionne sur mon système. Donc, hélas, il n'y aura rien à lire ici.

[+] Virtualization
------------------------------------

[+] Containers
------------------------------------

Lynis vérifie les privilèges de certains fichiers, car cela est important du point de vue de la sécurité.

[+] File Permissions
------------------------------------
  - Starting file permissions check
    File: /boot/grub2/grub.cfg                                [ SUGGESTION ]
    File: /etc/cron.deny                                      [ OK ]
    File: /etc/crontab                                        [ SUGGESTION ]
    File: /etc/group                                          [ OK ]
    File: /etc/group-                                         [ OK ]
    File: /etc/hosts.allow                                    [ OK ]
    File: /etc/hosts.deny                                     [ OK ]
    File: /etc/issue                                          [ OK ]
    File: /etc/issue.net                                      [ OK ]
    File: /etc/motd                                           [ OK ]
    File: /etc/passwd                                         [ OK ]
    File: /etc/passwd-                                        [ OK ]
    File: /etc/ssh/sshd_config                                [ OK ]
    Directory: /root/.ssh                                     [ SUGGESTION ]
    Directory: /etc/cron.d                                    [ SUGGESTION ]
    Directory: /etc/cron.daily                                [ SUGGESTION ]
    Directory: /etc/cron.hourly                               [ SUGGESTION ]
    Directory: /etc/cron.weekly                               [ SUGGESTION ]
    Directory: /etc/cron.monthly                              [ SUGGESTION ]

À la fin du rapport, Lynis apporte des corrections en fonction des résultats de l'audit. Chaque phrase commence par une description, et le test ( TEST-ID ) qui l'a générée est indiqué entre parenthèses à côté d' elle. La ligne suivante suggère une solution au problème, si elle existe:

Suggestions (47):
  ----------------------------
  * If not required, consider explicit disabling of core dump in /etc/security/limits.conf file [KRNL-5820]
      https://cisofy.com/lynis/controls/KRNL-5820/

  * Check PAM configuration, add rounds if applicable and expire passwords to encrypt with new values [AUTH-9229]
      https://cisofy.com/lynis/controls/AUTH-9229/

Lynis permet de trouver des informations supplémentaires sur chaque proposition de correction à l'aide de la commande show details , suivie du numéro de test TEST-ID :

./lynis show details TEST-ID

Par exemple, pour en savoir plus sur le test SSH-7408, j'entre $ ./lynis show details SSH-7408 et j'obtiens:

$ ./lynis show details SSH-7408
2020-04-30 05:52:23 Performing test ID SSH-7408 (Check SSH specific defined options)
2020-04-30 05:52:23 Test: Checking specific defined options in /tmp/lynis.k8JwazmKc6
2020-04-30 05:52:23 Result: added additional options for OpenSSH < 7.5
2020-04-30 05:52:23 Test: Checking AllowTcpForwarding in /tmp/lynis.k8JwazmKc6
2020-04-30 05:52:23 Result: Option AllowTcpForwarding found
2020-04-30 05:52:23 Result: Option AllowTcpForwarding value is YES
2020-04-30 05:52:23 Result: OpenSSH option AllowTcpForwarding is in a weak configuration state and should be fixed
2020-04-30 05:52:23 Suggestion: Consider hardening SSH configuration [test:SSH-7408] [details:AllowTcpForwarding (set YES to NO)] [solution:-]

Essayez de ne pas torturer


Donc, si vous voulez en savoir plus sur la sécurité de votre système Linux, consultez Lynis. Et, si vous voulez en savoir plus sur le fonctionnement de cet utilitaire, sur la façon dont il collecte toutes ces informations, fouillez dans ses scripts shell. Comme avec d'autres utilitaires, il est logique de l'essayer d'abord sur une machine virtuelle.

Quels outils utilisez-vous? Partagez dans les commentaires.



Comme une publicité


VDSina propose des serveurs sur n'importe quel système d'exploitation - choisissez l'un des systèmes d'exploitation préinstallés ou installez à partir de votre image. Des serveurs de paiement quotidiens ou une offre unique sur le marché - des serveurs éternels!


All Articles