fail2ban-Filter für log4j-Angriffe CVE-2021-44228

Gepostet von Marcus am December 13th at 2:05am

Seit letztem Freitag haben Admins weltweit mit Angriffen auf log4j (CVE-2021-44228) zu kämpfen. In unserer Agentur haben wir glücklicherweise keine für diesen Angriff anfällige Server, sehen aber zahlreiche Versuche in den Logfiles.

Um dem entgegenzuwirken, habe ich einen kleinen fail2ban-Filter geschrieben, der die aktuell auf unseren Maschinen auftauchenden log4j-Angriffe zu erkennen und zumindest zu blocken.

fail2ban-log4j bei Github

Installation

Die Datei muss in den Filter-Ordner von fail2ban kopiert werden, normalerweise ist dies
/etc/fail2ban/filter.d
oder ähnlich.

Anschließend fügt man eine apache-jndi-Section in die jail.local oder jail.conf ein:

[apache-jndi]
enabled = true
port = http,https
logpath = /var/log/apache2/access.log
bantime = 86400
maxretry = 1

Für Server, auf denen mehrere VirtualHosts definiert sind, können Wildcards helfen:

[apache-jndi]
enabled = true
port = http,https
logpath = /var/www/*/logs/access.log
bantime = 86400
maxretry = 1

Server, die mit ispConfig verwaltet werden, haben in der Regel eine Verzeichnisstruktur mit .../clientX/webY/... - für dieses Szenario funktioniert

logpath = /var/www/clients/client*/web*/log/access.log

Effektivität

Die RegEx erwischt Logzeilen, in denen "jndi:ldap" und eine verschleierte Variante, die "lower" nutzt.
Sobald mir neue auffallen, werde ich sie hinzufügen.

Marcus am December 13th at 2:05am