Hur kan jag ta bort alla fail2ban-förbud i Ubuntu? Jag försökte allt men jag förstår inte det.
Jag vill bara ta bort alla förbud – men jag vet inte några IP-adresser.
Kommentarer
- Förbuden görs vanligtvis på IP-adresser via din brandvägg, så du bör titta på brandväggsreglerna.
- ja jag vet. men jag vill ta bort alla förbud utan att berätta en ip-adress
- ” Jag försökte allt ” nej du ’ t. Vad försökte du?
Svar
Uppdaterat svar
Från och med version 0.10. 0 fail2ban-client
har kommandot unban
som kan användas på två sätt:
unban --all unbans all IP addresses (in all jails and database) unban <IP> ... <IP> unbans <IP> (in all jails and database)
Dessutom har kommandona restart <JAIL>
, reload <JAIL>
och reload
nu också alternativet --unban
.
Gammalt svar
fail2ban använder iptables
för att blockera trafik. Om du vill se de IP-adresser som för närvarande är blockerade skriver du
iptables -L -n
och letar efter de olika kedjorna med namnet fail2ban-something
, där something
pekar på fail2ban-fängelset (till exempel Chain f2b-sshd
hänvisar till fängelset sshd
). Om du bara vill ta bort blocket för en enskild IP-adress <IP>
för en viss fängelse <JAIL>
, erbjuder fail2ban sin egen klient:
fail2ban-client set <JAIL> unbanip <IP>
Alternativt kan du använda radnummer. Lista först iptables
reglerna med radnummer:
iptables -L -n --line-numbers
Därefter kan du använda
iptables -D fail2ban-somejail <linenumber>
för att ta bort en enda rad från tabellen. Såvitt jag vet finns det inget alternativ att välja ett rad radnummer, så jag antar att du måste slå in kommandot i en for loop:
for lin in {200..1}; do iptables -D fail2ban-somejail $lin done
Här tog jag upp siffran 200. Kontrollera kommandot med --line-numbers
och notera att den sista raden (med RETURN
) ska stanna. Se @roaimas kommentar nedan för resonemanget bakom nedräkningen.
Kommentarer
- Du räddade mig. Tack så mycket. Lägg till ett fullständigt kommando eftersom jag var tvungen att räkna ut att jag behöver fail2ban-klient i fronter av ditt kommando. (Eftersom jag är en noob)
Svar
Det bästa sättet att avblockera alla IP-adresser är att ställa in bantime till 1 sekund, då frigörs hela IP-adressen direkt.
fail2ban-client set JailName bantime 1
Därefter kan du ställa in rätt förbjudningstid.
Det är bättre att låta fail2ban göra unban för dig. Redigera inte iptables manuellt.
Kommentarer
- Det här är det enda rätta svaret här. Fail2ban upprätthåller sin egen bandatabas som måste rensas oberoende Varje svar som talar om att ta bort iptables-regler ignorerar att ögonblicket som fail2ban startas, säkerhetskopierar det igen de regler som du just raderat till iptables. Inte alla fail2ban-konfigurationer använder iptables för att implementera förbud.
- hitta alla fängelser med
fail2ban-client status
- Jag har just utfärdat det här kommandot och tittar på hur många IP-adresser i mitt fängelse minskar mot noll när fail2ban bearbetar fängelset. händer riktigt riktigt snabbt, men att ’ är OK, det fanns över fem tusen poster i fängelset. Bra svar!
Svar
senaste fail2ban-client
(0.10) har ett unban -all
-kommando. Fängelser kan också ”startas om”, effecti väldigt rensa förbuden.
Om du har en äldre version kan detta trick fungera för automatiska tillfälliga förbud: ta bort fängelset som innehåller förbudet och starta sedan om fail2ban så att fängelset (nu tomt) återskapas.
$ fail2ban-client stop sshd Jail stopped $ systemctl restart fail2ban
Kommentarer
- -all eller —all? Eller – alla?
Svar
-
Att stänga av tjänsten rensar alla regler som läggs till av fail2ban
service fail2ban stop
-
Om du inte har några andra iptables-regler kan du spola det
iptables -F
Var försiktig: detta raderar alla andra regler i dina iptables .
Kommentarer
- Det var tillräckligt att bara stoppa och sedan börja om igen.
Svar
Spara iptable config i filen
$ iptables-save > iptables.conf
Redigera den med vilken redigerare du gillar än ladda konfigurera tillbaka till iptables
$ iptables-restore < iptables.conf
Glöm inte att lagra konfigurationen i iptables så att den väljs upp vid omstart
$ service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
Svar
här är en enkel oneliner för att avblockera hela fail2ban-fängelse på rätt sätt:
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
OBS: kommandot iptables tar prefixet ”f2b-” före fängelsens namn medan ”fail2ban-client” det riktiga fängelsens namn
Kommentarer
- Detta är det bästa svaret för fail2ban-versioner under 0.10. Du kan gå vidare och skapa ett alias i .bashrc som fail2ban-purge med en parameter för att rensa ett helt fängelse. Byt bara tillbaka ordet ovan med $ 1 och använd alias som fail2ban-purge < JAIL_NAME >.
Svar
På grund av hur fail2ban
fungerar finns det bara två möjliga lösningar:
- Skapa ett brandväggskonfigurationsskript som innehåller
fail2ban
-fängelser och starta om brandväggen. - Ta bort brandväggsreglerna som blockerar IP-adresserna som du vill avblockera .
Svar
Detta är det skript jag använder för att avblockera alla IP-adresser för ett ssh-fängelse ( ersätt helt enkelt sshd-förekomst med namnet på fängelset du behöver … t.ex. 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
Svar
Det här skriptet kanske kan hjälpa någon med en version < 0.10.0 som jag:
#!/bin/bash for JAIL in $(fail2ban-client status | grep "Jail list:" | awk "BEGIN {FS="\t"} {print $2}" | sed "s/, / /g") do for IP in $(fail2ban-client status ${JAIL} | grep "Banned IP list:" | awk "BEGIN {FS="\t"} {print $2}" | sed "s/ /\n/g") do fail2ban-client set ${JAIL} unbanip ${IP} done done unset JAIL IP exit 0