Fail2Ban: sudah dicekal?


17

Saya menjalankan Fail2Ban di Server Centos saya. (Konfigurasi di bawah)

Dalam var / log / pesan saya saya melihat sesuatu yang sangat aneh:

Jun 19 12:09:32 localhost fail2ban.actions: INFO   [postfix] 114.43.245.205 already banned

Saya mengkonfigurasi Fail2Ban untuk menambahkan IP yang terlarang ke iptables.

Jail.conf saya:

[postfix]

enabled  = true
filter   = postfix
action   = iptables
port     = smtp,ssmtp
filter   = postfix
logpath  = /var/log/maillog
bantime  = 43200
maxretry = 2

Postfix.conf saya:

[INCLUDES]

before = common.conf

[Definition]
failregex = reject: RCPT from (.*)\[<HOST>\]: 550 5.1.1
            reject: RCPT from (.*)\[<HOST>\]: 450 4.7.1
            reject: RCPT from (.*)\[<HOST>\]: 554 5.7.1
            reject: RCPT from (.*)\[<HOST>\]: (.*)@yahoo.com.tw
ignoreregex =

Pertanyaan saya adalah bagaimana mungkin orang yang sudah diblokir iptablestetap terhubung ke server?


Bisakah Anda menambahkan output iptables -L -nvke pertanyaan Anda?
Ladadadada

Jawaban:


14

Penjara residen yang direkomendasikan dalam jawaban lain di sini tidak memperbaiki masalah bagi saya. Saya akhirnya memperbaiki ini, jadi inilah metode saya kalau-kalau itu membantu orang lain.

Fail2ban hanya memblokir TCP secara default. Paling tidak dengan pengaturan saya, saya melihat pesan "sudah dilarang" muncul ketika bot kembali untuk mencoba port yang diblokir di atas UDP.

Untuk memperbaiki masalah ini, beri tahu Fail2ban untuk memblokir port melalui semua protokol, bukan hanya TCP. Anda perlu melakukan perubahan ini di /etc/fail2ban/jail.conf dan di bagian [Init] dari setiap tindakan yang Anda gunakan di /etc/fail2ban/action.d/ .

Ubah ini:

# Default protocol
protocol = tcp

Untuk:

# Default protocol
protocol = all

Selanjutnya, saya menonaktifkan permintaan gema ICMP sehingga IP yang diblokir tidak bisa mengenai server:

  1. nano /etc/sysctl.conf
  2. Tambahkan dua baris ini:

    net.ipv4.icmp_echo_ignore_all = 1  
    net.ipv4.icmp_echo_ignore_broadcasts = 1
    
  3. Keluar dan simpan file.
  4. Jalankan sysctl -p agar perubahan diterapkan.

Setelah itu, jalankan reload fail2ban-client dan Anda seharusnya tidak melihat lagi pesan-pesan "yang sudah dilarang" ini kecuali Anda spammed oleh IP yang mendapat beberapa upaya akses sebelum blok tersebut berlaku.

Juga, penting untuk memblokir semua port untuk setiap pelaku daripada port yang mereka coba akses dengan menggunakan action iptables-allports di masing-masing Penjara. Jika tidak, mereka dapat memicu Penjara lain dan berakhir sebagai "sudah dilarang" di log.


3
bagi saya itu tidak begitu jelas ... di /etc/fail2ban/jail.localbeberapa filter saya miliki action = iptables-multiport[name=apache-myadmin, port="http,https", protocol=tcp]dan beberapa tidak, haruskah saya mengubah semua itu? Haruskah saya mengubah sesuatu /etc/fail2ban/filter.d?
NineCattoRules

1
maaf, tetapi protokol = semua tidak berfungsi, memberikan kesalahan!
Patrik Laszlo

1
"iptables v1.6.2: kebutuhan multiport -p tcp', -p udp ', -p udplite', -p sctp' atau` -p dccp '"
Patrik Laszlo

ok, bagi saya masalahnya adalah, bahwa larangan itu berfungsi, tetapi penyerang menggunakan koneksi gigih sehingga larangan itu tidak berlaku segera, karena masih terhubung dan tidak ada koneksi baru, satu-satunya cara untuk melakukannya ketika sedang terjadi restart server email
Patrik Laszlo

3

Jika Anda melihat output dari iptables-save, Anda akan melihat bahwa fail2banrantai diatur sehingga mereka mengevaluasi paket sesuai dengan aturan yang ditetapkan oleh filter, misalnya:

:fail2ban-ssh - [0:0]
-A INPUT -p tcp -A INPUT -p tcp -A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A fail2ban-ssh -j RETURN

Lalu lintas masih mencapai server sebelum aturan perutean lain diterapkan dan lalu lintas ditolak. fail2banmasih melihat lalu lintas awal ini, dan itulah sebabnya Anda melihat pesan "sudah dilarang". Selain itu, ada filter khusus untuk residivis ( /etc/fail2ban/filter.d/recidive.conf):

# Fail2Ban filter for repeat bans
#
# This filter monitors the fail2ban log file, and enables you to add long
# time bans for ip addresses that get banned by fail2ban multiple times.
#
# Reasons to use this: block very persistent attackers for a longer time,
# stop receiving email notifications about the same attacker over and
# over again.
#
# This jail is only useful if you set the 'findtime' and 'bantime' parameters
# in jail.conf to a higher value than the other jails. Also, this jail has its
# drawbacks, namely in that it works only with iptables, or if you use a
# different blocking mechanism for this jail versus others (e.g. hostsdeny
# for most jails, and shorewall for this one).

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf

[Definition]

_daemon = fail2ban\.server\.actions

# The name of the jail that this filter is used for. In jail.conf, name the
# jail using this filter 'recidive', or change this line!
_jailname = recidive

failregex = ^(%(__prefix_line)s| %(_daemon)s%(__pid_re)s?:\s+)WARNING\s+\[(?!%(_jailname)s\])(?:.*)\]\s+Ban\s+<HOST>\s*$

[Init]

journalmatch = _SYSTEMD_UNIT=fail2ban.service PRIORITY=4

# Author: Tom Hendrikx, modifications by Amir Caspi

1

Ini akan terjadi jika alamat IP yang Anda blokir sebenarnya bukan alamat IP klien yang terhubung ke server. Misal jika server Anda berada di belakang load balancer atau proxy.

Butuh waktu cukup lama untuk memikirkan hal ini baru-baru ini. Ikan haring merah adalah bahwa log dikonfigurasi untuk menangkap X-Forwarded-Foralamat IP, bukan alamat sumber nyata, yang dalam kasus saya adalah penyeimbang beban.

Dalam hal ini fail2ban tidak banyak membantu, karena melarang IP yang melanggar akan memblokir semua lalu lintas.


Jadi tindakan alternatif apa yang Anda ambil?
Hassan Baig

@HassanBaig - tidak ada Fail2ban tidak bisa melakukan apa-apa jika beroperasi di belakang penyeimbang beban atau membalikkan proxy.
Dale Anderson

Hmm lalu langkah apa yang akan Anda ambil terhadap DoS Terdistribusi yang terjadi pada lapisan aplikasi, katakanlah HTTP GET banjir?
Hassan Baig

1
@HassanBaig Bicaralah dengan penyedia hosting Anda. Kemungkinannya adalah Anda bukan satu-satunya orang yang mengalami masalah yang sama pada sistem mereka.
Dale Anderson

0

Saya ingin menyumbangkan masalah dan solusi saya sendiri dengan pesan "sudah dilarang". Seperti yang Anda tulis, saya memiliki ratusan dari mereka dalam beberapa menit sementara penyerang seharusnya sudah dilarang.

Sebelum saya mulai, inilah sistem saya:

  • Plesk 12
  • Centos 7
  • Plesk-Module diinstal, mengoperasikan dan mengkonfigurasi fail2ban untuk saya

Ketika saya menginstal OpenVPN pada server root saya, saya telah beralih firewalld ke iptables. Itu mungkin telah menyebabkan masalah ini bagi saya, tetapi selain itu sistem saya sebagian besar tidak tersentuh dan cukup baru diinstal (Strato rootserver menyarankan instal image).

Jika Anda memiliki masalah ini, silakan periksa /etc/fail2ban/jail.d/00-firewalld.conf untuk baris yang terlihat seperti ini:

banaction = firewallcmd-ipset

Sejak saya berkomentar, menyimpan file dan restart fail2ban.service, semuanya baik-baik saja dengan fail2ban. Tidak ada lagi pesan

Saya bukan ahli tetapi berharap untuk memberikan jawaban yang tepat. Jika itu berhasil untuk Anda, beri tahu saya!


0

Pertanyaan saya adalah bagaimana mungkin ada orang yang telah diblokir di iptables masih terhubung ke server?

Ini terhubung ke server hanya satu kali, tetapi dalam satu koneksi itu mencoba untuk mengirim beberapa email ke kotak surat yang mungkin tidak dapat diandalkan (seperti info@domain.com, sales@domain.com, tech@domain.com dll.)

Anda telah mengonfigurasi filter postfix Anda untuk mencekal upaya-upaya tersebut sehingga IP akan diblokir setelah X mencoba. Klien mungkin sudah terputus dari postfix, tetapi karena postfix mungkin belum selesai memproses semua emailnya, fail2ban dapat mendeteksi upaya lain dari klien yang sama ketika postfix memproses surat-suratnya, dan dengan demikian Anda mendapatkan alamat pesan yang sudah dilarang. Itu karena cara kerja antrian postfix.


0

Pertanyaan saya adalah bagaimana mungkin ada orang yang telah diblokir di iptables masih terhubung ke server?

Pertanyaan bagus yang luar biasa. Saya sedang mencari-cari apakah aturan firewall saya tidak berfungsi, tetapi iptables --list-rulescocok persis dengan server produksi lain dengan berfungsi fail2ban.

Solusi mindblowing adalah menambahkan port 8080 ke port yang diblokir, karena saya masih mengakses halaman login melalui port pengembangan.

Jadi perbaikan dalam situasi saya adalah masalah ini adalah adaptasi saya yang cukup sederhana jail.local:

[JIRA-LOGIN-tcp]
  enabled = true
  port = http,https,8080
  protocol = tcp
  filter = JIRA-LOGIN-ERROR
  logpath = /var/atlassian/application-data/jira/log/atlassian-jira-security.log
  bantime = 600
  maxretry = 1

0

lihat /unix//a/525798/22315

Anda mungkin kehilangan port 587 dari baris "port =", dan Anda dapat memeriksa file konfigurasi postfix atau melakukan "lsof -i: 587" untuk mencari tahu, secara langsung, jika postfix telah dikonfigurasikan untuk membuka port itu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.