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.