Bagaimana cara menampilkan semua ip yang diblokir dengan fail2ban?

36

Ketika saya menjalankan perintah ini fail2ban-client status sshdsaya mendapatkan ini:

Status for the jail: sshd
|- Filter
|  |- Currently failed: 1
|  |- Total failed:     81
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 2
   |- Total banned:     8
   `- Banned IP list:   218.65.30.61 116.31.116.7

Ini hanya menampilkan dua IP dalam daftar IP yang dilarang, bukan 8 seperti yang dikatakan Total Banned.

Sementara saya melakukannya tail -f /var/log/auth.logsaya mendapatkan ini:

Mar 29 11:08:40 DBSERVER sshd[29163]: error: maximum authentication attempts exceeded for root from 218.65.30.61 port 50935 ssh2 [preauth]
Mar 29 11:08:40 DBSERVER sshd[29163]: Disconnecting: Too many authentication failures [preauth]
Mar 29 11:08:40 DBSERVER sshd[29163]: PAM 5 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=218.65.30.61  user=root
Mar 29 11:08:40 DBSERVER sshd[29163]: PAM service(sshd) ignoring max retries; 6 > 3
Mar 29 11:08:44 DBSERVER sshd[29165]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=218.65.30.61  user=root
Mar 29 11:08:46 DBSERVER sshd[29165]: Failed password for root from 218.65.30.61 port 11857 ssh2
Mar 29 11:09:01 DBSERVER CRON[29172]: pam_unix(cron:session): session opened for user root by (uid=0)
Mar 29 11:09:01 DBSERVER CRON[29172]: pam_unix(cron:session): session closed for user root
Mar 29 11:10:01 DBSERVER CRON[29226]: pam_unix(cron:session): session opened for user root by (uid=0)
Mar 29 11:10:02 DBSERVER CRON[29226]: pam_unix(cron:session): session closed for user root
Mar 29 11:10:18 DBSERVER sshd[29238]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=113.122.43.185  user=root
Mar 29 11:10:20 DBSERVER sshd[29238]: Failed password for root from 113.122.43.185 port 46017 ssh2
Mar 29 11:10:33 DBSERVER sshd[29238]: message repeated 5 times: [ Failed password for root from 113.122.43.185 port 46017 ssh2]
Mar 29 11:10:33 DBSERVER sshd[29238]: error: maximum authentication attempts exceeded for root from 113.122.43.185 port 46017 ssh2 [preauth]
Mar 29 11:10:33 DBSERVER sshd[29238]: Disconnecting: Too many authentication failures [preauth]
Mar 29 11:10:33 DBSERVER sshd[29238]: PAM 5 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=113.122.43.185  user=root
Mar 29 11:10:33 DBSERVER sshd[29238]: PAM service(sshd) ignoring max retries; 6 > 3
Mar 29 11:11:36 DBSERVER sshd[29245]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7  user=root
Mar 29 11:11:38 DBSERVER sshd[29245]: Failed password for root from 116.31.116.7 port 24892 ssh2
Mar 29 11:11:43 DBSERVER sshd[29245]: message repeated 2 times: [ Failed password for root from 116.31.116.7 port 24892 ssh2]
Mar 29 11:11:43 DBSERVER sshd[29245]: Received disconnect from 116.31.116.7 port 24892:11:  [preauth]
Mar 29 11:11:43 DBSERVER sshd[29245]: Disconnected from 116.31.116.7 port 24892 [preauth]
Mar 29 11:11:43 DBSERVER sshd[29245]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7  user=root
Mar 29 11:12:39 DBSERVER sshd[29247]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7  user=root
Mar 29 11:12:41 DBSERVER sshd[29247]: Failed password for root from 116.31.116.7 port 26739 ssh2
Mar 29 11:12:45 DBSERVER sshd[29247]: message repeated 2 times: [ Failed password for root from 116.31.116.7 port 26739 ssh2]
Mar 29 11:12:45 DBSERVER sshd[29247]: Received disconnect from 116.31.116.7 port 26739:11:  [preauth]
Mar 29 11:12:45 DBSERVER sshd[29247]: Disconnected from 116.31.116.7 port 26739 [preauth]
Mar 29 11:12:45 DBSERVER sshd[29247]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7  user=root
Mar 29 11:13:41 DBSERVER sshd[29249]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7  user=root
Mar 29 11:13:43 DBSERVER sshd[29249]: Failed password for root from 116.31.116.7 port 27040 ssh2

IP yang diblokir masih mencoba.

Namun ketika saya mengecek sudo iptables -L INPUT -v -nsaya mendapatkan ini:

Chain INPUT (policy ACCEPT 228 packets, 18000 bytes)
 pkts bytes target     prot opt in     out     source               destination
 6050  435K f2b-sshd   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 22

Apa yang saya lakukan salah di sini?

Bagaimana saya bisa menampilkan semua daftar IP yang dilarang?

Terima kasih sebelumnya.

Dark Cyber
sumber
"Total" berarti total yang pernah dilarang, bukan total yang saat ini dilarang. Satu-satunya tempat Anda akan menemukan alamat yang sebelumnya dilarang di log (jika Anda menyimpannya).
Stop Harming Monica
di jail.local atau jail.conf, Anda sepertinya memiliki yang kecil bantime. Jadikan 200matau bahkan lebih tinggi dan kemudian lakukan sudo service fail2ban restartdan kemudianfail2ban-client status sshd
Allen King

Jawaban:

19

Harap perhatikan bahwa larangan IP fail2ban bersifat sementara.

Cara terbaik untuk melihat daftar lengkap IP yang telah diblokir adalah dengan memeriksa file log:

sudo zgrep 'Ban:' /var/log/fail2ban.log*

Perintah berikut ini juga dapat memberi Anda daftar aturan input yang bersih:

sudo iptables -L INPUT -v -n | less
NA AE
sumber
3
Tidak ada titik dua di file log saya (sehingga diperlukan untuk menyesuaikan grep). Meninggalkan sebagai komentar daripada mengedit, karena saya tidak tahu seberapa luas ini / jika ini adalah perubahan terbaru.
kwah
Ingatlah bahwa mendaftarkan aturan iptables hanya berfungsi jika iptables adalah tindakan pelarangan Anda. Terkadang ini bukan masalahnya.
gilad mayani
@ Khwah sama bagi saya, tidak ada titik dua dalam file log. Mungkin perubahan terbaru dalam output, atau kesalahan ketik.
David Mordigal
Hapus ':' setelah istilah pencarian 'Larangan' karena ':' tidak ditulis dalam file log lagi. Jadi, Anda dapat melihat IP yang diblokir lagi dengan perintah yang disebutkan di atas.
Mario Neubauer
9

Untuk melihat baris lengkap iptables:

sudo iptables -L -n | awk '$1=="REJECT" && $4!="0.0.0.0/0"'

Untuk hanya melihat alamat IP:

sudo iptables -L -n | awk '$1=="REJECT" && $4!="0.0.0.0/0" {print $4}'

Anda dapat mengubah "TOLAK" dengan "DROP", tergantung pada kasus Anda.

César Themudo Goday
sumber
6

Mirip dengan NA AE di atas termasuk komentar kwaa , ini mencantumkan semua IP:

sudo zgrep 'Ban' /var/log/fail2ban.log*

tetapi output itu memiliki banyak baris. Ini menghitung baris semua ip yang diblokir (dan kemungkinan tidak diblokir):

sudo zgrep 'Ban' /var/log/fail2ban.log* | wc -l

Output dari perintah di atas (dengan jumlah baris) harus cocok dengan jumlah 'Total Dilarang' dalam output status fail2ban:

fail2ban-client status sshd

diuji di Ubuntu 18.04.1 LTS.

Output saya dari baris 'wc-l':

7244

Dan dari status fail2ban, nomor 7244 yang sama diverifikasi:

Status for the jail: sshd
|- Filter
|  |- Currently failed: 7
|  |- Total failed: 49457
|  `- File list:    /var/log/auth.log
`- Actions
   |- Currently banned: 9
   |- Total banned: 7244
   `- Banned IP list:   [...]
Marc Compere
sumber
4

Hanya FYI:

  • "Total banned" adalah total IP yang telah diblokir untuk jail tersebut (dan mungkin telah diblokir).
  • "Saat ini dilarang" adalah HANYA IP yang saat ini dilarang untuk penjara itu (dan daftar IP mengkonfirmasi ini).

Semoga itu bisa membantu.

Rob Pickering
sumber
4

jika Anda ingin melihat daftar IP yang terlarang dengan batas waktu mereka (batas waktu habisnya dihapus dari kumpulan yang dilarang) Anda dapat menggunakan:

ipset list
gstlouis
sumber
2

Ini akan menunjukkan apa yang saat ini dilarang (TOLAK) di bagian Chain fail2ban-ssh dari iptables.

sudo iptables -L fail2ban-ssh -v -n
IG-88
sumber
2

Untuk menambahkan jawaban yang lebih umum:

Harap dicatat bahwa iptables mungkin bukan jawaban yang benar dan mungkin tidak memberikan informasi yang relevan sama sekali (untuk poster asli). Itu tergantung pada nilai untuk banaction = [aksi] yang Anda gunakan dalam DEFAULT atau definisi penjara spesifik Anda.

Saya memiliki banyak kotak ARM kecil yang menjalankan linux tetapi kernel tidak memiliki semua modul iptables yang relevan, jadi iptables tidak akan berfungsi dalam hal ini.

* BSD mungkin tidak memiliki iptables sama sekali dan menggunakan sesuatu seperti pf sebagai gantinya.

Pada kotak ARM saya, saya menggunakan rute untuk memblokir. Ini menambah rute yang tidak valid untuk IP yang terlarang dan karenanya paket yang dikembalikan tidak dapat dikirim dan IP pada dasarnya diblokir. Bekerja dengan sangat baik. Dalam hal ini Anda dapat memeriksa IP yang diblokir dengan menggunakan:

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
# normal routing entries
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
# banned IPs (no gateway, no iface)
223.96.95.85    -               255.255.255.255 !H    0      -        0 -

Anda memiliki banyak opsi untuk dicekal. Dan karena itu banyak opsi untuk memeriksa daftar larangan. Yang mana untuk digunakan tergantung pada platform dan preferensi Anda. Ada banyak file konfigurasi pra-konfigurasi di: /etc/fail2ban/action.d/ untuk dipilih.

srx
sumber