Die Zeiten in denen Linuxuser müde lächeln, wenn die Windows Welt wieder in eine „Es gibt einen neuen Wurm“-Panik ausbricht, sind schon lange vorbei. Auch Linuxsysteme sind angreifbar und sollten regelmässig gecheckt werden. Das gilt nicht nur für Serversysteme, sondern auch für Arbeitsrechner.
Da wir hier gerade ne Umstellung hatten, habe ich heute mal wieder ein klein wenig gebastelt. Unser internes Netzwerk hat schliesslich auch einen Server. Ich persönlich bin großer Fan von schlanken und dedizierten Systemen. X oder sonstiges GUI Zeug kommt mir nicht auf Serversysteme. Generell bin ich da (und auch bei meinem Arbytesrechnern) großer Fan von debian. Deshalb ist dies eine debianspezifischer Eintrag, wobei die Unterschiede zu anderen Linuxsystemen nur minimal sind.
Als Teil der Basisabsicherungsüberprüfung (ja, es war eine zu kurze Nacht) sind bei mir unter anderem rkhunter und chkrootkit im Einsatz. Beide checken das System nach Veränderungen und Auffälligkeiten. Dabei ergänzen sie sich toll. rkhunter checkt beispielsweise die MD5-Fingerprints von eventuell kompromittierten Dateien. Es sucht Backdoors, Rootkits und Exploits. Durchleuchtet den Kernel nach suspekten Zeichenketten, prüft die Rechte von Ordnern und Dateien und protokolliert munter alles, was er auf seinem cronjobbasierten Gang durch’s System entdeckt. Dabei lässt es sich ziemlich gut konfigurieren und über seinen zeitweiligen Übereifer (Stichwort false positives), kann ich hinweg sehen. Lieber einmal zuviel gemeldet, als zu spät. Es bietet sich an, da nach und nach tiefer einzusteigen.
Eigentlich wollte ich nicht wirklich nen Tutorial schreiben, bin aber gerade schön im Schreibfluss. Vielleicht inspiriere ich ja jemanden, eine ähnliche Konfiguration zu fahren. Die Basisinstallation auf debian Systemen sollte kurz nach der Installation des OS via aptitude / apt-get install rkhunter erfolgen. Der Hintergrund ist, dass ein System möglichst jungfräulich geprüft werden sollte. Wenn ein System schon einige Stunden/Tage/… online ist, kann es bereits kompromittiert sein. Das geht manchmal schneller als Admin denkt. Die Alternative zum jungfräulichen System ist nen LiveCD-Scan.
Nach der Installation bietet sich ein rkhunter –update an. rkhunter -c prüft dann erstmal das System durch. Zwischendurch muss immer wieder mit Enter ein Block als gelesen bestätigt werden. Das lässt sich mit –skip-keypress unterbinden, was sich bei nem Erstscan aber nicht empfielt. Nach dem Scan kann ein Cronjob eingerichtet werden, damit die Überprüfungen regelmässig ablaufen.
Zuerst muss die Datei /etc/default/rkhunter angepasst werden. Wichtig ist die Anpassung für den Cronjob. Es gibt verschiedene Wege dies zu tun. Meiner ist ein simples Triggern via Cronjob. Keep it simple.
Hierzu ist ein Beispieleintrag in der /etc/crontab
0 * * * * root /usr/bin/rkhunter -c --cronjob
für nen stündlichen Job. Die Protokolldatei liegt standartmässig in /var/log/rkhunter.log.
Das reicht mir aber nicht. Ich will ne Email auf mein Smartphone und zwar stündlich. Aus dem Heimnetzwerk raus.
Um mir das ganze Konfigurieren von Exim und Postfix und Dovecot zu schenken, greife ich auf ne externe Emailadresse zurück. Reicht für den Zweck völlig 🙂
Dazu ist das Paket Ssmtp perfekt.
Hierzu muss man nur in der Datei /etc/ssmtp/ssmtp.conf die Zugangsdaten für den externen Mailserver eintragen
root=deine@externeemail.tld
hostname=deinhostname.tld
FromLineOverride=YES
AuthUser=deine@externeemail.tld
AuthPass=deinpasswort
#wenn der Mailserver kein TLS hat, sprecht bitte dringend euren Admin drauf an, ansonsten
UseTLS=YES
UseSTARTTLS=YES
mailhub=externermailserver.tld:587
#ohne TLS einfach
UseTLS=NO
UseSTARTTLS=NO
mailhub=emailmailserver.tld
Vor dem Mailen muss aber noch die /etc/ssmtp/revaliases angepasst werden, sonst gibt es nen fuckup beim Mailserver, weil der Hostname nicht dem entspricht, was er vorgibt.
In der etc/ssmtp/revaliases reicht ein einfaches:
root:deine@externeemail.tld #entsprechend der ssmtp.conf
Wobei, testet erst einmal den externen Mailserver so ohne die Änderungen in der revaliases und wenn es KEINE Fehler ala „Sender address rejected: not owned by user“ gibt, schimpft mit eurem Mailserveradmin und erinnert ihn dran, dass er dringend nen Blick auf seine config wirft!
Back2Topic. Eine Mail schickt ihr einfach per Console:
mail -vs "This is not a Test" empfaenger@dasolleshin.tld
Testmode
.
Cc:
Soweit so gut. Nun soll noch rkhunter schön seine Mails reporten. Hier ist ein Blick in die /etc/rkhunter.conf nötig.
Ja, hier lässt sich viel anpassen und darüber lassen sich Romane schreiben. Hier können explizit Whitelisten gepflegt werden und ne Menge kann kaputt gehen. Es empfiehlt sich jedoch, nach und nach tiefer in die Materie einzusteigen und mit rkhunter von seinem System zu lernen. Zunächst wollen wir aber nur Mails bekommen. Hierzu gibt es auch diverse Wege. Ein
MAIL-ON-WARNING=empfaenger@dasolleshin.tld
reicht erstmal völlig!
Dann müssen wir nochmal den Cronjob anpassen und unseren alten Eintrag anpassen.
0 * * * * root /usr/bin/rkhunter -c --cronjob --report-warnings-only | mail -s "rkhunter pruefung" empfaenger@dasolleshin.tld
Während wir warten, ob uns eine Email zur nächsten vollen Stunde zugeschickt wird, können wir chrootkit installieren. Doppelt hält in dem Fall echt besser!
Das Gute am chrootkit ist: wir sind in 5 Minuten fertig!
In der /etc/chkrootkit.conf muss mindestens
RUN_DAILY="true"
gesetzt werden.
Die Crontab noch um ein
30 * * * * root /usr/sbin/chkrootkit | mail -s "chkrootkit pruefung" empfaenger@dasolleshin.tld
ergänzen und abwarten.
Sollte alles richtig laufen, und sollten die iptables eures Heimnetzwerkes auch Pakete an und von Port 587 zulassen, werden zwei Emails ausgeliefert. Chkrootkit schickt nen volles Protokoll.
Die Mail des rkhunters sollte im Idealfall aber leer sein. Der Hintergrund ist einfach: nur Fehler/Warnings werden gemailt. Damit kann man nun verschieden umgehen. Eine Möglichkeit ist es, den Cronjobaufruf in ein Shellscriptaufruf umzuleiten, der eine Prüfung via rkhunter macht und die dann, bei einem leeren Ergebnis, eine Meldung ala „alles ok hier“ erzeugt, welche statt dessen gemailt wird. Eine andere Möglichkeit ist es, nur dann eine Email zu versenden, wenn wirklich was gefunden wurde. Oder man pint die Protokolldatei als Attachment an. Selbiges geht übrigens auch beim chkrootkit. Und ein rkhunter –update kann man übrigens auch super per Cronjob ausführen :). Und – und – und. Es gibt n Möglichkeiten.
Aber da ich ja ursprünglich eh kein Tutorial schreiben wollte, sondern eigentlich nur meine kleine Heimnetzwerkadmin-Mail-Konfig posten wollte, ist es eh schon mehr als genug geschrieben. Es soll und kann nur einen kleinen Einblick geben. Vielleicht inspiriert es den einen oder anderen und vielleicht hat auch jemand Anmerkungen, von denen ich lernen kann.
Haltet eure Systeme sauber 😉
__________________________________
gpg –detach-sign -a ischtar