GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Scannen Sie Ihre Linux-Sicherheit mit Lynis

Haben Sie jemals darüber nachgedacht, wie sicher Ihr Linux-Rechner wirklich ist? Es gibt zahlreiche Linux-Distributionen, jede mit ihren eigenen Standardeinstellungen, auf denen Sie Dutzende von Softwarepaketen mit unterschiedlichen Versionsnummern ausführen, und zahlreiche Dienste, die im Hintergrund laufen, die wir kaum kennen oder uns darum kümmern.

Weitere Linux-Ressourcen

  • Spickzettel für Linux-Befehle
  • Spickzettel für fortgeschrittene Linux-Befehle
  • Kostenloser Online-Kurs:RHEL Technical Overview
  • Spickzettel für Linux-Netzwerke
  • SELinux-Spickzettel
  • Spickzettel für allgemeine Linux-Befehle
  • Was sind Linux-Container?
  • Unsere neuesten Linux-Artikel

Um den Sicherheitsstatus zu ermitteln – den Gesamtsicherheitsstatus der Software, des Netzwerks und der Dienste, die auf Ihrem Linux-Computer ausgeführt werden – könnten Sie ein paar Befehle ausführen und Teile relevanter Informationen abrufen, aber die Datenmenge, die Sie analysieren müssen, ist riesig .

Es wäre so viel besser, wenn Sie einfach ein Tool ausführen könnten, das einen Bericht über die Sicherheitslage einer Maschine erstellt. Und zum Glück gibt es eine:Lynis. Es ist ein äußerst beliebtes Open-Source-Tool zur Sicherheitsüberprüfung, das beim Härten von Linux- und Unix-basierten Systemen hilft. Je nach Projekt:

„Es führt einen gründlichen Sicherheitsscan durch und läuft auf dem System selbst. Das Hauptziel besteht darin, Sicherheitsmaßnahmen zu testen und Tipps für eine weitere Systemhärtung zu geben. Es scannt auch nach allgemeinen Systeminformationen, anfälligen Softwarepaketen und möglichen Konfigurationsproblemen. Lynis [wird] häufig von Systemadministratoren und Prüfern verwendet, um die Sicherheitsmaßnahmen ihrer Systeme zu bewerten."

Installieren Sie Lynis

Lynis ist möglicherweise in Ihrem Linux-Software-Repository verfügbar. Wenn ja, können Sie es installieren mit:

dnf install lynis

oder

apt install lynis

Wenn die Version in Ihrem Repo jedoch nicht die neueste ist, installieren Sie sie besser von GitHub. (Ich verwende ein Red Hat Linux-System, aber Sie können es auf jeder Linux-Distribution ausführen.) Wie bei allen Tools ist es sinnvoll, es zuerst auf einer virtuellen Maschine auszuprobieren. So installieren Sie es von GitHub:

$ 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.
$

Sobald Sie das Repository geklont haben, wechseln Sie hinein und sehen Sie, was verfügbar ist. Das Hauptwerkzeug befindet sich in einer Datei namens lynis . Es ist eigentlich ein Shell-Skript, also können Sie es öffnen und lesen, was es tut. Tatsächlich wird Lynis hauptsächlich mithilfe von Shell-Skripten implementiert:

$ 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
$

Lynis ausführen

Nehmen Sie Lynis mit auf eine Spritztour, indem Sie ihm ein -h geben Option, um den Hilfebereich anzuzeigen:

$ ./lynis -h

Sie sehen einen kurzen Informationsbildschirm, gefolgt von allen Befehlen, die Lynis unterstützt.

Probieren Sie als Nächstes einige Testbefehle aus, um ein Gefühl für die Dinge zu bekommen und sich wohlzufühlen. Führen Sie Folgendes aus, um zu sehen, mit welcher Version von Lynis Sie arbeiten:

$ ./lynis show version
3.0.0
$

So sehen Sie alle in Lynis verfügbaren Befehle:

$ ./lynis show commands

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

$

Prüfen Sie ein Linux-System

Führen Sie den folgenden Befehl aus, um den Sicherheitsstatus Ihres Systems zu prüfen:

$ ./lynis audit system

Dies wird schnell ausgeführt und gibt einen detaillierten Bericht zurück – die Ausgabe mag zunächst einschüchternd wirken, aber ich werde Sie unten durchgehen. Die Ausgabe des Befehls wird auch in einer Protokolldatei gespeichert, sodass Sie später jederzeit zurückgehen und alles überprüfen können, was von Interesse sein könnte.

Lynis speichert die Protokolle hier:

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

Sie können überprüfen, ob die Protokolldateien erstellt wurden, und zwar:

$ 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
$

Untersuchen Sie die Berichte

Lynis bietet ziemlich umfassende Berichte, daher werde ich einige der wichtigen Abschnitte behandeln. Das Allererste, was Lynis im Rahmen der Initialisierung tut, besteht darin, vollständige Informationen über das Betriebssystem herauszufinden, das auf dem Computer ausgeführt wird. Anschließend wird überprüft, welche Systemtools und Plugins installiert sind:

[+] 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
    [................]

Als Nächstes wird der Bericht in verschiedene Abschnitte unterteilt, und jeder Abschnitt beginnt mit einem [+] Symbol. Einige der Abschnitte sind unten zu sehen. (Wow, es gibt so viele Bereiche zu prüfen, und Lynis ist das richtige Tool für diese Aufgabe!)

[+] 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

Lynis verwendet Farbcodierung, um das Analysieren des Berichts zu vereinfachen:

  • Grün:Alles gut
  • Gelb:Übersprungen, nicht gefunden oder möglicherweise ein Vorschlag
  • Rot:Möglicherweise müssen Sie sich das genauer ansehen

In meinem Fall wurden die meisten roten Markierungen im Abschnitt Kernel Hardening gefunden. Der Kernel verfügt über verschiedene anpassbare Einstellungen, die definieren, wie der Kernel funktioniert, und einige dieser anpassbaren Einstellungen können einen Sicherheitskontext haben. Die Distribution setzt diese aus verschiedenen Gründen möglicherweise nicht standardmäßig, aber Sie sollten sie untersuchen und sehen, ob Sie ihren Wert basierend auf Ihrer Sicherheitslage ändern müssen:

[+] 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 ]

Sehen Sie sich SSH als Beispiel an, da es sich um einen Schlüsselbereich handelt, der gesichert werden muss. Hier ist nichts rot, aber Lynis hat viele Vorschläge zum Härten des SSH-Dienstes in meinem Setup:

[+] 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 ]

Auf meinem System werden keine virtuellen Maschinen oder Container ausgeführt, sodass leere Ergebnisse angezeigt werden:

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

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

Lynis prüft Dateiberechtigungen für einige Dateien, die aus Sicherheitsgründen wichtig sind:

[+] 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 ]

Am Ende des Berichts bietet Lynis Vorschläge basierend auf den Ergebnissen des Berichts. Jedem Vorschlag folgt eine TEST-ID (halten Sie dies für den nächsten Teil bereit):

 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 bietet eine Option, um weitere Informationen zu jedem Vorschlag zu finden, auf die Sie über Details anzeigen zugreifen können Befehl gefolgt von der Test-ID-Nummer:

./lynis show details TEST-ID

Dadurch werden zusätzliche Informationen zu diesem Test angezeigt. Zum Beispiel habe ich die Details von SSH-7408 überprüft:

$ ./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:-]

Probieren Sie es aus

Wenn Sie mehr über die Sicherheit Ihres Linux-Rechners erfahren möchten, sehen Sie sich Lynis an. Und wenn Sie erfahren möchten, wie Lynis funktioniert, stöbern Sie in seinen Shell-Skripten, um zu sehen, wie es all diese Informationen sammelt.


Linux
  1. Überwachen Sie Ihr Linux-System in Ihrem Terminal mit procps-ng

  2. Verwalten Sie Ihre angeschlossene Hardware unter Linux mit systemd-udevd

  3. Sicherheitsüberwachung unter Linux mit Tripwire

  4. Linux-Sicherheit:Schützen Sie Ihre Systeme mit fail2ban

  5. So scannen Sie Ihren Server mit dem cPanel Security Advisor

Würzen Sie Ihren Linux-Desktop mit Cinnamon

Modernisieren Sie Ihren Linux-Desktop mit Enlightenment

So prüfen Sie ein Remote-Linux-System mit dem Lynis Security Tool

Linux-Sicherheitsaudit mit Lynis

Sicherheitsaudit mit Lynis

Verwalten Sie Ihre Server mit Cockpit Linux