Deshalb habe ich eine Reihe von Nachforschungen angestellt, nachdem ich beobachtet hatte, wie dieselbe IP-Adresse nacheinander auf meinen Cluster von Webservern auftrat. Da ich AWS benutze, dachte ich, dass es einen einfachen Weg geben könnte und dass er in meinen ersten zwei Tagen des Testens von 5 Servern wunderbar funktioniert.
Als erstes empfehle ich, SELinux vorübergehend zu deaktivieren. Wir werden uns am Ende darum kümmern. Ich bin kein SELinux-Experte, aber was ich getan habe, funktioniert bisher.
Die Hauptanforderung ist eine gemeinsam genutzte Dateiquelle. Ich verwende AWS EFS. Nachdem das neue Laufwerk bereitgestellt und bereitgestellt wurde, habe ich das Protokollziel in /etc/fail2ban/fail2ban.conf in einen Unterordner im EFS-Laufwerk geändert.
logtarget = /efsmount/fail2ban/server1.log
Dann habe ich einen einfachen Filter geschrieben und in /etc/fail2ban/filter.d/fail2ban-log.conf platziert
[Definition]
failregex = .* Ban <HOST>
ignoreregex =
Filter zu /etc/fail2ban/jail.local hinzugefügt
[fail2ban-log]
enabled = true
port = http,https
findtime = 86400 ; 1 day
logpath = /efsmount/fail2ban/server1.log
/efsmount/fail2ban/server2.log
/efsmount/fail2ban/server3.log
/efsmount/fail2ban/server4.log
maxretry = 1
Dann startete fail2ban neu
sudo fail2ban-client reload
So weit, ist es gut! Nein, der schmerzhafte Teil ist SELinux. Nachdem ich fail2ban eine Weile laufen ließ, führte ich diesen Befehl aus, der fail2ban durch die Filter lassen würde.
sudo grep fail2ban /var/log/audit/audit.log | sudo audit2allow -M fail2ban-nfs
Audit2allow fordert Sie auf, diesen Befehl auszuführen
sudo semodule -i fail2ban-nfs.pp
Ich überprüfe immer noch meine SELinux-Protokolle hier und da, um festzustellen, ob weitere Ablehnungen vorliegen. Wenn jemand einen Tipp hat, wie man dieses klare SELinux mit einer anderen Methode erreicht, wäre das großartig.
sudo cat /var/log/audit/audit.log |grep fail2ban |grep denied
Zu diesem Zeitpunkt gab es noch Fehler beim Neustart von fail2ban. Bei der Verwendung von action = action_mwl in jail.local ist ein Fehler aufgetreten. Nach ein bisschen googeln habe ich das gefunden, was bisher funktioniert. Nach dem, was ich gelesen habe, ist es wegen der Zeilenumbrüche in der logpath-Direktive, die auf mehrere Dateien verweisen. Ich habe es mit Kommas, Leerzeichen usw. versucht, sonst hat nichts mit action_mwl funktioniert.
action_mwm = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
%(mta)s-whois-matches[name=%(__name__)s, dest="%(destemail)s", chain="%(chain)s"]
action = %(action_mwm)s
Vergessen Sie nicht, SELinux wieder einzuschalten!