
10.5 サーバーにファイアウォールを設定しようとしていますが、うまく動作しないようです。主な目的は、絶え間ないブルート フォース メール ログイン試行を阻止することです。
この目的のために、失敗したログインを見つけて禁止するために fail2ban をインストールしました。これは大部分で機能しています。つまり、禁止された IP アドレスを送信し、その旨の電子メールを送信するという仕組みが実現されています。ターミナル セッションを開始すると、次のコマンドで数十の IP アドレスが一覧表示されます。
sudo ipfw list
エントリは次のようになります。
12345 deny tcp from 123.123.23.123 to any in
しかし、この禁止は効果的ではありません。同じ IP アドレスが後で再度アクセスを試み、場合によっては数秒おきに数時間にわたってアクセスを試み続けることがあります。
fail2ban ログを確認すると、次のようなエラーが表示されます (悪意のあるログイン試行が複数回検出された後)。
"WARNING [sasl-ipfw] 123.123.123.123 already banned"
私はさまざまな方法で禁止をフォーマットしようとしました:
12345 deny tcp from 123.123.23.123 to 127.0.0.1 dst-port 25
12345 deny tcp from 123.123.23.123 to 192.168.123.123 dst-port 25
しかし、何の違いもありませんでした。Web サービスへのローカル ネットワークのネットワーク禁止も試しました。
12345 deny tcp from 192.168.123.122 to 192.168.123.123 dst-port 80
しかし、これも効果はありません。IPFW リスト内の他のルールは、デフォルトのようですが、次のようになります。
12300 allow log logamount 1000 tcp from any to any established
12301 allow log logamount 1000 tcp from any to any out
12302 allow log logamount 1000 tcp from any to any dst-port 22 …
そして、リストの最後のルールが 1 つあります (変更できないとどこかで読みました)。
65535 allow ip from any to any
サーバー管理アプリは、ファイアウォール サービスが実行中であることを示しています。ipfw ログには「拒否」リストはありません。fail2ban によって IPFW にパッチされたエントリは、サーバー管理エントリのどこにも表示されず、ipfw.conf または ipfw.conf.apple ファイルにも表示されません (そのため、どこに保存されているかはわかりません)。ただし、ターミナルで「ipfw list」を取得すると、サーバー管理のファイアウォール セクションの「アクティブ ルール」タブにリストされます。
この問題に関してご協力いただければ幸いです。
答え1
fail2ban スクリプトが高すぎるルール番号を使用しているようです。ipfw はルールを番号順に評価し、特定のパケットに最初に適用されるルールによって、そのパケットの処理方法が決まります。つまり、番号の小さいルールの方が優先度が高いということです。fail2ban の「拒否」ルールは 12345 という番号で追加されますが、サーバー管理者が設定した「許可」ルールは 12302 から始まるため、少なくとも一部の許可ルールが fail2ban の拒否ルールを上書きしています。
簡単な修正方法: fail2ban スクリプトでルール番号が定義されている場所を見つけて、それを 12200 などに下げます。
ところで、fail2ban のルールが設定ファイルに追加されないのは正常で、おそらく良いことです。これらのファイルはファイアウォールが再ロードされるとき (たとえば、再起動するとき) に使用されますが、必ずしも「ライブ」ファイアウォールの状態を反映するわけではありません。必要な場合は、fail2ban スクリプトを編集して、そのルールをこれらのファイルに追加し、ライブ状態で設定することもできますが、これはルールセットが時間の経過とともに任意に大きくなることを意味します。私の意見では、このような「永続的な」禁止に悩む必要があるのは、長期間にわたって同じ IP からの不正使用が何度も見られる場合だけです... ただし、これはまれだと思います。