staging.inyokaproject.org

fail2ban Script

Status: Ungelöst | Ubuntu-Version: Server 18.10 (Cosmic Cuttlefish)
Antworten |

Whol1988

Anmeldungsdatum:
11. Februar 2019

Beiträge: Zähle...

Hallo zusammen,

irgendwo habe ich folgendes Kommando gefunden um aufzulisten, welche IP Adressen durch fail2ban gesperrt wurden. Leider weiß ich nicht mehr woher ich das Teil habe.

1
fail2ban-client status | grep "Jail list:" | sed "s/ //g" | awk '{split($2,a,",");for(i in a) system("fail2ban-client status " a[i])}' | grep "Status\|IP list"

Ich hätte dies gerne erweitert, so das bei jeder gefundenen IP gefragt wird, ob ich diese wieder freigeben möchte. Nach Eingabe von y soll dann der Jail und die IP freigegeben werden, bei n soll das Script weiter machen. n soll dabei default sein. Ich nehme an, man müsste das wieder mit awk ergänzen. Leider habe ich davon keine Ahnung. Kann jemand bitte helfen?

Ich hatte schon mal

1
fail2ban-client status | grep "Jail list:" | sed "s/ //g" | awk '{split($2,a,",");for(i in a) system("fail2ban-client status " a[i])}' | grep "Status\|IP list" | | awk '{print NR,$5}

Das zeigt mir dann nur noch den Jail und die IP Adresse, und eine leere Zeile, wenn es keine Sperre gab. Kann man das nicht verwenden um nachzufragen, ob die IP freigegeben werden kann?

Humbi

Anmeldungsdatum:
14. Juni 2014

Beiträge: 76

Hallo Whol1988

Willkommen im Forum.

Mir ist nicht ganz klar weshalb du (wohl durch einen Grund) gesperrte IPs entbannen willst? Ich benutze aber den gleichen Codesnippet um eine vorher übergebene IP Adresse gezielt zu entsperren.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
faillist=$(fail2ban-client status | grep "Jail list:" | sed "s/ //g" | awk '{split($2,a,",");for(i in a) system("fail2ban-client status " a[i])}' | grep "Status\|IP list" | grep -B 1 $ip)
        if [ "$faillist" != "" ]
                then
                #hole alle jails über einen status abruf
                alljails=$(/usr/local/bin/fail2ban-client status | cut -d$'\n' -f3 | cut -c 15-)
                #wandle variable in array
                IFS=', ' read -r -a jailarray <<< "$alljails"
                for element in "${jailarray[@]}"
                do
                        #entbannt die IP in Fail2Ban
                        /usr/local/bin/fail2ban-client set "$element" unbanip $ip
                done
        fi

Nach welchem Schema würdest du "Y" oder "N" drücken?

Gruß

Antworten |