Fail2ban を使用して Linux サーバーを保護する方法
Linux サーバーを管理する場合、サーバーのセキュリティを向上させることは最優先事項の 1 つです。サーバー ログを確認すると、ブルート フォース ログイン、Web フラッド、エクスプロイト シークなどのさまざまな試みが見つかることがあります。
fail2ban などの侵入防止ソフトウェアを使用すると、サーバー ログを調べて、問題のある IP アドレスをブロックする追加の iptables ルールを追加できます。
こちらもお読みください: CentOS/RHEL 8 で SSH を保護するために Fail2Ban をインストールする方法
このチュートリアルでは、fail2ban をインストールし、Linux システムをブルート フォース攻撃から保護するための基本構成をセットアップする方法を説明します。
要件
Fail2ban は Python で書かれており、唯一の要件は Python がインストールされていることです。
- Fail2ban ブランチ 0.9.x には Python >=2.6 または Python >=3.2 が必要です
- Fail2ban ブランチ 0.8.x には Python >=2.4 が必要です
- システムへの root アクセス
- オプションで、iptables または showwall および sendmail
Linux システムに Fail2Ban をインストールする方法
fail2ban のインストールは比較的簡単です。
CentOS/RHEL に Fail2Ban をインストールする
まず、パッケージを更新し、Epel リポジトリを有効にして、 図に示すようにfail2ban をインストールします。
yum update
yum install epel-release
yum install fail2ban
Debian/Ubuntu に Fail2Ban をインストールする
まず、パッケージを更新し、 図のようにfail2banをインストールします。
apt-get update && apt-get upgrade -y
apt-get install fail2ban
オプションで、メール サポート (メール通知用) を有効にしたい場合は、sendmail をインストールできます。
yum install sendmail [On CentOS/RHEL]
apt-get install sendmail-bin sendmail [On Debian/Ubuntu]
fail2ban と sendmail を有効にするには、次のコマンドを使用します。
systemctl start fail2ban
systemctl enable fail2ban
systemctl start sendmail
systemctl enable sendmail
Linux システムで Fail2ban を構成する方法
デフォルトでは、fail2ban は最初に読み取られる /etc/fail2ban/ にある .conf
ファイルを使用します。ただし、これらは同じディレクトリにある .local
ファイルによって上書きできます。
したがって、.local
ファイルには、.conf
ファイルのすべての設定を含める必要はなく、オーバーライドする設定のみを含める必要があります。変更は、.conf
ではなく、.local
ファイルで行う必要があります。これにより、fail2ban パケットをアップグレードするときに変更が上書きされるのを防ぎます。
このチュートリアルでは、既存の fail2ban.conf ファイルを fail2ban.local にコピーします。
cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
これで、お気に入りのテキスト エディタを使用して、.local
ファイルに変更を加えることができます。編集できる値は次のとおりです。
ログレベル – これは、ログに記録される詳細レベルです。可能なオプションは次のとおりです。
- 致命的
- エラー
- 警告
- 知らせ
- 情報
- デバッグ
logtarget – アクションを特定のファイルに記録します。デフォルト値は/var/log/fail2ban.logです。ただし、これを次のように変更できます。
- STDOUT – 任意のデータを出力します
Fail2ban のjail.local を構成する
ail2ban で最も重要なファイルの 1 つは、jail を定義する jail.conf
です。ここで、fail2ban を有効にするサービスを定義します。
前述したように、.conf
ファイルはアップグレード中に変更される可能性があるため、変更を適用できる jail.local ファイルを作成する必要があります。
これを行うもう 1 つの方法は、次のように .conf ファイルをコピーすることです。
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
CentOS または Fedora を使用している場合は、jail.local のバックエンドを < から変更する必要があります。「auto」 から 「systemd」 に変更します。
Ubuntu/Debian を使用している場合は、systemd も使用していますが、この変更を行う必要はありません。
このjail ファイルは、Debian と Ubuntu ではデフォルトで SSH を有効にしますが、CentOS では有効にしません。これを有効にしたい場合は、/etc/fail2ban/jail.local 内の次の行を変更するだけです。
[sshd]
enabled = true
禁止と再試行の回数
IP アドレスがブロックされるまでの状況を構成できます。この目的のために、fail2ban はbantime、findtime、およびmaxretryを使用します。
- 禁止時間 – これは、IP アドレスが禁止される秒数です (デフォルトは 10 分)。
- findtime – ホストが禁止されるまでのログイン試行間の時間。 (デフォルトは10分)。言い換えれば、fail2ban がログイン試行 3 回失敗した後に IP アドレスをブロックするように設定されている場合、それらの 3 回の試行は findtime 期間 (10<) 内に実行する必要があります。 分)。
- maxretry – 禁止が適用されるまでの試行回数。 (デフォルトは3)。
ホワイトリストIPアドレス
もちろん、特定の IP アドレスをホワイトリストに登録することもできます。このような IP アドレスを設定するには、好みのテキスト エディタで /etc/fail2ban/jail.local を開き、次の行のコメントを解除します。
ignoreip = 127.0.0.1/8 ::1
次に、無視したい IP アドレスを入力できます。 IP アドレスはスペースまたはカンマで区切る必要があります。
電子メールアラート
イベント発生時にメールアラートを受信したい場合は、/etc/fail2ban/jail.local で次の設定を構成する必要があります。
- destemail – 通知を受け取るメール アドレス。
- 送信者名 – メッセージの受信時に表示される送信者。
- 送信者 –fail2ban が電子メールを送信する元の電子メール アドレス。
デフォルトのmta (メール転送エージェント) はsendmail に設定されています。
メール通知を受信するには、「アクション」 設定を次から変更する必要もあります。
Action = %(action_)s
これらのいずれかに:
action = %(action_mw)s
action = %(action_mwl)s
- %(action_mw)s – ホストを禁止し、Whois レポートを含むメールを送信します。
- %(action_mwl)s – ホストを禁止し、Whois 情報とログ ファイルからのすべての関連情報を提供します。
追加の Fail2ban ジェイル構成
ここまでは、基本的な構成オプションについて見てきました。 jail を設定したい場合は、jail.local ファイルでそれを有効にする必要があります。構文は非常に単純です。
[jail_to_enable]
. . .
enabled = true
jail_to_enable を実際の刑務所 (「sshd 」 など) に置き換える必要があります。 jail.local ファイルでは、ssh サービス用に次の値が事前定義されます。
[sshd]
port = ssh
logpath = %(sshd_log)s
ログ内の行が失敗した行であるかどうかを識別するのに役立つフィルターを有効にすることができます。フィルタ値は実際には、サービス名の後に .conf が続くファイルへの参照です。例: /etc/fail2ban/filter.d/sshd.conf。
構文は次のとおりです。
filter = service
例えば:
filter = sshd
ディレクトリ /etc/fail2ban/filter.d/ にある既存のフィルタを確認できます。
failed2ban-client を使用する
Fail2ban には、現在の構成を確認および変更するために使用できるクライアントが付属しています。多くのオプションが提供されているため、次の手順でマニュアルを参照できます。
man fail2ban-client
ここでは、使用できる基本的なコマンドをいくつか示します。 fail2ban または特定の刑務所の現在のステータスを確認するには、次のコマンドを使用できます。
fail2ban-client status
結果は次のようになります。
個々の刑務所については、次を実行できます。
fail2ban-client status sshd
以下のスクリーンショットでは、fail2ban が接続しようとした IP アドレスをブロックできるように、意図的に複数のログインに失敗していることがわかります。
結論
Fail2ban は、十分に文書化された優れた侵入防御システムであり、Linux システムに追加のセキュリティを提供します。設定と構文に慣れるまでには時間がかかりますが、一度慣れてしまえば、自由にルールを変更したり拡張したりできるようになります。