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
- ContainerHardening-Index
0-49: Kritisch
50-69: Verbesserungsbedürftig
70-84: Gut
85-100: AusgezeichnetInstallation
Debian/Ubuntu
apt install lynisCentOS/RHEL
dnf install epel-release
dnf install lynisAktuellste Version (Git)
cd /opt
git clone https://github.com/CISOfy/lynis
cd lynis
./lynis audit systemVersion prüfen
lynis --version
lynis update infoGrundlegende Nutzung
System-Audit
lynis audit systemSchneller Scan
lynis audit system --quickOhne Interaktion
lynis audit system --no-colors --quietMit Cronjob-Modus
lynis audit system --cronjobAusgabe 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 gefundenHardening-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.datHTML-Report generieren
# Mit lynis-reporter (Python)
pip install lynis-reporter
lynis-reporter /var/log/lynis-report.dat -o report.htmlJSON-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.datProfile
Standard-Profile
# Profile anzeigen
lynis show profiles
# Mit Profil scannen
lynis audit system --profile /etc/lynis/default.prfEigenes 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:yesTests ü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-2705Automatisierung
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
fiSystemd-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.targetWichtige Prüfungen
SSH-Hardening
SSH-7408: SSH root login
SSH-7412: SSH protocol version
SSH-7416: SSH password authentication
SSH-7440: SSH AllowUsers/AllowGroupsKernel-Sicherheit
KRNL-5677: kernel hardening sysctl
KRNL-5820: exec-shield
KRNL-5830: ASLR
KRNL-6000: Kernel modulesDateisystem
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/profileFirewalls
FIRE-4512: iptables installed
FIRE-4513: nftables installed
FIRE-4590: firewall enabledHardening 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.comKernel-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 = 1sysctl --systemDateisystem-Sicherheit
# /etc/fstab
# /tmp mit noexec,nosuid
tmpfs /tmp tmpfs defaults,noexec,nosuid,nodev 0 0
# Remount
mount -o remount /tmpBerechtigungen
# Sticky-Bit auf World-Writable
find / -type d -perm -0002 -exec chmod +t {} \;
# Umask verschärfen
echo "umask 027" >> /etc/profileCompliance-Checks
CIS-Benchmark
# Mit CIS-Profil
lynis audit system --profile /etc/lynis/cis.prfPCI-DSS
lynis audit system --pentestAudit-Kategorien
# Nur bestimmte Kategorien
lynis audit system --tests-from-category "firewalls ssh"
# Kategorien anzeigen
lynis show categoriesVergleich über Zeit
Baseline erstellen
lynis audit system --cronjob
cp /var/log/lynis-report.dat /var/log/lynis-baseline.datVergleichen
# 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)
EOFNagios/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
fiZusammenfassung
| 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.