Hvordan kan jeg slette alle fail2ban-forbud i Ubuntu? Jeg prøvde alt, men jeg skjønner ikke det.
Jeg vil bare slette alle forbud – men jeg vet ikke noen IP-adresser.
Kommentarer
- Forbudene gjøres vanligvis på IP-adresser gjennom brannmuren, så du bør se på brannmurreglene.
- ja jeg vet. men jeg vil fjerne alle forbud uten å fortelle en ip-adresse
- » Jeg prøvde alt » nei du gjorde ikke ‘ t. Hva prøvde du?
Svar
Oppdatert svar
Fra og med versjon 0.10. 0 fail2ban-client
inneholder unban
-kommandoen som kan brukes på to måter:
unban --all unbans all IP addresses (in all jails and database) unban <IP> ... <IP> unbans <IP> (in all jails and database)
Videre har kommandoene restart <JAIL>
, reload <JAIL>
og reload
nå også alternativet --unban
.
Gammelt svar
fail2ban bruker iptables
for å blokkere trafikk. Hvis du vil se IP-adressene som er blokkert for øyeblikket, skriver du
iptables -L -n
og ser etter de forskjellige kjedene som heter fail2ban-something
, der something
peker på fail2ban fengsel (for eksempel Chain f2b-sshd
refererer til fengselet sshd
). Hvis du bare vil fjerne blokken for en enkelt IP-adresse <IP>
for en gitt fengsel <JAIL>
, tilbyr fail2ban sin egen klient:
fail2ban-client set <JAIL> unbanip <IP>
Alternativt kan du bruke linjenumre. Først oppgir du iptables
reglene med linjenumre:
iptables -L -n --line-numbers
Neste kan du bruke
iptables -D fail2ban-somejail <linenumber>
for å fjerne en enkelt linje fra tabellen. Så vidt jeg vet er det ikke noe alternativ å velge et rekke linjenumre, så jeg antar at du må pakke denne kommandoen i en for loop:
for lin in {200..1}; do iptables -D fail2ban-somejail $lin done
Her lagde jeg tallet 200 opp. Sjekk din egen utdata av kommandoen med --line-numbers
og merk at den siste linjen (med RETURN
) skal forbli. Se @roaimas kommentar nedenfor for begrunnelsen bak nedtelling.
Kommentarer
- Du reddet meg. Tusen takk. Legg til en full kommando fordi jeg måtte finne ut at jeg trenger fail2ban-klient foran din kommando. (Fordi jeg er en noob)
Svar
Den beste måten å oppheve utelukkelse av alle IP-er, er å stille inn bantime til 1 sekund, da frigjøres all IP med en gang.
fail2ban-client set JailName bantime 1
Deretter kan du stille tilbake riktig forbudstid.
Det er bedre å la fail2ban gjøre unban for deg. Ikke rediger iptables manuelt.
Kommentarer
- Dette er det eneste riktige svaret her. Fail2ban opprettholder sin egen banedatabase som må tømmes uavhengig . Hvert svar som snakker om å slette iptables-regler, ignorerer at øyeblikket fail2ban startes, vil det legge til reglene du nettopp har slettet, tilbake til iptables. Det er heller ikke alle fail2ban-konfigurasjoner som bruker iptables for å implementere forbud. finn alle fengsler med
fail2ban-client status
- Jeg har nettopp utstedt denne kommandoen og ser på at antall IP-er i fengselet minker mot null når fail2ban behandler fengselet. skje veldig fort, men at ‘ er OK, det var over fem tusen oppføringer i fengselet. Godt svar!
Svar
siste fail2ban-client
(0.10) har en unban -all
kommando. Fengsler kan også «startes på nytt», effecti vely rydde forbudene.
Hvis du har en eldre versjon, kan dette trikset fungere for automatiske midlertidige forbud: slett fengselet som inneholder forbudet, og start deretter fail2ban på nytt slik at fengselet (nå tomt) blir gjenskapt.
$ fail2ban-client stop sshd Jail stopped $ systemctl restart fail2ban
Kommentarer
- -all eller —all? Eller – alt?
Svar
-
Hvis du stopper tjenesten, blir alle regler lagt til av fail2ban
service fail2ban stop
-
Hvis du ikke har noen andre iptables-regler, kan du tømme den
iptables -F
Vær forsiktig: Dette vil slette andre regler i iptables .
Kommentarer
- Bare å stoppe og starte på nytt var tilstrekkelig.
Svar
Lagre iptable config i filen
$ iptables-save > iptables.conf
Rediger den med en hvilken som helst editor du liker, enn last config tilbake til iptables
$ iptables-restore < iptables.conf
Ikke glem å lagre konfigurasjonen i iptables, så den blir plukket opp ved omstart
$ service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
Svar
her er en enkel oneliner for å fjerne bannet fra hele fail2ban fengsel på riktig måte:
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
MERK: kommandoen iptables tar prefikset «f2b-» før fengselsnavnet mens «fail2ban-client» det virkelige fengselsnavnet
Kommentarer
- Dette er det beste svaret for fail2ban-versjoner nedenfor 0.10. Du kan gå videre med å lage et alias i .bashrc som fail2ban-purge med en parameter for å tømme et helt fengsel. Bare erstatt tilbakevendende ord ovenfor med $ 1 og bruk alias som fail2ban-purge < JAIL_NAME >.
Svar
På grunn av måten fail2ban
fungerer, er det bare to mulige løsninger:
- Lag et brannmurkonfigurasjonsskript som inkluderer
fail2ban
fengsler og start brannmuren på nytt. - Fjern brannmurreglene som blokkerer IP-adressene du vil fjerne .
Svar
Dette er skriptet jeg bruker for å fjerne alle IP-adresser for et ssh-fengsel ( bare bytt ut sshd-forekomst med navnet på fengselet du trenger … 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
Kanskje dette skriptet kan hjelpe noen med en versjon < 0.10.0 som meg:
#!/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