Fail2ban は、さまざまなサービス (SSH、FTP、SMTP、Apache など) のログ ファイルをスキャンし、パスワードの失敗が多すぎる IP。また、これらの IP アドレスを拒否するようにファイアウォール ルールを更新します。
Fail2ban は、Python プログラミング言語で書かれた侵入防止フレームワークです。
Fail2ban の主な目的は、ブルート フォース ログイン攻撃を防ぐことです。
また、Tripwire (Linux ホスト ベースの侵入検知システム) に関する以前の記事も参照してください。
Fail2ban をインストール
ソースから fail2ban をインストールするには、sourceforge からダウンロードしてください。
以下に示すように、apt-get を使用して、Debian ベースのシステムに Fail2ban をインストールします。
# apt-get install fail2ban
また、fail2ban deb パッケージをダウンロードして、Fail2ban を手動でインストールすることもできます。
# dpkg -i fail2ban_0.8.1-1_all.deb
fail2ban の設定方法
すべての Fail2ban 構成ファイルは、/etc/fail2ban ディレクトリの下にあります。
/etc/fail2ban/fail2ban.conf
このファイルの主な目的は、fail2ban ログ関連のディレクティブを構成することです。
- ログレベル:ログレベル出力を設定します。
- logtarget :ログ ファイルのパスを指定します
Fail2ban によって実行されたアクションは、/var/log/fail2ban.log ファイルに記録されます。 conf ファイルの詳細度は、1 – ERROR、2 – WARN、3 – INFO、または 4 – DEBUG のいずれかに変更できます。
/etc/fail2ban/jail.conf
jail.conf ファイルには、サービス構成の宣言が含まれています。この構成ファイルは、さまざまなコンテキストに分割されています。 DEFAULT 設定はすべてのセクションに適用されます。
jail.conf の次の DEFAULT セクションは、600 秒または 10 分 (findtime) 以内に単一の IP アドレスからのアクセス試行が 5 回失敗した後、そのアドレスが 600 秒間 (bantime) 自動的にブロックされることを示しています。
[DEFAULT] ignoreip = 127.0.0.1 maxretry = 5 findtime = 600 bantime = 600
- ignoreip:これは、fail2ban でブロックできない IP アドレスのスペース区切りのリストです。
- maxretry:ホストが fail2ban によってブロックされるまでのログイン試行の最大失敗回数。
- bantime:ホストが fail2ban によってキャッチされた場合にホストがブロックされる時間 (600 秒 =10 分)。
サービス構成
デフォルトでは、一部のサービスがテンプレートとして挿入されます。以下は、ssh サービス セクションの例です。
[ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log action = iptables
- enabled :ssh サービスの fail2ban チェックを有効にします
- port:サービス ポート (/etc/services ファイルで参照)
- filter:サービスが一致を検出するために使用するフィルタの名前。この名前は「/etc/fail2ban/filter.d」のファイル名に対応します。 「.conf」拡張子なし。例:「filter =sshd」は「/etc/fail2ban/filter.d/sshd.conf」を参照します。
- logpath:fail2ban が失敗したログイン試行をチェックするログ ファイル。
- アクション:このオプションは、フィルタが一致したときに実行するアクションを fail2ban に指示します。この名前は、拡張子「.conf」を除いた「/etc/fail2ban/action.d/」のファイル名に対応します。例:‘action =iptables’ は /etc/fail2ban/action.d/iptables.conf’ を参照します。
Fail2ban は /var/log/auth.log ファイルでアクセス試行の失敗を監視し、同じ IP アドレスまたはホストからの ssh ログイン試行の失敗が繰り返されていることを検出した場合、fail2ban はその IP アドレス/ホストからのそれ以上のログイン試行をブロックすることによって停止します。 fail2ban iptables ファイアウォール ルール。
Fail2ban フィルター
ディレクトリ /etc/fail2ban/filter.d には、さまざまなサービスに対する侵入の試み、パスワードの失敗などを検出するために使用される正規表現が含まれています。
例:
- sshd.conf – Fail2ban ssh 関連のフィルター
- apache-auth.conf – Fail2ban Apache サービス フィルタ
独自の正規表現を追加して、不要なアクションを見つけることもできます。
Fail2ban アクション
ディレクトリ /etc/fail2ban/action.d には、フィルターが一致すると実行されるアクションを定義するさまざまなスクリプトが含まれています。サービスごとに許可されるフィルターは 1 つだけですが、複数のアクションを別々の行で指定することができます。
例:
- IPtables.conf – IP アドレスのブロックとブロック解除
- Mail.conf – 構成されたユーザーにメールを送信する
Fail2ban サービスの開始/停止
構成を変更したら、以下に示すように Fail2ban デーモンを停止して開始します。
# /etc/init.d/fail2ban stop # /etc/init.d/fail2ban start