Lynis¶
Siehe auch
- Verwandte Artikel
- Offizielle Dokumentation
Lynis von CISOfy ist ein Tool, das ein Linux- oder Unix-System lokal auf seine Konfiguration und seinen Härtungsgrad prüft. Es läuft direkt auf dem Zielsystem, ohne Agent und ohne vorherige Installation auf einem zentralen Server. Anders als Nessus und OpenVAS, die ein System von aussen auf bekannte Schwachstellen (CVEs) scannen, beurteilt Lynis die Härtung von innen: gesetzte sshd-Optionen, sysctl-Werte, Firewall-Status, Dateisystem-Mountoptionen und Ähnliches. Die beiden Ansätze ergänzen sich.
Lynis ist vollständig in POSIX-Shell geschrieben, sowohl das Hauptskript als auch die einzelnen Tests, und steht unter der GPLv3. Es braucht kein Kompilat und keine Laufzeitumgebung, eine Shell und die üblichen Systemwerkzeuge genügen. Der Open-Source-Lynis führt alle hier beschriebenen Tests aus. Die kostenpflichtige Variante „Lynis Enterprise“ ergänzt zentrale Verwaltung, Compliance-Reports und Trending, nicht die eigentlichen Tests.
- Begriffe
Hardening Index: Kennzahl von 0 bis 100 am Ende des Audits, berechnet aus den erreichten Hardening Points im Verhältnis zu den maximal möglichen.
Hardening Points: Punkte, die ein einzelner Test für einen erreichten Härtungsgrad vergibt (z.B. 3 von 3 für eine sichere Einstellung, 0 von 3 für eine unsichere).
Profil: Steuert den Scan. Die Vorgaben stehen in
default.prf, eigene Anpassungen gehören incustom.prf.Suggestion und Warning: Die beiden Ergebnistypen. Eine Warning ist ein ernster Fund, eine Suggestion ein Verbesserungsvorschlag.
Test-ID: Jeder Test trägt eine Kennung wie
SSH-7408oderKRNL-6000, die in Log und Report auftaucht.
Installation¶
Lynis liegt im EPEL-Repo:
dnf -y install lynis
Das Paket legt das Binary unter /usr/bin/lynis ab, das Standardprofil unter /etc/lynis/default.prf und die Datenbanken unter /usr/share/lynis/.
Verwendung¶
Den vollständigen Audit startet:
lynis audit system
Lynis arbeitet die Tests kategorienweise ab und pausiert nach jeder Kategorie. Für einen Durchlauf ohne Pausen, etwa in Skripten oder per Cron:
lynis audit system --quick
Als root schreibt Lynis nach /var/log/lynis.log (ausführliches Protokoll) und /var/log/lynis-report.dat (maschinenlesbares Ergebnis). Ohne root-Rechte landen beide Dateien im Home-Verzeichnis. Am Ende steht der Hardening Index:
Hardening index : 60 [############ ]
Weitere nützliche Aufrufe:
lynis show commands # verfügbare Kommandos (audit, configure, generate)
lynis show categories # Test-Kategorien
lynis show groups # Test-Gruppen
lynis show profiles # Pfade der geladenen Profile
lynis update info # installierte Version und Release-Datum
Hardening Index und Hardening Points¶
Jeder Test vergibt für sein Prüfergebnis Hardening Points, etwa SSH-7408, das für jede sicher gesetzte sshd-Option Punkte vergibt und für unsichere Werte keine. Die Summe der erreichten Punkte im Verhältnis zur Summe der maximal möglichen ergibt den Hardening Index.
Viele Test-Gruppen decken auch andere Betriebssysteme ab (macOS, BSD, Solaris, AIX). Tests, deren Voraussetzungen nicht erfüllt sind, werden übersprungen und fliessen nicht in den Index ein. Beispiel: SINT-7010 prüft die macOS System Integrity Protection (csrutil) und wird auf Linux immer übersprungen. Der Index auf einem Linux-System spiegelt also nur die dort zutreffenden Tests.
Die folgende Tabelle zeigt die Test-Gruppen, die Hardening Points vergeben, was sie prüfen und wie viele Punkte sie maximal beisteuern können. Die Werte sind Richtwerte (Stand 2026-06) und verschieben sich zwischen Releases sowie je nach installierten Komponenten und Profil.
Gruppe |
Prüft |
max. HP |
|---|---|---|
accounting |
Prozess-Accounting und Audit-Framework (auditd, Solaris BSM) |
22 |
authentication |
Login- und Passwortrichtlinien, PAM, sudo/doas, Konten ohne Passwort |
33 |
banners |
Login-Banner ( |
4 |
boot_services |
Bootloader und beim Systemstart aktivierte Dienste |
17 |
containers |
Docker-Status, Datei-Permissions und laufende Container |
11 |
crypto |
Zertifikats-Ablauf, verschlüsselter Swap, LUKS |
3 |
databases |
Laufende DB-Server (MariaDB/MySQL, PostgreSQL, MongoDB, Redis) und ihre Absicherung |
14 |
dns |
DNSSEC |
2 |
file_integrity |
Vorhandensein und Konfiguration von File-Integrity-Tools (AIDE, AFICK) |
8 |
filesystems |
|
30 |
firewalls |
Firewall-Status und -Logging (firewalld, nftables, iptables) |
14 |
hardening |
Compiler-Zugriff, vorhandener Malware-Scanner, fremde Binärformate |
9 |
insecure_services |
inetd/xinetd und unsichere Dienste |
7 |
kernel |
Kernel-Module, CPU-Schutzmechanismen, Core-Dumps, verfügbares Kernel-Update |
8 |
kernel_hardening |
sysctl-Werte gegen die im Profil hinterlegten Vorgaben |
dynamisch |
logging |
Laufender Syslog-/RSyslog-Daemon und Log-Konfiguration |
8 |
mac_frameworks |
Aktives MAC-Framework (SELinux, AppArmor, grsecurity) |
12 |
malware |
Installierte Malware- und Rootkit-Scanner (ClamAV, chkrootkit, rkhunter) |
20 |
memory_processes |
Zombie- und IO-Wait-Prozesse, prelink |
3 |
nameservices |
BIND-Status und -Konfiguration, Hostname |
2 |
networking |
Nameserver-Konfiguration, offene Verbindungen, DHCP-Client |
3 |
php |
PHP-Sicherheitsoptionen ( |
19 |
ports_packages |
Verfügbare Updates und verwundbare Pakete je Paketmanager |
128 |
printers_spoolers |
CUPS-Status, -Konfiguration und -Permissions |
8 |
scheduling |
cron- und at-Jobs samt ihren Daemons |
6 |
shells |
Gültige Shells, umask, Idle-Session-Timeout |
6 |
snmp |
Laufender SNMP-Daemon und Communities |
3 |
squid |
Squid-Proxy-Status, ACLs und Authentifizierung |
7 |
ssh |
SSH-Daemon-Status und gehärtete sshd-Optionen |
5 |
storage |
Deaktiviertes Firewire-Storage |
3 |
storage_nfs |
NFS-Daemon, Exports und Client-Zugriff |
3 |
system_integrity |
System-Integrität (macOS SIP, auf Linux übersprungen) |
3 |
time |
Zeit-Synchronisation (NTP, chrony) |
7 |
tooling |
Aktive Security-Tools (Fail2ban, OSSEC, Suricata, Wazuh) |
7 |
usb |
Deaktiviertes USB-Storage, USBGuard |
14 |
webservers |
Apache- und nginx-Konfiguration |
20 |
Die Gruppen file_permissions, homedirs, kerberos, ldap, mail_messaging und virtualization führen ebenfalls Tests aus, vergeben aber keine Hardening Points.
Remote-Scan¶
Ein entferntes System lässt sich prüfen, ohne dort Lynis zu installieren. Lynis gibt dazu die nötigen Schritte aus:
lynis audit system remote 192.0.2.10
Die Ausgabe beschreibt den Ablauf: Lynis als Tarball verpacken, per scp auf das Ziel kopieren, dort per ssh entpacken und ./lynis audit system ausführen, anschliessend Log und Report zurückholen und die temporären Dateien auf dem Ziel löschen. Das Zielsystem bleibt unverändert.
Konfiguration¶
Profile steuern, was und wie geprüft wird. Das Standardprofil default.prf wird nicht verändert. Eigene Werte, etwa zusätzliche sysctl-Vorgaben oder das Überspringen einzelner Tests, gehören in eine custom.prf im selben Verzeichnis. Wo die Profile liegen, zeigt:
lynis show profiles