Fail2Ban: zaten yasaklanmış mı?


17

Centos sunucumda çalışan Fail2Ban var. (Aşağıdaki yapılandırma)

Benim içinde var / log / mesajlar Gerçekten garip bir şey fark ettim:

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

Fail2Ban'ı yasaklanan IP'yi iptables'a ekleyecek şekilde yapılandırdım.

Benim jail.conf:

[postfix]

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

Postfix.conf:

[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 =

Sorum şu ki, zaten engellenmiş olan herkes iptablessunucuya nasıl bağlanabilir?


iptables -L -nvSorunuzun çıktısını ekleyebilir misiniz ?
Ladadadada

Yanıtlar:


14

Buradaki diğer cevapta önerilen hapishane hapishanesi sorunu benim için çözmedi. Ancak sonunda bunu düzelttim, işte başkalarına yardımcı olması için benim yöntemim.

Fail2ban varsayılan olarak yalnızca TCP üzerinden engeller. En azından benim kurulum ile, botlar UDP üzerinden engellenen bağlantı noktasını denemek için geri geldiğinde "zaten yasaklanmış" mesajının göründüğünü fark ettim.

Bu sorunu gidermek için, Fail2ban'a bağlantı noktasını yalnızca TCP yerine tüm protokoller üzerinde engellemesini söyleyin. Bu değişikliği /etc/fail2ban/jail.conf dosyasında ve /etc/fail2ban/action.d/ adresinde kullandığınız her eylemin [Init] bölümünde yapmanız gerekir .

Bunu değiştir:

# Default protocol
protocol = tcp

Kime:

# Default protocol
protocol = all

Daha sonra, engellenen IP'lerin sunucuya vurma yolu olmadığından ICMP yankı isteklerini devre dışı bıraktım:

  1. nano /etc/sysctl.conf
  2. Bu iki satırı ekleyin:

    net.ipv4.icmp_echo_ignore_all = 1  
    net.ipv4.icmp_echo_ignore_broadcasts = 1
    
  3. Dosyadan çıkın ve kaydedin.
  4. Değişikliğin etkili olması için sysctl -p komutunu çalıştırın .

Bundan sonra, fail2ban-client yeniden yüklemesini çalıştırın ve blok yürürlüğe girmeden önce birkaç erişim denemesi yapan bir IP tarafından spam olmadıkça bu "zaten yasaklanmış" mesajları artık görmemelisiniz.

Ayrıca, hapishanelerin her birinde iptables-allports eylemini kullanarak erişmeye çalıştıkları port yerine her suçlu için tüm portları engellemek önemlidir. Aksi takdirde, başka bir Hapishaneyi tetikleyebilir ve günlüklerde "zaten yasaklanmış" olarak sonuçlanabilirler.


3
benim için çok açık değil ... /etc/fail2ban/jail.localbazı filtrelerimde bazılarında var action = iptables-multiport[name=apache-myadmin, port="http,https", protocol=tcp], hepsini değiştirmem gerekir mi? İçindeki bir şeyi değiştirmeli miyim /etc/fail2ban/filter.d?
Ocak 16:16

1
üzgünüm, ama protokol = hepsi çalışmıyor, bir hata veriyor!
Patrik Laszlo

1
"iptables v1.6.2: çoklu portun -p tcp', -p udp ', -p udplite', -p sctp' veya` -p dccp '' olması gerekiyor
Patrik Laszlo

tamam, benim için sorun, yasağın çalıştığıydı, ancak saldırgan kalıcı bağlantılar kullanıyordu, bu yüzden yasak hala geçerli olduğundan ve yeni bir bağlantı olmadığından, bağlantı yapmanın tek yolu oluyor Posta sunucusunu yeniden başlat
Patrik Laszlo

3

Çıkışına bakarsanız iptables-save, fail2banzincirlerin filtreler tarafından tanımlanan kurallara göre paketleri değerlendirecek şekilde kurulduğunu göreceksiniz , örneğin:

: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

Diğer yönlendirme kuralları uygulanmadan ve trafik reddedilmeden önce trafik yine de sunucuya ulaşır . fail2banhala bu ilk trafiği görüyor ve bu yüzden "zaten yasaklanmış" mesajları görüyorsunuz. Ayrıca, recidivists ( /etc/fail2ban/filter.d/recidive.conf) için özel bir filtre var :

# 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

Yasakladığınız IP adresi aslında sunucuya bağlanan istemcinin IP adresi değilse bu olur. Örneğin, sunucunuz bir yük dengeleyici veya proxy'nin arkasındaysa.

Son zamanlarda bunu anlamak oldukça uzun sürdü. Kırmızı ringa, günlüklerin, X-Forwarded-Forbenim durumumda yük dengeleyici olan gerçek kaynak adresi yerine IP adresini alacak şekilde yapılandırılmış olmasıydı.

Bu durumda fail2ban çok yardımcı olmaz, çünkü rahatsız edici IP'yi yasaklamak tüm trafiği engeller .


Peki hangi alternatif işlemi yaptınız?
Hassan Baig

@HassanBaig - hiçbiri. Bir yük dengeleyici veya ters proxy arkasında çalışıyorsa, Fail2ban hiçbir şey yapamaz.
Dale Anderson

Hmm , bir HTTP GET seli diyelim, uygulama katmanında Dağıtılmış DoS'a karşı ne gibi önlemler alırsınız ?
Hassan Baig

1
@HassanBaig Hosting sağlayıcınızla konuşun. Muhtemelen sistemlerinde aynı sorunla karşılaşan tek kişi siz değilsiniz.
Dale Anderson

0

"Zaten yasaklanmış" mesajlarla kendi sorunuma ve çözümüme katkıda bulunmak istiyorum. Yazdığınız gibi, saldırganın zaten yasaklanmış olması gerekirken, birkaç dakika içinde yüzlerce kişi vardı.

Başlamadan önce, işte benim sistemim:

  • Plesk 12
  • Centos 7
  • Plesk Modülü benim için fail2ban'ı kurdu, çalıştırdı ve yapılandırdı

Kök sunucuma OpenVPN kurduğumda firewalld'i iptables'a geçirmiştim. Bu benim için bu soruna neden olmuş olabilir, ancak bunun dışında sistemim çoğunlukla el değmemiş ve oldukça yeni kurulmuştu (Strato Rootserver kurulum imajını önerdi).

Bu sorunla karşılaşırsanız, lütfen /etc/fail2ban/jail.d/00-firewalld.conf dosyasına benzeyen bir satır olup olmadığını kontrol edin :

banaction = firewallcmd-ipset

Ben bunu yorum zaman, dosyayı kaydetti ve yeniden başlatıldığında fail2ban.service, fail2ban ile her şey iyiydi. Başka mesaj yok

Uzman değilim ama size doğru cevabı vermeyi umuyorum. Bu sizin için işe yararsa, lütfen bana bildirin!


0

Sorum şu ki iptables'da zaten engellenmiş olan herkes sunucuya nasıl bağlanabilir?

Sunucuya yalnızca bir kez bağlandı, ancak bu bağlantıda muhtemelen var olmayan posta kutularına (info@domain.com, sales@domain.com, tech@domain.com gibi) birden fazla e-posta göndermeye çalıştı.

Postfix filtrenizi bu denemeleri yasaklayacak şekilde yapılandırdınız, böylece X denedikten sonra IP yasaklanacak. İstemcinin zaten postfix ile bağlantısı kesilmiş olabilir, ancak postfix tüm e-postalarını işlemeyi bitirmemiş olabileceğinden, fail2ban postfix postasını işlediğinde aynı istemciden başka bir girişim algılayabilir ve böylece mesaj adresi zaten yasaklanmış olur. Postfix kuyruğunun nasıl çalıştığı yüzünden.


0

Sorum şu ki iptables'da zaten engellenmiş olan herkes sunucuya nasıl bağlanabilir?

İnanılmaz güzel bir soru. Güvenlik duvarı kurallarımın iptables --list-rulesişe yarayıp yaramadığını araştırıyordum, ancak tam olarak fail2ban ile çalışan başka bir üretim sunucusuyla eşleşiyordu.

Akıllara durgunluk veren çözüm, giriş sayfasına hala geliştirme bağlantı noktaları üzerinden eriştiğim için engellenen bağlantı noktalarına 8080 bağlantı noktasını eklemekti.

Benim durumumdaki düzeltme bu sorunun benim oldukça basit bir uyarlaması olmasıydı 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

bkz. /unix//a/525798/22315

büyük olasılıkla "port =" satırından 587 numaralı bağlantı noktasını kaçırıyorsunuz ve postfix'in bu bağlantı noktasını açmak üzere yapılandırılıp yapılandırılmadığını doğrudan öğrenmek için postfix yapılandırma dosyasını kontrol edebilir veya "lsof -i: 587" yapabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.