Top Rootkit- und Virenscanner unter Linux!
ClamAV, chrootkit, rkhunter und lynis – Logfiles auswerten
Nun haben wir unsere Viren-, Malware, Rootkitscanner installiert, konfiguriert und lassen diese regelmäßig das System im Hintergrund prüfen!
Perfekt… zu entspannen und die Verantwortung abzugeben.
Falsch! „Vertrauen ist gut, doch Kontrolle ist besser“
Dieser Artikelabschnitt beschäftigt sich mit der Auswertung der Protokolle oder Logfiles.
In unserer Crontab haben wir bereits deklariert, wo die jeweiligen Auswertungen gespeichert werden sollen:
Zum Beispiel :
ClamAV = /var/log/clamav/scan.log
chrootkit = /usr/sbin/chkrootkit > /var/log/chkrootkit.log
rkhunter = /var/log/rkhunter.log
Lynis = /var/log/lynis.log
Es ist wichtig diese Protokolle regelmäßig zu prüfen, weil die Scanner viele Warnungen protokollieren.
Dies kann auf Sicherheitsverletzungen oder Gefahren hindeuten.
Du solltest diese Warnungen sehr ernst nehmen und auf Systemupdates prüfen.
Kleiner Exkurs zu Logfiles unter Linux
Logfiles unter Linux sind Dateien, die Informationen über das System und die Anwendungen, die darauf ausgeführt werden, aufzeichnen. Diese Logfiles können sehr nützlich sein, um Probleme im System oder in Anwendungen zu erkennen und zu diagnostizieren. Die meisten Linux-Distributionen speichern ihre Logfiles im Verzeichnis /var/log. Hier finden sich Dateien, die Informationen über Systemereignisse, Anmeldungen, Anwendungsprotokolle und andere wichtige Informationen enthalten.
Automatische Benachrichtigung per eMail oder SMS
Wir haben unsere Crontab eingerichtet, weil wir uns nicht zutrauen, diese Scans regelmäßig manuell durchzuführen . Zudem soll es unsere produktive Zeit nicht einschränken.
Das Gleiche möchten wir jedoch auch nicht für die regelmäßige Kontrolle umsetzen:
Hinweis: Dieses Thema ist sehr umfangreich, daher haben wir einen Artikel mit dem Schwerpunkt „AuditTools und Audit-Logging“ verfasst.
Wie kann man sich bei ungewöhnlichen Log-Einträgen automatisch warnen lassen?
Viele der genannten Werkzeuge und Tools haben bereits Konfigurationsmöglichkeiten, sich per eMail benachrichtigen zu lassen.
Man erhält nach jedem Scan eine eMail und wird so ständig informiert.
Logfiles automatisch auswerten mit Logwatch oder Logrotate
Um Logfiles regelmäßig auszuwerten, können sogenannte Logfile-Analysetools wie Logwatch oder Logrotate eingesetzt werden.
Logwatch ist ein einfaches Tool, das täglich eine Zusammenfassung der Logfiles per E-Mail versendet.
Logrotate ist ein Tool, das Logfiles rotiert, d.h. alte Logfiles archiviert und Platz für neue schafft.
Um sich selbst über bestimmte Ereignisse in den Logfiles informieren zu lassen, können Benachrichtigungsdienste wie syslog-ng oder rsyslog genutzt werden. Diese Tools ermöglichen es, Benachrichtigungen per E-Mail oder SMS zu erhalten, wenn bestimmte Ereignisse in den Logfiles auftreten.
Logwatch – Logfile-Analysetools : Installation und Konfiguration
Logwatch ist ein Open-Source-Programm, das Log-Dateien auf Linux-Systemen überwacht und eine tägliche Zusammenfassung der Aktivitäten in einer E-Mail an den Systemadministrator sendet.
Hier sind die Schritte zur Installation und Konfiguration von Logwatch unter verschiedenen Paketmanagern:
- Debian/Ubuntu:
– Öffne das Terminal und gib den Befehl „sudo apt-get install logwatch“ ein, um Logwatch zu installieren.
– Öffne die Konfigurationsdatei „logwatch.conf“ im Verzeichnis „/usr/share/logwatch/default.conf/“ und passe sie an deine Bedürfnisse an.
– Speichere die Änderungen und schließe die Datei.
– Konfiguriere Logwatch, um tägliche Berichte per E-Mail zu senden, indem du die Datei „/etc/cron.daily/logwatch“ öffnest und die E-Mail-Adresse des Administrators einfügst. - Fedora/CentOS: Öffne das Terminal und gib den Befehl „sudo yum install logwatch“ ein, um Logwatch zu installieren.Öffne die Konfigurationsdatei „logwatch.conf“ im Verzeichnis „/usr/share/logwatch/default.conf/“ und passe sie an deine Bedürfnisse an.
Speichere die Änderungen und schließe die Datei.d. Konfiguriere Logwatch, um tägliche Berichte per E-Mail zu senden, indem du die Datei „/etc/cron.daily/logwatch“ öffnest und die E-Mail-Adresse des Administrators einfügst. - Arch Linux: Öffne das Terminal und gib den Befehl „sudo pacman -S logwatch“ ein, um Logwatch zu installieren.Öffne die Konfigurationsdatei „logwatch.conf“ im Verzeichnis „/usr/share/logwatch/default.conf/“ und passe sie an deine Bedürfnisse an.c. Speichere die Änderungen und schließe die Datei.
Konfiguriere Logwatch, um tägliche Berichte per E-Mail zu senden, indem du die Datei „/etc/cron.daily/logwatch“ öffnest und die E-Mail-Adresse des Administrators einfügst.
Logwatch kann auch auf anderen Linux-Distributionen installiert werden, indem der entsprechende Paketmanager verwendet wird. Die Konfiguration kann je nach Bedarf angepasst werden, um die gewünschten Informationen zu überwachen und zu senden. Ich habe mich hier an die wichtigsten Distributionen und Paketmanager gehalten.
Logrotate unter Linux : Installation, Konfiguration und Nutzung
Logrotate ist vermutlich bereits ein Bestandteil Deiner Linux-Distribution.
Öffne Dein Terminal und gebe den Befehl
logrotage ein:
Eine Ausgabe sollte wie folgt erscheinen
logrotate [-dfv?] [-d|--debug] [-f|--force] [-m|--mail=command] [-s|--state=statefile] [--skip-state-lock]
[-v|--verbose] [-l|--log=logfile] [--version] [-?|--help] [--usage] [OPTION…]
Logrotate ist ein Dienstprogramm unter Linux, das Logdateien automatisch rotiert oder bereinigt. Das bedeutet, dass ältere Logdateien automatisch archiviert oder entfernt werden, um Speicherplatz auf der Festplatte zu sparen. Es ist besonders nützlich für Systemadministratoren, die mit vielen Anwendungen arbeiten, die viele Logdateien erzeugen.
Die Konfiguration von Logrotate ist relativ einfach. Die Konfigurationsdatei befindet sich normalerweise unter /etc/logrotate.conf oder /etc/logrotate.d/. In dieser Datei können Sie angeben, welche Logdateien rotiert werden sollen, wie oft sie rotiert werden sollen, wie viele Kopien aufbewahrt werden sollen und wo sie gespeichert werden sollen.
Die grundlegende Syntax sieht so aus:
/path/to/log/file { daily rotate 7 compress missingok notifempty }
Wie betont, die meisten Tools berücksichtigen diese Funktionalität bereits bei der Installation.
Ich nutze Fedora 38:
Der Terminal-Befehl: cat /etc/logrotate.conf
zeigt mir am Ende der Konfiguration folgenden Eintrag an:
#packages drop log rotation information into this directory
include /etc/logrotate.d
Bedeutet: alle Dateien und Konfigurationen, im Verzeichnis /etc/logrotate.d werden berücksichtigt:
Schau man sich nun die Dateien dort an, findet man viele Konfigurationen:
Ein lausiges Beispiel meines Test-Systems:
Befehl:Terminal:
ls /etc/logrotate.d
Ausgabe:
akmods btmp dnf glusterfs iscsiuiolog krb5kdc libvirtd.qemu ppp rkhunter sssd wtmp
bootlog chrony firewalld httpd kadmind libvirtd numad psacct samba wpa_supplicant
Du hast also ein Überblick der aktuellen Konfigurationen und auch über fehlende Konfigurationen.
Auf Grund des Artikelthemas könnte man eine Config-Datei für clamav und chrootkit setzen.
Systemprotokollierungssoftware: Benachrichtigungsdienste wie rsyslog, systemd-journald, syslog-ng
Auch hier solltest Du Dir wenig Gedanken machen, welchen Benachrichtigungsdienst Du eventuell installieren willst.
In der Regel nutzt Deine Linux-Distribution bereits aktiv einen Benachrichtigungsdienste und diesem darfst Du erst einmal vertrauen. Eine Änderung ist zu empfehlen, wenn Du Dich mit der Materie auskennst und spezielle Wünsche hast.
Welcher Dienst ist bei mir bereits installiert?
Um herauszufinden, welcher Dienst bereits installiert ist, ist relativ einfach.
Du kannst Dir Deine installierten Pakete anschauen, oder einfach prüfen, welcher Dienst jetzt gerade aktiv ist
Terminal Befehle:
ps -ef | grep systemd
ps -ef | grep rsyslog
ps -ef | grep syslog-ng
So wäre die Ausgabe, wenn es KEINEN Treffer gibt:
Terminal-Befehl: ps -ef | grep rsyslog
Ausgabe
…… pts/1 00:00:00 grep –color=auto rsyslog~
Ein Treffer könnte wie folgt aussehen:
/usr/lib/systemd/systemd rhgb –switched-root –system –deserialize=31
Du kannst natürlich auch schauen, welche Konfigurationsdateien Du hinterlegt hast:
Die Konfigurationsdateien für die verschiedenen Benachrichtigungsdienste sind in der Regel unterschiedlich benannt und in verschiedenen Verzeichnissen abgelegt. Eine schnelle Überprüfung dieser Konfigurationsdateien kann dir sagen, welchen Dienst du verwendest. Zum Beispiel verwendet rsyslog die Konfigurationsdatei /etc/rsyslog.conf
, während syslog-ng seine Konfiguration in der Datei /etc/syslog-ng/syslog-ng.conf
hat.
Keine der großen Linux-Distributionen nutzt standardmäßig syslog-ng als Standard-Systemprotokollierungssoftware. Die meisten Distributionen wie Ubuntu, Debian, Fedora, CentOS und Red Hat setzen standardmäßig auf rsyslog oder systemd-journald. Es ist jedoch möglich, syslog-ng auf jeder dieser Distributionen zu installieren und als Alternative zu verwenden.
Unterschiede der Systemprotokollierungssoftware/ Benachrichtigungsdienste: rsyslog, systemd-journald, syslog-ng
Am Ende des Tages ist es wichtig zu wissen, welcher Dienst von Deiner Distribution genutzt wird, da Du regelmäßig die Logfiles oder Benachrichtigung prüfen wirst.
Zum Beispiel unter Fedora, wenn nginx nicht startet, oder ggf. Dein IRCD.
Es kann jedoch nicht schaden, kurz über die Unterschiede der Systemdienste zu schauen.
Interessant zu wissen, jedoch für das eigentliche Thema ggf. eher ein kleinerer weiterer Exkurs, allerdings mir kurzen Erläuterungen:
Benachrichtigungsdienste wie systemd, syslog-ng und rsyslog sind auf Linux-Systemen weit verbreitet. Sie sind verantwortlich für die Protokollierung von Systemereignissen und -meldungen und das Senden von Benachrichtigungen an Administratoren oder Systembetreuer.
Systemd ist ein init-System und ein zentraler Bestandteil der meisten Linux-Distributionen. Es bietet eine zentrale Logverwaltung und ermöglicht es Benutzern, Logeinträge mit dem Journalctl-Befehl zu überwachen und zu filtern.
Syslog-ng und rsyslog sind alternative Log-Management-Systeme, die auf den klassischen syslog-Dienst aufbauen. Sie bieten eine erweiterte Funktionalität, wie z.B. die Möglichkeit, Logeinträge zu filtern, zu speichern und an externe Dienste zu senden.
Nutzung von systemd um Logdateien zu überwachen und zu analysieren!
Da Systemd stark vertreten ist und auch bei mir unter Debian und Fedora, werde ich mich nur auf systemd konzentrieren:
Systemd bietet verschiedene Möglichkeiten, um Logdateien zu überwachen und zu analysieren. Eine davon ist das bereits erwähnte Journalctl-Tool, das in den meisten Linux-Distributionen standardmäßig installiert ist.
Mit dem Terminal-Befehl journalctl kannst Du das Systemjournal durchsuchen und filtern. Hier sind einige gängige Verwendungen: Alle Befehle sind im Terminal einzutragen.
Journal anzeigen: journalctl
Dies zeigt das gesamte Systemjournal an, beginnend mit den neuesten Einträgen.
Letzte Einträge anzeigen: journalctl -n
Dies zeigt die neuesten Einträge im Journal an.
Einträge für einen bestimmten Service anzeigen: journalctl -u
Dies zeigt nur Einträge für den angegebenen Dienst an.
Einträge für einen bestimmten Zeitraum anzeigen: journalctl –since „2023-05-01 00:00:00“ –until „2023-05-02 00:00:00“
Dies zeigt nur Einträge für den angegebenen Zeitraum an.
Nach Schlüsselwörtern suchen: journalctl -k
Dies sucht nach dem angegebenen Schlüsselwort im Journal.
Wie immer, kannst Du alle Befehle über den Terminal-Befehl
man journalctl
oder
journalctl -h einsehen.
Eine typische Ausgabe wäre dann:
journalctl [OPTIONEN...] [MATCHES...] Abfrage des Journals. Optionen: --system Zeigt das Systemjournal an --user Zeigt das Benutzerjournal für den aktuellen Benutzer an -M --machine=CONTAINER Arbeitet auf dem lokalen Container -S --since=DATE Zeigt Einträge, die nicht älter als das angegebene Datum sind -U --until=DATE Zeigt Einträge an, die nicht älter als das angegebene Datum sind -c --cursor=CURSOR Zeigt Einträge ab dem angegebenen Cursor an --after-cursor=CURSOR Einträge nach dem angegebenen Cursor anzeigen --show-cursor Zeigt den Cursor nach allen Einträgen an --cursor-file=FILE Einträge nach dem Cursor in DATEI anzeigen und DATEI aktualisieren -b --boot[=ID] Zeigt den aktuellen Boot oder den angegebenen Boot an --list-boots Zeigt knappe Informationen über aufgezeichnete Boote -k --dmesg Zeigt das Kernel-Meldungsprotokoll des aktuellen Bootes -u --unit=UNIT Zeigt Protokolle von der angegebenen Unit an --user-unit=UNIT Zeigt Protokolle von der angegebenen Benutzereinheit -t --identifier=STRING Zeigt Einträge mit dem angegebenen Syslog-Identifikator an -p --priority=RANGE Zeigt Einträge mit der angegebenen Priorität an --facility=FACILITY... Zeigt Einträge mit den angegebenen Einrichtungen an -g --grep=PATTERN Zeigt Einträge mit MESSAGE an, die dem PATTERN entsprechen --case-sensitive[=BOOL] Erzwingt die Unterscheidung zwischen Groß- und Kleinschreibung -e --pager-end Sofortiger Sprung an das Ende des Pagers -f --follow Folgt dem Journal -n --lines[=INTEGER] Anzahl der anzuzeigenden Journaleinträge --no-tail Alle Zeilen anzeigen, auch im Folgemodus -r --reverse Zeigt die neuesten Einträge zuerst an -o --output=STRING Ändern des Journal-Ausgabemodus (short, short-precise, short-iso, short-iso-precise, short-full, short-monotonic, short-unix, verbose, export, json, json-pretty, json-sse, json-seq, cat, with-unit) --output-fields=LIST Auswahl der Felder, die im verbose/export/json-Modus ausgegeben werden sollen --utc Zeit in Koordinierter Weltzeit (UTC) ausgeben -x --catalog Hinzufügen von Erklärungen zur Nachricht, sofern vorhanden
Auditlogging mit auditctl
Ein weiteres wichtiges Audit-Logging-Tool unter Linux ist „auditctl„. Es erlaubt dem Benutzer, die Überwachung des Audit-Systems zu konfigurieren, Regeln zu erstellen und Ereignisse zu filtern. Es erlaubt auch die Einstellung von Alarmen, wenn bestimmte Ereignisse eintreten.
Da dieser Artikel das Scannen von Viren, Malware und Rootkits im Fokus hat, haben wir einen weiteren Artikel verfasst, welcher sich hauptsächlich mit „Audit-Logging“ und Audit-Tools beschäftigt.
Wenn Dich das Thema „Benachrichtigen bei Gefahr“ interessiert hat, dann freuen wir uns, wenn Du Dir weitere Artikel zum Thema anschaust.