開発運用

Fail2ban 設定ガイド

Fail2banは、サーバーやネットワークのセキュリティを強化するために、特にログイン試行やサービスへの不正アクセスを監視し、自動的に攻撃者をブロックするツールです。このツールは、指定されたパターンやルールに基づいてログファイルを監視し、悪意のある行動が検出された場合にIPアドレスを一時的または永久的にブロックします。ここでは、Fail2banの設定ファイルの役割と、その設定を使用して効果的に攻撃者を取り除く方法について詳述します。

Fail2banの構成ファイル

Fail2banは、複数の設定ファイルを利用して動作します。これらの設定ファイルは、どのように攻撃者を検出し、どのアクションを取るかを決定します。主な設定ファイルは以下の通りです:

  1. /etc/fail2ban/fail2ban.conf:

    • このファイルには、Fail2ban全体の設定に関する基本的な情報が記載されています。通常、特定のロギングやデバッグオプションなどのシステム全体のパラメータを設定します。
  2. /etc/fail2ban/jail.conf:

    • Fail2banが監視するサービス(例えばSSHやHTTPなど)ごとに設定を行う場所です。各サービスに対して、「jail(監獄)」という設定を行い、攻撃者が特定のサービスにアクセスする際にどのように反応するかを定義します。例えば、SSHのログイン試行の失敗が一定回数を超えた場合に、そのIPアドレスをブロックする、といった設定です。
  3. /etc/fail2ban/jail.d/:

    • jail.confと似たような役割を果たしますが、こちらはカスタム設定や上書きされた設定を管理するためのディレクトリです。個別の設定ファイルがここに追加されることがあり、異なるサーバーやサービスごとに設定を分けることができます。
  4. /etc/fail2ban/filter.d/:

    • ここには、Fail2banが特定のログファイルで検出するパターン(フィルター)に関する設定が含まれています。ログ内でどのような文字列を探すか、そしてそれをどのように解釈するかを定義します。
  5. /etc/fail2ban/action.d/:

    • 攻撃者がブロックされる条件が満たされたときに、Fail2banがどのようなアクションを取るかを定義する設定ファイルです。例えば、IPアドレスをブロックするためにファイアウォールの設定を変更する、メールで通知するなどのアクションが設定されています。

Fail2banの設定ファイルの基本的な構成

Fail2banの設定ファイルを理解するために、基本的な構成要素について触れていきます。

1. jail.conf の設定

jail.confでは、個々のサービスごとに設定を行います。以下に、SSHサービスの設定例を示します:

bash
[ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = 600 findtime = 600 action = iptables[name=SSH, port=ssh, protocol=tcp]

ここでは、enabledtrueに設定することで、SSHに対する監視を有効にし、logpathに指定したログファイル(この場合は/var/log/auth.log)を監視します。maxretryは失敗したログイン試行の回数で、bantimeはブロックする時間(秒)です。findtimeは何秒以内に失敗回数をカウントするかを指定します。

actionでは、失敗回数がmaxretryに達した場合に、どのようなアクションを取るかを設定します。ここでは、iptablesを使用して、攻撃者のIPアドレスをTCPのSSHポートでブロックするように設定しています。

2. filter.d の設定

filter.dには、ログファイル内の特定のパターンを識別するための設定が含まれます。例えば、sshdに関連する設定ファイル(sshd.conf)では、SSHサービスに関連するログイン失敗のパターンが設定されています。

bash
[Definition] failregex = .*sshd\[[^\]]*\]: Failed password for.*$ ignoreregex =

この設定は、auth.log内のログメッセージに一致するパターンを定義しており、SSHログインの失敗メッセージを検出します。この正規表現が一致すると、Fail2banはそのログエントリを検出し、設定されたアクションを実行します。

3. action.d の設定

action.dディレクトリには、攻撃者をブロックするためのアクションが設定されています。例えば、iptablesを使ってIPアドレスをブロックする設定は以下のように行われます:

bash
[Definition] actionstart = iptables -N fail2ban-SSH iptables -A fail2ban-SSH -j REJECT actionstop = iptables -D fail2ban-SSH -j REJECT iptables -F fail2ban-SSH actioncheck = iptables -n -L fail2ban-SSH actionban = iptables -I fail2ban-SSH 1 -s -j REJECT actionunban = iptables -D fail2ban-SSH -s -j REJECT

この設定では、Fail2banがIPアドレスをiptablesでブロックする方法を定義しています。actionbanでは、特定のIPアドレスをiptablesのルールに追加して拒否します。actionunbanでは、ブロックされたIPアドレスを解除します。

Fail2banの動作の流れ

  1. ログファイルの監視:

    • Fail2banは指定されたログファイルを監視し、設定されたパターンが一致するエントリを検出します。
  2. パターンの一致確認:

    • 一致するエントリが見つかると、Fail2banはそのIPアドレスが一定回数のログイン失敗を繰り返したかどうかをチェックします(maxretryの設定に基づく)。
  3. IPアドレスのブロック:

    • もしログイン失敗の回数がmaxretryに達した場合、そのIPアドレスをiptablesなどのツールを使ってブロックします。
  4. 時間経過後に解除:

    • 設定された時間(bantime)が経過すると、Fail2banは自動的にそのIPアドレスのブロックを解除します。

まとめ

Fail2banは、ログファイルを監視し、不正アクセスを自動的にブロックする非常に効果的なツールです。設定ファイルを適切に管理することで、セキュリティの強化を図ることができます。特に、jail.conffilter.daction.dの設定を理解することが、Fail2banの運用において重要です。

Back to top button