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:
fileinfo.cfg Regel

Jetzt noch einmal die Services für das Zielsystem neu einlesen und die 2 Checks sollten gefunden werden.
Lynis Age OK

Lynis Warnung