Fail2Ban:すでに禁止されていますか?


17

CentosサーバーでFail2Banを実行しています。(以下の構成)

私のvar / log / messagesで、本当に奇妙なことに気付きました。

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

禁止されたIPをiptablesに追加するようにFail2Banを構成しました。

私の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 =

私の質問は、既にブロックされている人がiptablesサーバーに接続する方法を教えてください。


の出力をiptables -L -nv質問に追加できますか?
ラダダダダ14年

回答:


14

ここの他の回答で推奨されている暗殺刑務所は、私にとって問題を解決しませんでした。しかし、最終的にこれを修正したので、他の人に役立つ場合の私の方法を次に示します。

Fail2banはデフォルトでTCPのみをブロックします。少なくとも私の設定では、ボットがブロックされたポートをUDP経由で再試行するために戻ってきたときに、「すでに禁止されています」というメッセージが表示されていることに気付きました。

この問題を修正するには、TCPだけでなく、すべてのプロトコルでポートをブロックするようFail2banに指示します。あなたには、この変更を加える必要があります/etc/fail2ban/jail.confとして、[初期化]セクションあなたがで使用しているすべてのアクションの/etc/fail2ban/action.d/

これを変える:

# Default protocol
protocol = tcp

に:

# Default protocol
protocol = all

次に、ICMPエコー要求を無効にしたため、ブロックされたIPはサーバーにアクセスできませんでした。

  1. nano /etc/sysctl.conf
  2. 次の2行を追加します。

    net.ipv4.icmp_echo_ignore_all = 1  
    net.ipv4.icmp_echo_ignore_broadcasts = 1
    
  3. 終了してファイルを保存します。
  4. sysctl -pを実行して、変更を有効にします。

その後、fail2ban-client reloadを実行します。ブロックが有効になる前にアクセス試行を数回受けるIPによってスパムされない限り、これらの「すでに禁止された」メッセージは表示されません。

また、各Jailでアクションiptables-allportsを使用して、アクセスしようとしたポートではなく、すべての違反者のすべてのポートをブロックすることが重要です。さもなければ、彼らは別の刑務所を引き起こし、ログで「既に禁止されている」として終わるかもしれません。


3
私にとってそれはあまり明確ではありません...私/etc/fail2ban/jail.localのフィルターの中には持っているものaction = iptables-multiport[name=apache-myadmin, port="http,https", protocol=tcp]とないものがありますが、それらをすべて変更する必要がありますか?何/etc/fail2ban/filter.dか変更する必要がありますか?
NineCattoRules

1
申し訳ありませんが、protocol = allは機能せず、エラーが発生します!
パトリックラズロ

1
「iptables v1.6.2:マルチポートには-p tcp', -p udp '、-p udplite', -p sctp'または `-p dccp 'が必要です」
Patrik Laszlo

OK、私にとって問題は、禁止が機能​​していたことですが、攻撃者は永続的な接続を使用していたため、禁止はすぐには有効ではありませんでした。メールサーバーを再起動していました
Patrik Laszlo

3

の出力をiptables-save見ると、fail2banチェーンがセットアップされており、フィルターで定義されたルールに従ってパケットを評価していることがわかります。例:

: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

他のルーティングルールが適用され、トラフィックが拒否される前に、トラフィックは引き続きサーバー到達しますfail2banこの最初のトラフィックは引き続き表示されるため、「既に禁止されている」メッセージが表示されます。さらに、再犯者用の特別なフィルターがあります(/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

これは、禁止するIPアドレスが実際にサーバーに接続しているクライアントのIPアドレスではない場合に発生します。たとえば、サーバーがロードバランサーまたはプロキシの背後にある場合。

最近、これを理解するのにかなり時間がかかりました。赤いニシンは、ログがX-Forwarded-For実際の送信元アドレスの代わりにIPアドレスをキャプチャするように構成されていることでした。これは、私の場合はロードバランサーです。

この場合、問題のあるIPを禁止するとすべてのトラフィックがブロックされるため、fail2banはあまり役に立ちません。


それで、あなたはどのような代替行動を取りましたか?
ハッサンBaig

@HassanBaig-なし。Fail2banは、ロードバランサーまたはリバースプロキシの背後で動作している場合は何もできません。
デールアンダーソン

では、アプリケーション層で発生する分散DoSに対して、HTTP GETフラッドなど、どのような対策を講じますか?
ハッサンBaig

1
@HassanBaigホスティングプロバイダーに相談してください。システムで同じ問題に遭遇したのはあなただけではない可能性があります。
デール・アンダーソン

0

「すでに禁止されている」メッセージで自分の問題と解決策を提供したい。あなたが書いたように、攻撃者はすでに禁止されているはずでしたが、私は数分以内に何百ものそれらを持っていました。

始める前に、ここに私のシステムがあります:

  • Plesk 12
  • Centos 7
  • Plesk-Moduleのインストール、操作、および私のためのfail2banの設定

ルートサーバーにOpenVPNをインストールしたとき、firewalldをiptablesに切り替えました。それは私にとってこの問題を引き起こしたかもしれませんが、それ以外は私のシステムはほとんど手付かずで非常に新しくインストールされました(Strato rootserverはインストールイメージを提案しました)。

この問題がある場合は、/ etc / fail2ban / jail.d / 00-firewalld.confで次のような行を確認してください。

banaction = firewallcmd-ipset

私がコメントアウトしてから、ファイルを保存して再起動したときからfail2ban.service、すべてがfail2banでうまくいきました。これ以上メッセージはありません

私は専門家ではありませんが、正しい答えを提供したいと思っています。それがあなたのために働くならば、私に知らせてください!


0

私の質問は、iptablesですでにブロックされているユーザーが、どのようにしてサーバーに接続できるのですか?

サーバーに1回だけ接続しましたが、その1回の接続で、おそらく存在しないメールボックス(info @ domain.com、sales @ domain.com、tech @ domain.comなど)に複数のメールを配信しようとしました。

Xが試行した後にIPが禁止されるように、これらの試行を禁止するようにpostfixフィルターを構成しました。クライアントはすでにpostfixから切断されている可能性がありますが、postfixはすべての電子メールの処理を完了していない可能性があるため、postfixがメールを処理するときにfail2banは同じクライアントからの別の試行を検出できます。したがって、すでに禁止されているメッセージアドレスを取得します。これは、後置キューがどのように機能するかによるものです。


0

私の質問は、iptablesですでにブロックされているユーザーが、どのようにしてサーバーに接続できるのですか?

信じられないほど良い質問です。ファイアウォールルールが機能していないかどうかを探していましたが、iptables --list-rules機能するfail2banを備えた別の運用サーバーと完全に一致していました。

開発ポートを介してログインページにまだアクセスしていたため、驚いた解決策はブロックされたポートにポート8080を追加することでした。

私の状況での修正は、この問題が私の単純な適応であったこと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

/unix//a/525798/22315を参照してください

「port =」行からポート587が欠落している可能性があります。postfixがそのポートを開くように構成されている場合は、postfix構成ファイルを確認するか、「lsof -i:587」を実行します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.