Im ersten Artikel wurde der Schwachstellenscanner Lynis vorgestellt und wie man Reports erstellen kann. In diesem How-TO gehe ich auf die praktische Verwendung mit Check_MK ein, um den Index der laufenden Berichte zu überprüfen.
Ablauf
- Report wird mittels Cron auf dem System gespeichert
- check_mk überprüft, wie aktuell der Report ist und liest den Hardening-Index aus
- Ab einem Wert von 90 wird eine Warnung (Gelb) ausgegeben, unter 50 geht der Check auf Kritisch (Rot)
Einrichtung
Vorbedingungen
In diesem Artikel verwende ich die Check-MK Version 1.2.6p16. Das Zielsystem, auf dem die Reports erstellt werden, ist ein CentOS7, der Check-MK-Agent wurde mittels Repository installiert. Daher schauen meine Verzeichnisse so aus:
Version: 1.2.6p16
AgentOS: linux
AgentDirectory: /etc/check-mk-agent
DataDirectory: /var/lib/check_mk_agent
SpoolDirectory: /var/lib/check_mk_agent/spool
PluginsDirectory: /usr/share/check-mk-agent/plugins
LocalDirectory: /usr/share/check-mk-agent/local
Cron anpassen
Ich verwende das Beispiel-Skript von der CISOfy Homepage, in dem die Ausgabedateien und Pfade angepasst werden:
#!/bin/sh
AUDITOR="automated"
LOG_DIR="/var/log/lynis"
REPORT="$LOG_DIR/lynis-report.dat"
DATA="$LOG_DIR/lynis-report.txt"
# Run Lynis
./lynis audit system --auditor "${AUDITOR}" --cronjob > ${REPORT}
if [ -f /var/log/lynis-report.dat ]; then
mv /var/log/lynis-report.dat ${DATA}
fi
# The End
Skript speichern, ausführbar machen, Log-Verzeichnis anlegen und das Skript als root in die crontab eintragen:
chmod a+x /etc/cron.daily/lynis mkdir -p /var/log/lynis root@host: crontab -e
Bei mir wird das Skript täglich um 15 Minuten nach Mitternacht ausgeführt:
15 0 * * * /etc/cron.daily/lynis
Cron testen
Mit ./etc/cron.daily/lynis
sollte im Log-Verzeichnis jetzt 2 Dateien liegen:
-rw-r--r--. 1 root root 22K 30. Jun 14:21 lynis-report.dat -rw-r-----. 1 root root 64K 30. Jun 14:21 lynis-report.txt
Wir brauchen den Index-Wert:
cat /var/log/lynis/lynis-report.txt| grep "hardening_index" hardening_index=67
CheckMK Fileinfo abfragen
Als nächstes wird die fileinfo.cfg angelegt bzw. bearbeitet, wenns sie bereits vorhanden ist. Der Inhalt besteht aus dem Link auf den Report.
$ cat /etc/check-mk-agent/fileinfo.cfg /var/log/lynis/lynis-report.txt
Mit dieser Abfrage kann im Check_MK Host festgelegt werden, wie alt diese Datei maximal sein darf, bevor eine Warnung ausgegeben wird.
Check_MK Index abfragen
Das Auslesen des Hardening Indexes erledigt dieses Skript von MarkR aus dem Nagios Exchange. Die Reportfile-Variable muss an unsere Bedürfnisse angepasst werden, gespeichert wird das Skript unter check_lynis
(und wieder ausführbar machen!)
cat /usr/share/check-mk-agent/plugins/check_lynis | grep "reportfile" reportfile="/var/log/lynis/lynis-report.txt"
Damit Check_MK dieses Skript direkt auf dem Zielsystem auslesen kann, verwenden wir MRPE. Hier die dazugehörige Konfig-Datei mit Inhalt:
cat /etc/check-mk-agent/mrpe.cfg Lynis_Index /usr/share/check-mk-agent/plugins/check_lynis
Check_MK Output testen
ein check-mk-agent
, abgesetzt auf unserem Zielsystem zeigt an, wenn der Agent alles korrekt auslesen kann.
Konfiguration am Check_MK Host
Alle weiteren Schritte passieren auf dem Check-MK Host in der Shell oder im WATO, dem Web-Interface von Check-MK.
Ich gehe davon aus, dass unser Zielrechner bereits als Host mit Services im WATO hinterlegt ist.
Den MRPE-Check muss noch eingetragen werden:
cmk -I --checks=mrpe taurus OMD[hpz]:~/share/check_mk/checks$ check_mk -d taurus | grep -A5 mrpe <<>> (check_lynis) Lynis_Index 1 WARN Index: 67 << >> WARN Index: 67 << >> 1
Über Hosts & Service Parameters / Parameters for discovered services / Size and age of single files
definieren wir eine neue Regel:
Jetzt noch einmal die Services für das Zielsystem neu einlesen und die 2 Checks sollten gefunden werden.