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 in custom.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-7408 oder KRNL-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 (/etc/issue, /etc/issue.net)

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

/etc/fstab, Mount-Optionen, ACLs, Dateisystem-Typen

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 (allow_url_fopen, disable_functions usw.)

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