Lynis ist ein umfassendes Security-Auditing-Tool für Unix-basierte Systeme. Es prüft Hunderte von Sicherheitsaspekten und gibt konkrete Hardening-Empfehlungen.

Was prüft Lynis?

Kategorien

- Boot und Services
- Kernel-Sicherheit
- Speicher und Prozesse
- Benutzer und Gruppen
- Shells und Login
- Dateisystem
- USB-Geräte
- Netzwerk
- Firewalls
- SSH
- SNMP
- Datenbanken
- LDAP
- PHP
- Webserver
- Mail-Server
- Logging
- Cron
- Kryptographie
- Virtualisierung
- Container

Hardening-Index

0-49:   Kritisch
50-69:  Verbesserungsbedürftig
70-84:  Gut
85-100: Ausgezeichnet

Installation

Debian/Ubuntu

apt install lynis

CentOS/RHEL

dnf install epel-release
dnf install lynis

Aktuellste Version (Git)

cd /opt
git clone https://github.com/CISOfy/lynis
cd lynis
./lynis audit system

Version prüfen

lynis --version
lynis update info

Grundlegende Nutzung

System-Audit

lynis audit system

Schneller Scan

lynis audit system --quick

Ohne Interaktion

lynis audit system --no-colors --quiet

Mit Cronjob-Modus

lynis audit system --cronjob

Ausgabe verstehen

Farbcodierung

| Farbe | Bedeutung | |-------|-----------| | Grün | OK | | Gelb | Empfehlung | | Orange | Warnung | | Rot | Kritisch |

Ergebnis-Typen

[OK]        - Test bestanden
[WARNING]   - Sicherheitsproblem
[SUGGESTION]- Verbesserungsvorschlag
[SKIPPED]   - Test übersprungen
[FOUND]     - Element gefunden
[NOT FOUND] - Element nicht gefunden

Hardening-Index

================================================================================

  Lynis security scan details:

  Hardening index : 67 [#############       ]
  Tests performed : 256
  Plugins enabled : 0

================================================================================

Reports

Report-Datei

# Speicherort
/var/log/lynis.log
/var/log/lynis-report.dat

HTML-Report generieren

# Mit lynis-reporter (Python)
pip install lynis-reporter
lynis-reporter /var/log/lynis-report.dat -o report.html

JSON-Output

lynis audit system --report-file /tmp/lynis-report.dat
cat /var/log/lynis-report.dat | grep "hardening_index"

Report auswerten

# Warnungen extrahieren
grep "warning\[\]" /var/log/lynis-report.dat

# Empfehlungen extrahieren
grep "suggestion\[\]" /var/log/lynis-report.dat

Profile

Standard-Profile

# Profile anzeigen
lynis show profiles

# Mit Profil scannen
lynis audit system --profile /etc/lynis/default.prf

Eigenes Profil

# /etc/lynis/custom.prf

# Generelle Einstellungen
config:quick_mode:yes
config:show_only_warnings:yes

# Tests überspringen
skip-test:FILE-6354
skip-test:KRNL-5677

# Plugins
plugin:enabled:yes

Tests überspringen

# In Profil-Datei
skip-test:SSH-7408
skip-test:NETW-2705

# Oder per Kommandozeile
lynis audit system --skip-test SSH-7408 --skip-test NETW-2705

Automatisierung

Cron-Job

#!/bin/bash
# /usr/local/bin/lynis-audit.sh

MAILTO=admin@example.de
REPORT_DIR=/var/log/lynis
DATE=$(date +%Y-%m-%d)

# Verzeichnis erstellen
mkdir -p $REPORT_DIR

# Audit durchführen
lynis audit system --cronjob --report-file $REPORT_DIR/lynis-$DATE.dat > $REPORT_DIR/lynis-$DATE.log 2>&1

# Hardening-Index extrahieren
INDEX=$(grep "hardening_index" $REPORT_DIR/lynis-$DATE.dat | cut -d= -f2)

# Bei niedrigem Index warnen
if [ "$INDEX" -lt 70 ]; then
    echo "Hardening Index: $INDEX" | mail -s "[Lynis] Low Security Score on $(hostname)" $MAILTO
fi

Systemd-Timer

# /etc/systemd/system/lynis-audit.service

[Unit]
Description=Lynis Security Audit

[Service]
Type=oneshot
ExecStart=/usr/local/bin/lynis-audit.sh
# /etc/systemd/system/lynis-audit.timer

[Unit]
Description=Weekly Lynis Audit

[Timer]
OnCalendar=Sun 02:00:00
Persistent=true

[Install]
WantedBy=timers.target

Wichtige Prüfungen

SSH-Hardening

SSH-7408: SSH root login
SSH-7412: SSH protocol version
SSH-7416: SSH password authentication
SSH-7440: SSH AllowUsers/AllowGroups

Kernel-Sicherheit

KRNL-5677: kernel hardening sysctl
KRNL-5820: exec-shield
KRNL-5830: ASLR
KRNL-6000: Kernel modules

Dateisystem

FILE-6310: /tmp mounted separately
FILE-6330: /tmp mount options (noexec,nosuid)
FILE-6354: Sticky bit on world-writable dirs
FILE-6374: umask in /etc/profile

Firewalls

FIRE-4512: iptables installed
FIRE-4513: nftables installed
FIRE-4590: firewall enabled

Hardening umsetzen

SSH-Konfiguration

# /etc/ssh/sshd_config

# SSH-7408: Root-Login deaktivieren
PermitRootLogin no

# SSH-7416: Passwort-Auth deaktivieren
PasswordAuthentication no

# SSH-7440: Benutzer einschränken
AllowUsers admin deploy

# Protokoll und Cipher
Protocol 2
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com

Kernel-Hardening

# /etc/sysctl.d/99-hardening.conf

# ASLR aktivieren
kernel.randomize_va_space = 2

# Exec-Shield
kernel.exec-shield = 1

# Core-Dumps deaktivieren
fs.suid_dumpable = 0

# SYN-Flood-Schutz
net.ipv4.tcp_syncookies = 1

# Source-Routing deaktivieren
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0

# ICMP-Redirects ignorieren
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0

# IP-Spoofing-Schutz
net.ipv4.conf.all.rp_filter = 1
sysctl --system

Dateisystem-Sicherheit

# /etc/fstab
# /tmp mit noexec,nosuid
tmpfs /tmp tmpfs defaults,noexec,nosuid,nodev 0 0

# Remount
mount -o remount /tmp

Berechtigungen

# Sticky-Bit auf World-Writable
find / -type d -perm -0002 -exec chmod +t {} \;

# Umask verschärfen
echo "umask 027" >> /etc/profile

Compliance-Checks

CIS-Benchmark

# Mit CIS-Profil
lynis audit system --profile /etc/lynis/cis.prf

PCI-DSS

lynis audit system --pentest

Audit-Kategorien

# Nur bestimmte Kategorien
lynis audit system --tests-from-category "firewalls ssh"

# Kategorien anzeigen
lynis show categories

Vergleich über Zeit

Baseline erstellen

lynis audit system --cronjob
cp /var/log/lynis-report.dat /var/log/lynis-baseline.dat

Vergleichen

# Hardening-Index vergleichen
BASELINE=$(grep hardening_index /var/log/lynis-baseline.dat | cut -d= -f2)
CURRENT=$(grep hardening_index /var/log/lynis-report.dat | cut -d= -f2)

echo "Baseline: $BASELINE, Current: $CURRENT"

Monitoring-Integration

Prometheus-Metriken

#!/bin/bash
# /usr/local/bin/lynis-metrics.sh

PROM_FILE=/var/lib/prometheus/lynis.prom

# Audit durchführen
lynis audit system --cronjob > /dev/null 2>&1

# Metriken extrahieren
INDEX=$(grep "hardening_index" /var/log/lynis-report.dat | cut -d= -f2)
WARNINGS=$(grep -c "warning\[\]" /var/log/lynis-report.dat)
SUGGESTIONS=$(grep -c "suggestion\[\]" /var/log/lynis-report.dat)

cat > $PROM_FILE << EOF
# HELP lynis_hardening_index Lynis hardening index
# TYPE lynis_hardening_index gauge
lynis_hardening_index $INDEX
# HELP lynis_warnings Number of warnings
# TYPE lynis_warnings gauge
lynis_warnings $WARNINGS
# HELP lynis_suggestions Number of suggestions
# TYPE lynis_suggestions gauge
lynis_suggestions $SUGGESTIONS
# HELP lynis_last_audit_timestamp Last audit timestamp
# TYPE lynis_last_audit_timestamp gauge
lynis_last_audit_timestamp $(date +%s)
EOF

Nagios/Icinga

#!/bin/bash
# /usr/lib/nagios/plugins/check_lynis

INDEX=$(grep "hardening_index" /var/log/lynis-report.dat 2>/dev/null | cut -d= -f2)

if [ -z "$INDEX" ]; then
    echo "UNKNOWN - Could not read lynis report"
    exit 3
elif [ "$INDEX" -lt 50 ]; then
    echo "CRITICAL - Hardening index: $INDEX"
    exit 2
elif [ "$INDEX" -lt 70 ]; then
    echo "WARNING - Hardening index: $INDEX"
    exit 1
else
    echo "OK - Hardening index: $INDEX"
    exit 0
fi

Zusammenfassung

| Befehl | Funktion | |--------|----------| | lynis audit system | System-Audit | | lynis show commands | Verfügbare Befehle | | lynis show profiles | Profile anzeigen | | lynis show categories | Kategorien anzeigen | | lynis update info | Update-Status |

| Option | Wirkung | |--------|---------| | --quick | Schneller Scan | | --cronjob | Für Automatisierung | | --pentest | Pentest-Modus | | --skip-test | Test überspringen |

| Datei | Funktion | |-------|----------| | /var/log/lynis.log | Scan-Log | | /var/log/lynis-report.dat | Report-Daten | | /etc/lynis/default.prf | Standard-Profil |

Fazit

Lynis ist das umfassendste Open-Source-Tool für Linux-Security-Audits. Der Hardening-Index gibt einen schnellen Überblick über den Sicherheitszustand. Die konkreten Empfehlungen ermöglichen systematisches Hardening. Regelmäßige Audits helfen, den Sicherheitsstatus über Zeit zu verfolgen. Für Compliance-Anforderungen wie CIS oder PCI-DSS ist Lynis ein wertvolles Werkzeug.