Überprüfen der Linux-Sicherheit mit dem Lynis-Dienstprogramm

Wir finden heraus, wie Sie eines der leistungsstärksten Freeware-Dienstprogramme für die Prüfung von Linux-Systemen verwenden können.


Haben Sie sich jemals gefragt, wie sicher Ihr Linux-System ist? Es gibt viele Linux-Distributionen (jede mit ihren eigenen Standardeinstellungen), auf denen Sie Dutzende von Softwarepaketen mit unterschiedlichen Versionsnummern ausführen. Darüber hinaus gibt es auf Ihrem Betriebssystem im Hintergrund viele Dienste, die Sie manchmal nicht kennen oder über die Sie nicht nachdenken.

Um Informationen über das System zu erhalten, dh den allgemeinen Status der Software, des Netzwerks und der Dienste zu überprüfen, die auf Ihrem Computer mit installiertem Linux ausgeführt werden, führen Sie einfach einige Befehle aus. Aber was tun mit den erhaltenen Informationen? Wie kann man das verstehen? Schließlich ist die Datenmenge, die Sie analysieren müssen, riesig.

Es wäre viel besser, wenn Sie nur ein Tool ausführen könnten, das einen strukturierten Bericht über die Sicherheitsstufe des Systems generiert. Lynis ist ein beliebtes Open Source-Tool, das Linux- und Unix-basierte Systeme überprüft.

„Es führt einen umfassenden Scan der Sicherheitseinstellungen durch und läuft auf dem System selbst. Das Hauptziel besteht darin, Sicherheitsfunktionen zu testen und Empfehlungen zur weiteren Verbesserung der Systemsicherheit abzugeben. Außerdem werden systemweite Informationen, Informationen zu installierten Paketen und mögliche Konfigurationsfehler gescannt. Lynis wird [normalerweise] von Systemadministratoren und Sicherheitsexperten verwendet, um das Niveau der Systemsicherheit zu bewerten “, heißt es auf der Website des Projekts.

Installieren Sie Lynis


Sie können Paketmanager verwenden, um Lynis zu installieren. Vorausgesetzt, Ihr Linux-System mit der Relevanz der Versionen im Repository ist in Ordnung, kann das Dienstprogramm wie folgt installiert werden:

dnf install lynis

oder so:

apt install lynis

Wenn die Dienstprogrammversion in Ihrem Repository jedoch nicht die neueste ist, ist es besser, Lynis mit GitHub zu installieren (ich verwende das Red Hat Linux-System, aber ähnliche Befehle funktionieren in jeder Linux-Distribution):

$ 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, gehen Sie in das Repository und suchen Sie nach einer Datei namens lynis. Dies ist eigentlich ein Shell-Skript, sodass Sie es öffnen und lesen können, was es tut. Tatsächlich wird Lynis hauptsächlich mithilfe von 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
$ 

Starten Sie Lynis


Beginnen wir mit Lynis, indem wir die Hilfe mit dem Flag -h ausführen :

$ ./lynis -h

So können Sie sich mit den wichtigsten Dienstprogrammbefehlen vertraut machen. Lassen Sie uns zum Beispiel die Version herausfinden:

$ ./lynis show version
3.0.0
$

Geben Sie für eine vollständige Liste der Lynis-Befehle Folgendes ein:

$ ./lynis show commands

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

$

Ausführen eines Audits eines Linux-Systems


Alles beginnt mit dem folgenden Befehl:

$ ./lynis audit system

Nach dem Start des Teams erhalten wir einen detaillierten Bericht. Seien Sie nicht beunruhigt, wir werden es etwas später herausfinden. Andere Teamarbeitsergebnisse werden ebenfalls gespeichert, sodass Sie später darauf zurückgreifen können.

Hier speichert Lynis die Protokolle:

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

Sie können überprüfen, ob alle erforderlichen Dateien tatsächlich erstellt wurden:

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

Wir studieren Berichte


Lynis bietet ziemlich detaillierte Berichte, daher werde ich nur einige wichtige Themen behandeln. Das allererste, was Lynis während der Initialisierung tut, ist, vollständige Informationen über das Betriebssystem zu erhalten, das auf dem Computer ausgeführt wird. Anschließend überprüft das Dienstprogramm, welche Systemtools und Plugins Sie installiert haben:

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



Der Bericht ist in verschiedene Abschnitte unterteilt, und jeder Abschnitt beginnt mit [+] . Einige der Abschnitte sind unten zu sehen.

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

Für mehr Klarheit verwendet Lynis Farbkonventionen:

  • grün: alles ist gut
  • gelb: fand nicht alles Notwendige oder es entstand eine kontroverse Situation
  • rot: Dies ist ein Problem, es lohnt sich, sich damit zu befassen

In meinem Fall wurden die meisten Probleme (rote Markierungen) im Abschnitt Kernel-Härtung gefunden. Der Kernel verfügt über verschiedene konfigurierbare Parameter, die seinen Betrieb bestimmen. Einige dieser Parameter sind für die Sicherheit verantwortlich. Eine Distribution installiert sie möglicherweise aus verschiedenen Gründen nicht standardmäßig. Sie sollten sie jedoch untersuchen und prüfen, ob Sie ihren Wert abhängig von Ihren Sicherheitsanforderungen ä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 ]

Schauen Sie sich zum Beispiel SSH an. Dies ist ein wichtiger Teil des Systems und muss geschützt werden. Hier wird nichts rot hervorgehoben, aber Lynis hat viele Vorschläge zur Verbesserung der Sicherheit des SSH-Dienstes:

[+] 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 wird kein einziger Container oder keine virtuelle Maschine ausgeführt. Leider gibt es hier nichts zu lesen.

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

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

Lynis überprüft die Berechtigungen einiger Dateien, da dies aus Sicherheitsgründen wichtig ist.

[+] 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 nimmt Lynis Korrekturen auf der Grundlage der Prüfungsergebnisse vor. Jeder Satz beginnt mit einer Beschreibung, und der Test ( TEST-ID ), der ihn generiert hat, ist in Klammern daneben angegeben . Die nächste Zeile schlägt eine Lösung für das Problem vor, falls vorhanden:

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 ermöglicht es, zusätzliche Informationen zu jedem Korrekturvorschlag mit dem Befehl show details gefolgt von der TEST-ID- Testnummer zu finden :

./lynis show details TEST-ID

Um beispielsweise weitere Informationen für den SSH-7408-Test zu erhalten, gebe ich $ ./lynis show details SSH-7408 ein und erhalte:

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

Versuche nicht zu foltern


Wenn Sie mehr über die Sicherheit Ihres Linux-Systems erfahren möchten, schauen Sie sich Lynis an. Wenn Sie mehr darüber erfahren möchten, wie dieses Dienstprogramm funktioniert, wie es all diese Informationen sammelt, lesen Sie die Shell-Skripte. Wie bei anderen Dienstprogrammen ist es sinnvoll, es zuerst auf einer virtuellen Maschine auszuprobieren.

Welche Tools verwenden Sie? Teilen Sie in den Kommentaren.



Als Werbung


VDSina bietet Server auf jedem Betriebssystem an - wählen Sie eines der vorinstallierten Betriebssysteme oder installieren Sie es von Ihrem Image. Tägliche Zahlungsserver oder ein einzigartiges Angebot auf dem Markt - ewige Server!


All Articles