Jak mogę usunąć wszystkie bany fail2ban w Ubuntu? Próbowałem wszystkiego, ale nie rozumiem.
Chcę tylko usunąć wszystkie zakazy - ale nie znam żadnych adresów IP.
Jak mogę usunąć wszystkie bany fail2ban w Ubuntu? Próbowałem wszystkiego, ale nie rozumiem.
Chcę tylko usunąć wszystkie zakazy - ale nie znam żadnych adresów IP.
Odpowiedzi:
Od wersji 0.10.0 fail2ban-client
zawiera unban
polecenie, którego można używać na dwa sposoby:
unban --all unbans all IP addresses (in all
jails and database)
unban <IP> ... <IP> unbans <IP> (in all jails and
database)
Ponadto restart <JAIL>
, reload <JAIL>
i reload
komendy teraz też mają --unban
opcję.
fail2ban używa iptables
do blokowania ruchu. Jeśli chcesz zobaczyć adresy IP, które są obecnie zablokowane, wpisz
iptables -L -n
i poszukaj różnych nazwanych łańcuchów fail2ban-something
, gdzie something
wskazuje na więzienie fail2ban (na przykład Chain f2b-sshd
odnosi się do więzienia sshd
). Jeśli chcesz usunąć blok tylko dla jednego adresu IP <IP>
dla danego więzienia <JAIL>
, fail2ban oferuje własnego klienta:
fail2ban-client set <JAIL> unbanip <IP>
Alternatywnie możesz użyć numerów linii. Najpierw wypisz iptables
reguły z numerami linii:
iptables -L -n --line-numbers
Następnie możesz użyć
iptables -D fail2ban-somejail <linenumber>
aby usunąć pojedynczy wiersz ze stołu. O ile wiem, nie ma opcji wyboru zakresu numerów linii, więc myślę, że musiałbyś zawinąć to polecenie w pętlę for:
for lin in {200..1}; do
iptables -D fail2ban-somejail $lin
done
Tutaj podniosłem liczbę 200. Sprawdź własne dane wyjściowe polecenia za pomocą --line-numbers
i zwróć uwagę, że ostatni wiersz (z RETURN
) powinien pozostać. Zobacz komentarz @ roaima poniżej, aby zapoznać się z uzasadnieniem odliczania.
echo {5..1}
spowoduje 5 4 3 2 1
.
Najlepszym sposobem na odblokowanie wszystkich adresów IP jest ustawienie bantime na 1 sekundę, a następnie wszystkie adresy IP zostaną natychmiast zwolnione.
fail2ban-client set JailName bantime 1
Następnie możesz ustawić właściwy czas blokady.
Lepiej pozwolić, by fail2ban zrobił dla ciebie odblokowanie. Nie edytuj ręcznie iptables samodzielnie.
fail2ban-client status
Najnowszy fail2ban-client
(0.10) ma unban -all
polecenie. Więzienia można również indywidualnie „restartować”, skutecznie usuwając zakazy.
Jeśli masz starszą wersję, ta sztuczka może działać w przypadku automatycznych tymczasowych zakazów: usuń więzienie zawierające zakaz, a następnie uruchom ponownie fail2ban, aby odtworzyć (teraz puste) więzienie.
$ fail2ban-client stop sshd
Jail stopped
$ systemctl restart fail2ban
Zapisz konfigurację iptable w pliku
$ iptables-save > iptables.conf
Edytuj go za pomocą dowolnego edytora, który Ci się podoba. Następnie wczytaj konfigurację z powrotem do iptables
$ iptables-restore < iptables.conf
Nie zapomnij zapisać konfiguracji w iptables, aby mogła zostać pobrana przy ponownym uruchomieniu
$ service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
Oto prosty oneliner, aby we właściwy sposób odblokować całe więzienie fail2ban:
iptables -L f2b-recidive -n | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | grep -v 0.0.0.0 | xargs -n 1 fail2ban-client set recidive unbanip
UWAGA: komenda iptables przyjmuje przedrostek „f2b-” przed nazwą więzienia, a „fail2ban-client” rzeczywistą nazwę więzienia
Ze względu na sposób fail2ban
działania istnieją tylko dwa możliwe rozwiązania:
fail2ban
więzienia i zrestartuj zaporę ogniową.To jest skrypt, którego używam do odblokowania wszystkich adresów IP dla więzienia ssh (wystarczy zastąpić sshd okazją potrzebną nazwą więzienia ... np. Mysqld-auth)
#!/bin/bash
j=$(iptables -L f2b-sshd | grep -c 'REJECT')
for ((i=1;i<=j;i++))
do
fail2ban-client set sshd unbanip $(fail2ban-client status sshd | grep 'Banned IP list:' | cut -c23-)
done