Zrobiłem więc wiele badań, jak to zrobić po tym, jak ten sam adres IP uderzył w mój klaster serwerów sieciowych jeden po drugim. Ponieważ korzystam z AWS, pomyślałem, że może być prosty sposób, który działa pięknie w pierwszych dwóch dniach testowania 5 serwerów.
Pierwszą rzeczą, którą polecam, jest tymczasowe wyłączenie SELinux, poradzimy sobie z tym na końcu. Nie jestem ekspertem SELinux, ale to, co zrobiłem, działa do tej pory.
Podstawowym wymaganiem jest udostępnione źródło plików, używam AWS EFS. Po udostępnieniu i zamontowaniu nowego dysku zmieniłem logtarget w /etc/fail2ban/fail2ban.conf na podfolder na dysku EFS.
logtarget = /efsmount/fail2ban/server1.log
Potem napisałem prosty filtr i umieściłem go w /etc/fail2ban/filter.d/fail2ban-log.conf
[Definition]
failregex = .* Ban <HOST>
ignoreregex =
Dodano filtr do /etc/fail2ban/jail.local
[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
Następnie ponownie uruchomiłem fail2ban
sudo fail2ban-client reload
Jak na razie dobrze! Nie, bolesną częścią jest SELinux. Po tym, jak pozwoliłem trochę uruchomić fail2ban, uruchomiłem tę komendę, która pozwoliłaby fail2ban przez filtry.
sudo grep fail2ban /var/log/audit/audit.log | sudo audit2allow -M fail2ban-nfs
Audit2allow powie Ci, aby uruchomić to polecenie
sudo semodule -i fail2ban-nfs.pp
Nadal sprawdzam moje dzienniki SELinuksa tu i tam, aby sprawdzić, czy są jakieś odmowy. Jeśli ktoś ma wskazówkę, jak uzyskać czysty SELinux za pomocą innej metody, która byłaby niesamowita.
sudo cat /var/log/audit/audit.log |grep fail2ban |grep denied
W tym momencie wciąż pojawiały się błędy podczas restartowania fail2ban. Wystąpił błąd podczas używania action = action_mwl w jail.local. Po trochę googlingu znalazłem to, które działa do tej pory. Z tego, co przeczytałem, z powodu podziałów linii w dyrektywie logpath wskazujących na wiele plików. Próbowałem z przecinkami, spacjami itp. Nic innego nie działało z Action_mwl.
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
Nie zapomnij ponownie włączyć SELinux!