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.
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
Die RegEx erwischt Logzeilen, in denen "jndi:ldap" und eine verschleierte Variante, die "lower" nutzt.
Sobald mir neue auffallen, werde ich sie hinzufügen.