web-dev-qa-db-ja.com

CentOS 7にfail2banをインストールする

@GarethTheRedの この質問 への回答を使用して、リモートのCentOS 7サーバーにfail2banをインストールしています。私はtail -f /var/log/fail2ban.logまでのすべての手順を完了することができます。その時点で、彼が回答で得た結果とは異なる結果が得られます。

このステップで得られる結果は次のとおりです。

[[email protected] ~]# tail -f /var/log/fail2ban.log
2014-12-02 16:55:53,548 fail2ban.server.server[6667]: INFO    Changed logging target to /var/log/fail2ban.log for Fail2ban v0.9.0
2014-12-02 16:55:53,550 fail2ban.server.database[6667]: INFO    Connected to fail2ban persistent database '/var/lib/fail2ban/fail2ban.sqlite3'
2014-12-02 16:55:54,239 fail2ban.server.database[6667]: WARNING New database created. Version '2'  

最後の行の後、カーソルを取得しますが、Ctrl-Cと入力しない限り、コマンドプロンプトは表示されません。

systemctl status fail2banと入力すると、fail2banがアクティブであることを通知します。システムからログアウトして後で再びログインすると、sshdは、前回のログイン以降、ログインに何度も失敗したことを示しています。したがって、fail2banログがあるはずです。しかし、私はそれらを見つけることができないようです。

誰かがこれを設定してfail2banが追跡可能なログを生成するように設定する方法を教えてもらえますか?

15
CodeMed

[〜#〜] epel [〜#〜] からfail2banをインストールしてみてください。これはCentOS 7用にパッケージ化されており、リリースされるたびに更新されます。別のリポジトリからrpmをインストールすると機能する場合があります(この場合は機能しました)が、最善の方法ではありません。

まず最初に、以下を(ルートとして)発行してEPELリポジトリをインストールします。

yum install epel-release

上記はEPELをインストールして 多くの新しいパッケージ へのアクセスを提供します。これらのパッケージの1つはfail2banであるため、次のコマンドを実行してインストールします。

yum install fail2ban

デフォルトでは、jailは設定されていないため、基本的なsshd jailを設定するには、次のようにします。

ファイル/etc/fail2ban/jail.localを作成/編集して、以下を追加します。

[sshd]
enabled = true

それから始めます:

systemctl start fail2ban

起動時にそれを開始します:

systemctl enable fail2ban

以前は 既知のバグ があり、SELinuxはfail2banがジョブの実行に必要なログファイルにアクセスできないようにしていました。これはCentOS 7の最新バージョンで修正されているようです。以下の変更を行う必要はありません。

この問題がある場合、症状はログに何も表示されておらず、fail2ban-client status sshdの出力に失敗またはブロックされていると表示されているものもありません。

SELinuxエラーを確認するには、次のコマンドでジャーナルを読みます。

journalctl -lfu fail2ban

次のようなメッセージを監視します。

SELinux is preventing /usr/bin/python2.7 from getattr access on the file .
       *****  Plugin catchall (100. confidence) suggests   **************************
       If you believe that python2.7 should be allowed getattr access on the  file by default.
       Then you should report this as a bug.
       You can generate a local policy module to allow this access.
       Do 
       allow this access for now by executing:
       # grep fail2ban-server /var/log/audit/audit.log | audit2allow -M mypol
       # semodule -i mypol.pp

したがって、推奨どおりに実行します。

grep fail2ban-server /var/log/audit/audit.log | audit2allow -M mypol
semodule -i mypol.pp

次に、安全のためにfail2banを再起動します。

systemctl restart fail2ban

ログにエラーメッセージが表示されなくなるまで、上記のプロセスを繰り返す必要がある場合もあります。

サーバーがインターネット上にある場合は、fail2ban-client status sshdを監視してください。 SELinuxの問題をすべて把握していれば、すぐに失敗したカウントと禁止されたカウントが表示されるようになります。

SELinuxポリシーの更新に注意する必要があることに注意してください。 selinux-policyパッケージの更新が表示された場合、上記の内容が上書きされる可能性があり、上記のコマンドを再度実行する必要がある場合があります。 fail2banが再び機能しなくなるため、これが当てはまるかどうかがわかります。

32
garethTheRed