Hapus semua larangan fail2ban di Ubuntu Linux

16

Bagaimana saya bisa menghapus semua larangan fail2ban di Ubuntu? Saya mencoba segalanya tetapi saya tidak mengerti.

Saya hanya ingin menghapus semua larangan - tetapi saya tidak tahu alamat IP apa pun.

Patrick
sumber
1
Larangan ini biasanya dilakukan pada alamat IP melalui firewall Anda, jadi Anda harus melihat aturan firewall.
Julie Pelletier
ya saya tahu. tetapi saya ingin menghapus semua larangan tanpa memberitahu alamat ip
Patrick

Jawaban:

26

Jawaban yang diperbarui

Pada versi 0.10.0 fail2ban-clientfitur unbanperintah yang dapat digunakan dalam dua cara:

unban --all                              unbans all IP addresses (in all
                                         jails and database)
unban <IP> ... <IP>                      unbans <IP> (in all jails and
                                         database)

Selain itu, perintah restart <JAIL>, reload <JAIL>dan reloadperintah sekarang juga memiliki --unbanopsi.

Jawaban Lama

fail2ban digunakan iptablesuntuk memblokir lalu lintas. Jika Anda ingin melihat alamat IP yang saat ini diblokir, ketikkan

iptables -L -n

dan mencari berbagai rantai bernama fail2ban-something, di mana somethingmenunjuk ke penjara fail2ban (misalnya, Chain f2b-sshdmengacu pada penjara sshd). Jika Anda hanya ingin menghapus blokir untuk satu alamat IP <IP>untuk jail yang diberikan <JAIL>, fail2ban menawarkan kliennya sendiri:

fail2ban-client set <JAIL> unbanip <IP>

Atau Anda dapat menggunakan nomor baris. Pertama, buat daftar iptablesaturan dengan nomor baris:

iptables -L -n --line-numbers

Selanjutnya bisa Anda gunakan

iptables -D fail2ban-somejail <linenumber> 

untuk menghapus satu baris dari tabel. Sejauh yang saya tahu tidak ada opsi untuk memilih rentang nomor baris, jadi saya kira Anda harus membungkus perintah ini dalam for loop:

for lin in {200..1}; do
   iptables -D fail2ban-somejail $lin
done

Di sini saya membuat angka 200 naik. Periksa output perintah Anda sendiri dengan --line-numbersdan perhatikan bahwa baris terakhir (dengan RETURN) harus tetap. Lihat komentar @ roaima di bawah ini untuk alasan di balik penghitungan mundur.

ph0t0nix
sumber
Terima kasih @roaima! Saya akan memperbarui jawabannya.
ph0t0nix
1
@roaima Ya itu (setidaknya dalam zsh dan bash): echo {5..1}akan menghasilkan 5 4 3 2 1.
ph0t0nix
Kamu menyelamatkanku. Terima kasih banyak. Tolong tambahkan perintah penuh karena saya harus mencari tahu bahwa saya perlu fail2ban-client sebagai bagian dari perintah Anda. (Karena saya seorang noob)
sebastian.roibu
Balasan lama masih di-cache di DuckDuckGo, datang untuk mengatakan hal yang sama dengan @roaima - snipboard.io/0oZkXy.jpg
Ari
15

Cara terbaik untuk membatalkan pemblokiran semua IP, adalah mengatur bantime menjadi 1 detik, maka semua IP akan segera dibebaskan.

fail2ban-client set JailName bantime 1

Setelah itu, Anda dapat mengatur waktu larangan yang tepat kembali.

Lebih baik membiarkan fail2ban untuk melakukan unban untuk Anda. Jangan mengedit iptables sendiri secara manual.

Philip
sumber
1
Ini satu-satunya jawaban yang benar di sini. Fail2ban memiliki basis data larangan sendiri yang harus dihapus secara mandiri. Setiap jawaban yang berbicara tentang menghapus aturan iptables mengabaikan bahwa saat fail2ban dimulai kembali, itu akan menambahkan kembali aturan yang baru saja Anda hapus kembali ke iptables. Juga, tidak setiap konfigurasi fail2ban menggunakan iptables untuk mengimplementasikan larangan.
Cliff Armstrong
3
temukan semua penjara denganfail2ban-client status
Flion
Saya baru saja mengeluarkan perintah ini dan saya melihat jumlah IP di penjara saya berkurang ke nol karena fail2ban memproses penjara. Itu tidak terjadi dengan sangat cepat, tapi tidak apa-apa, ada lebih dari lima ribu entri di penjara. Jawaban yang bagus!
Eric M
5

Yang terbarufail2ban-client (0.10) memiliki unban -allperintah. Penjara juga dapat secara individual "dimulai kembali", secara efektif menghapus larangan.

Jika Anda memiliki versi yang lebih lama, trik ini mungkin berfungsi untuk larangan sementara otomatis: hapus penjara yang berisi larangan kemudian mulai ulang fail2ban sehingga penjara (sekarang kosong) akan dibuat kembali.

$ fail2ban-client stop sshd
Jail stopped
$ systemctl restart fail2ban
Rolf
sumber
-semua atau -semua? Atau - semua?
Wildcard
3

Simpan konfigurasi iptable ke file

$ iptables-save > iptables.conf

Edit dengan editor apa pun yang Anda suka daripada muat konfigurasi kembali ke iptables

$ iptables-restore < iptables.conf

Jangan lupa untuk menyimpan konfigurasi di dalam iptables sehingga akan diambil saat reboot

$ service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
Subdigger
sumber
Ini adalah salah satu cara orang dapat melakukan ini. Terima kasih.
User9102d82
3

1. menghentikan layanan akan membersihkan semua aturan yang ditambahkan oleh fail2ban

service fail2ban stop

2. jika Anda tidak memiliki aturan iptables lainnya, Anda dapat menghapusnya

iptables -F

hati-hati: ini akan menghapus aturan lain di iptables Anda.

RASG
sumber
3

inilah oneliner sederhana untuk membatalkan seluruh penjara fail2ban dengan cara yang benar:

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

CATATAN: perintah iptables mengambil awalan "f2b-" sebelum nama jail sementara "fail2ban-client" nama sebenarnya jail

Vedran B
sumber
Ini adalah jawaban terbaik untuk versi fail2ban di bawah 0.10. Anda dapat lebih lanjut membuat alias di .bashrc seperti fail2ban-purge dengan satu parameter untuk membersihkan seluruh penjara. Cukup ganti kata residif di atas dengan $ 1 dan gunakan alias sebagai fail2ban-purge <JAIL_NAME>.
ADDISON74
2

Karena cara fail2bankerjanya, hanya ada dua solusi yang mungkin:

  • Buat skrip konfigurasi firewall yang menyertakan fail2banjail dan restart firewall.
  • Hapus aturan firewall yang memblokir IP yang ingin Anda batalkan.
Julie Pelletier
sumber
2

Ini adalah skrip yang saya gunakan untuk membatalkan semua alamat IP untuk ssh jail (cukup ganti sshd occourence dengan nama jail yang Anda butuhkan ... misalnya 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
Claudio Zanetta
sumber