不正アクセスを防げ!初心者向け fail2ban の使い方ガイド【Ubuntu対応】

fail2ban ubuntu linux ITインフラ
この記事は約7分で読めます。

この記事の最終更新日: 2025年5月22日

はじめに

インターネットに公開したUbuntuサーバーは、不正ログインやブルートフォース攻撃(総当たり攻撃)の標的になりがちです。これらの攻撃は、無作為にIDとパスワードの組み合わせを試すことで不正アクセスを狙うもので、日々膨大な数が実行されています。

こうした脅威からサーバーを守るために使われるのが fail2ban です。fail2banは、ログファイルを監視し、不審なアクセス(例:ログイン失敗を繰り返すIPアドレス)を検出して、該当IPを自動的にファイアウォール経由で一時的にブロックするセキュリティツールです。

この記事では、fail2banの基本的な仕組み、Ubuntuでのインストールと設定方法、よく使うコマンドなどを、初心者でも理解しやすいように丁寧に解説します。

fail2ban ubuntu linux

1. fail2banの仕組み(基本構造と役割)

fail2banは以下の3つのコンポーネントによって構成されています。

  1. Filter(フィルタ)
    ログファイル内の特定パターン(例:SSHログイン失敗)を見つけるための条件を定義します。これは正規表現(特定の文字列パターンを見つけるための記述法)で記述されます。
  2. Action(アクション)
    フィルタによって「攻撃」と判断されたIPアドレスに対して、どのように対処するかを定義します。たとえば、iptablesやUFWを用いてそのIPを一定時間ブロック(BAN)するなどの処理です。
  3. Jail(ジャイル)
    フィルタとアクションを組み合わせ、どのサービス(SSH、Apacheなど)をどのログで監視するか、何回失敗したら、どのくらいの時間ブロックするかを設定します。fail2banにおける「ルールセット」のようなものです。

fail2banはPythonで開発されており、設定ファイルは以下のような場所にあります:

  • /etc/fail2ban/filter.d/:フィルタ(ログから不正アクセスの兆候を見つけるための定義)
  • /etc/fail2ban/action.d/:アクション(不審なIPに対して実行する操作)
  • /etc/fail2ban/jail.d/ または /etc/fail2ban/jail.conf:各サービスに対するfail2banの設定(jail)

2. インストールと基本操作(Ubuntu)

2.1 インストール手順

fail2banはUbuntuの公式パッケージリポジトリに含まれており、以下のコマンドで簡単にインストールできます:

sudo apt update
sudo apt install fail2ban

インストール完了後、自動的にfail2banのサービスが起動します。

sudo systemctl status fail2ban

「Active: active (running)」と表示されていれば正常に稼働中です。

2.2 バージョンの確認

fail2ban-client --version


3. 設定ファイルの構成とカスタマイズ

3.1 各種設定ファイルの場所と役割

ファイルパス内容
/etc/fail2ban/fail2ban.conffail2banのメイン設定ファイル(通常は変更不要)
/etc/fail2ban/jail.conf全体のjail設定(編集せず、コピーしてjail.localなどで編集)
/etc/fail2ban/jail.d/jail設定を個別ファイルで管理するディレクトリ(推奨)
/etc/fail2ban/filter.d/ログパターンの検出用フィルタ定義

3.2 SSH保護の設定例

以下のように設定することで、SSHに対する不正アクセスを検出・防止できます。

# /etc/fail2ban/jail.d/ssh.conf

[sshd]

enabled = true # 監視を有効にする port = ssh # 対象ポート(通常22) filter = sshd # 使用するフィルタ(sshd.conf) logpath = /var/log/auth.log # 監視対象のログファイル maxretry = 5 # 許容するログイン失敗回数 findtime = 600 # 上記回数を何秒以内に検知するか bantime = 600 # ブロックする時間(秒) action = iptables-multiport[name=SSH, port=”ssh”] # 実行アクション

3.3 設定の再読み込み

設定を変更した後は、fail2banサービスを再起動または再読み込みして反映させます。

sudo systemctl reload fail2ban
# または
sudo systemctl restart fail2ban


4. fail2ban-clientを使った操作方法

fail2banにはコマンドラインツール fail2ban-client があり、状況確認や手動操作ができます。

4.1 現在動作中のjailの確認

sudo fail2ban-client status

4.2 特定jailの状態を確認する

sudo fail2ban-client status sshd

出力例:

[sshd]
  |- Filter
  |  |- Currently failed: 0
  ...
  |- Action
     |- Currently banned: 2
     |- Banned IP list: 203.0.113.10, 198.51.100.5

4.3 BANされたIPアドレスを解除する

sudo fail2ban-client set sshd unbanip 198.51.100.5

4.4 フィルタの動作をテストする

sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf

これは、指定されたログファイルに対して指定したフィルタが適切にマッチしているかを検証するコマンドです。


5. 代表的なjail設定の例

fail2banはSSH以外にも、Webサーバーやメールサーバーのログを監視できます。

サービスjail設定ファイル例監視ログファイル
SSH/etc/fail2ban/jail.d/ssh.conf/var/log/auth.log
Nginx HTTP/etc/fail2ban/jail.d/nginx-http.conf/var/log/nginx/access.log
Postfix/etc/fail2ban/jail.d/postfix.conf/var/log/mail.log

Nginxのアクセス制限設定例:

[nginx-http]
enabled  = true
port     = http,https
filter   = nginx-http-auth
logpath  = /var/log/nginx/access.log
maxretry = 10
findtime = 600
bantime  = 3600


6. まとめ

  • fail2banは、不正アクセスをログから検出し、自動で攻撃元IPをブロックするツールです。
  • Ubuntuでは apt install で簡単に導入でき、設定も柔軟です。
  • SSHだけでなく、Webサーバーやメールサーバーなど幅広いサービスに対応できます。
  • 設定後は fail2ban-client を使って、動作状況やBANリストの確認・解除ができます。

FAQ

Q1. UFWやiptablesと併用できますか?
A. はい。fail2banは内部的にiptablesやUFWのコマンドを実行してIPアドレスをブロックするため、併用に問題はありません。

Q2. bantimeを永久にしたいときは?
A. bantime = -1 と設定すれば、ブロックは自動解除されず、手動で解除するまで続きます。

Q3. フィルタをカスタマイズしたいときは?
A. /etc/fail2ban/filter.d/ にある既存の .conf ファイルをベースに、正規表現などを編集してオリジナルの検出ルールを作成できます。


コメント

タイトルとURLをコピーしました