Hvordan kan jeg slette alle fail2ban-forbud i Ubuntu? Jeg prøvede alt, men jeg kan ikke få det.
Jeg vil bare slette alle forbud – men jeg kender ikke nogen IP-adresser.
Kommentarer
- Forbudene udføres typisk på IP-adresser gennem din firewall, så du skal se på firewallreglerne.
- ja jeg ved det. men jeg vil rydde alle forbud uden at fortælle en ip-adresse
- ” Jeg prøvede alt ” nej, du har ikke ‘ t. Hvad prøvede du?
Svar
Opdateret svar
Fra og med version 0.10. 0 fail2ban-client
indeholder unban
kommando, der kan bruges på to måder:
unban --all unbans all IP addresses (in all jails and database) unban <IP> ... <IP> unbans <IP> (in all jails and database)
Desuden har kommandoer restart <JAIL>
, reload <JAIL>
og reload
nu også indstillingen --unban
.
Gammelt svar
fail2ban bruger iptables
til at blokere trafik. Hvis du ønsker at se de IP-adresser, der i øjeblikket er blokeret, skal du skrive
iptables -L -n
og kigge efter de forskellige kæder med navnet fail2ban-something
, hvor something
peger på fail2ban-fængslet (for eksempel Chain f2b-sshd
henviser til fængslet sshd
). Hvis du kun vil fjerne blokken for en enkelt IP-adresse <IP>
for en given fængsel <JAIL>
, tilbyder fail2ban sin egen klient:
fail2ban-client set <JAIL> unbanip <IP>
Alternativt kan du bruge linjenumre. Først skal du liste iptables
reglerne med linjenumre:
iptables -L -n --line-numbers
Dernæst kan du bruge
iptables -D fail2ban-somejail <linenumber>
for at fjerne en enkelt linje fra tabellen. Så vidt jeg ved, er der ingen mulighed for at vælge en række linjenumre, så jeg antager, at du bliver nødt til at pakke denne kommando i en for loop:
for lin in {200..1}; do iptables -D fail2ban-somejail $lin done
Her lavede jeg tallet 200 op. Tjek din egen output af kommandoen med --line-numbers
og bemærk, at den sidste linje (med RETURN
) skal forblive. Se @roaimas kommentar nedenfor for ræsonnementet bag nedtælling.
Kommentarer
- Du reddede mig. Mange tak. Tilføj venligst en fuld kommando fordi jeg var nødt til at finde ud af, at jeg har brug for fail2ban-klient foran din kommando. (Fordi jeg er en noob)
Svar
Den bedste måde at fjerne alle IP-adresser på er at indstille bantime til 1 sekund, så frigives al IP med det samme.
fail2ban-client set JailName bantime 1
Derefter kan du indstille den korrekte forbudstid tilbage.
Det er bedre at lade fail2ban gøre unban for dig. Rediger ikke iptables manuelt.
Kommentarer
- Dette er det eneste korrekte svar her. Fail2ban opretholder sin egen ban-database, der skal ryddes uafhængigt Hvert svar, der taler om sletning af iptables-regler, ignorerer, at i det øjeblik fail2ban startes, sikkerhedskopieres det igen og tilføjer de regler, du lige har slettet, tilbage til iptables. Ikke alle fail2ban-konfigurationer bruger iptables til at implementere forbud.
- find alle fængsler med
fail2ban-client status
- Jeg har lige udstedt denne kommando og ser på antallet af IPer i min fængsel sænkes mod nul, da fail2ban behandler fængslet. Det gør det ikke ske virkelig rigtig hurtigt, men at ‘ er OK, der var over fem tusind poster i fængslet. Godt svar!
Svar
seneste fail2ban-client
(0.10) har en unban -all
kommando. Fængsler kan også “genstartes” individuelt, effecti nulstille rydningen af forbuddene.
Hvis du har en ældre version, fungerer dette trick muligvis for automatiske midlertidige forbud: Slet fængslet, der indeholder forbuddet, og genstart fail2ban, så fængslet (nu tom) bliver genskabt.
$ fail2ban-client stop sshd Jail stopped $ systemctl restart fail2ban
Kommentarer
- -all eller —all? Eller –all?
Svar
-
Stop af tjenesten rydder alle tilføjede regler af fail2ban
service fail2ban stop
-
Hvis du ikke har andre iptables-regler, kan du skylle det
iptables -F
Vær forsigtig: dette sletter andre regler i dine iptables .
Kommentarer
- Bare det at stoppe og starte igen var tilstrækkelig.
Svar
Gem iptabel konfiguration til fil
$ iptables-save > iptables.conf
Rediger det med en hvilken som helst editor, du kan lide, end download config tilbage til iptables
$ iptables-restore < iptables.conf
Glem ikke at gemme konfigurationen i iptables, så den bliver valgt op ved genstart
$ service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
Svar
her er en simpel oneliner for at fjerne banerne fail2ban fængsel på den rigtige måde:
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
BEMÆRK: kommandoen iptables tager præfikset “f2b-” foran fængselsnavnet, mens “fail2ban-client” det rigtige fængselsnavn
Kommentarer
- Dette er det bedste svar på fail2ban-versioner nedenfor 0.10. Du kan gå videre med at oprette et alias i .bashrc som fail2ban-purge med en parameter for at rense et helt fængsel. Udskift blot tilbagevendende ord ovenfor med $ 1, og brug alias som fail2ban-purge < JAIL_NAME >.
Svar
På grund af den måde, fail2ban
fungerer, er der kun to mulige løsninger:
- Opret et firewall-konfigurationsscript, der inkluderer
fail2ban
-fængsler, og genstart firewallen. - Fjern firewallreglerne, der blokerer de IPer, du vil fjerne .
Svar
Dette er det script, jeg bruger til at fjerne alle IP-adresser til en ssh-fængsel ( udskift simpelthen sshd-forekomst med navnet på det fængsel, du har brug for … f.eks. 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
Måske kan dette script hjælpe nogen med en version < 0.10.0 som mig:
#!/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