PR

VPSのセキュリティを段階的に高めていく|fail2ban基本編

fail2banによって不正なログイン試行を検知し、VPSへのアクセスを自動的に遮断する様子を表したイラスト。 VPS・RentalServer
この記事は約4分で読めます。
記事内に広告が含まれています。
スポンサーリンク

前回のSSH編では、
一般ユーザーでの運用、鍵認証への移行、
rootログインやパスワードログインの禁止といった
SSHの基本的なセキュリティ設定を実践しました。

今回は、
「VPSのセキュリティを段階的に高めていく」シリーズの一部として、
fail2banを導入し、不正なアクセス試行を自動で遮断するところまでを整理します。

前回までに、

  • ufwで不要なポートを閉じる
  • SSHで正規のログイン方法を1つに絞る

という、静的なセキュリティ設計を行いました。

今回はその続きとして、
それでも発生する不正な試行にどう対応するかを扱います。

fail2banは何をするものか

fail2banは、

  • サーバーのログを監視し
  • 一定回数以上の失敗を検知したIPアドレスを
  • 一時的にBAN(遮断)する

という仕組みです。

重要なのは、fail2banは「攻撃を見つけて防ぐ」ツールではなく、異常な振る舞いを自動的に止める仕組みだという点です。

なぜufwとSSHの次にfail2banなのか

SSHを鍵認証にしても、rootログインやパスワードログインを禁止しても、SSHへのログイン試行(攻撃)そのものは止まりません

実際には、

  • 存在しないユーザー名
  • 無差別なログイン試行

といったアクセスは、設定に関係なく継続的に発生します。

fail2banは、そうした「おかしな試行」を自動で排除する役割を担います。

fail2banとufwの関係

fail2banは、「このIPをBANする」という判断を行います。

実際に通信を遮断するのは、

  • ufw
  • 内部的にはiptables

です。

つまり、

  • ufw:通信を通す/通さない仕組み
  • fail2ban:BANする相手を判断する仕組み

という役割分担になります。

ufw編で入口を整理していることが、fail2banを使う前提条件になっています。

fail2banのインストール

Ubuntu Server 24.04では、aptでfail2banをインストールできます。

sudo apt update
sudo apt install fail2ban

インストール後、サービスが起動しているか確認します。

sudo systemctl status fail2ban

active (running) と表示されていれば問題ありません。

最低限、有効にするjail

fail2banには多くのjailがありますが、基本編では欲張りません。

sshd jail

まず有効にしたいのが、sshd です。

  • SSHへの不正ログイン試行を監視
  • 一定回数失敗したIPをBAN

これだけでも、不正アクセスに対する効果は十分にあります。

Web公開している場合のjail

Webサーバーを公開している場合は、

  • http-auth
  • nginx / Apache 関連のjail

を検討できます。

ただし、本記事では 詳細なWeb系jailの設計は扱いません。

まずは、SSHを確実に守ることを優先します。

jail.localを使う理由

fail2banの設定は、

  • jail.conf を直接編集せず
  • jail.local に記述する

のが基本です。

理由は、

  • アップデートで上書きされない
  • 変更点を把握しやすい

からです。

本シリーズでは、カスタマイズはすべて jail.local に集約します。

jail.local の作成

fail2banの設定を行う前に、カスタマイズ用の設定ファイルであるjail.local を作成します。

fail2banでは、標準設定が書かれた jail.conf を直接編集せず、自分用の設定は jail.local に記述するのが基本です。

まだ jail.local が存在しない場合は、次のコマンドで新規作成します。

sudo nano /etc/fail2ban/jail.local

この操作で、jail.local が作成されます。
以降の記事では、このファイルに設定を追記・調整していきます。

基本的な設定項目の考え方

fail2banには、次のような設定項目があります。

  • maxretry
  • findtime
  • bantime

ここでは、数値の細かい設計には踏み込みません。

  • 何回失敗したら
  • どれくらいの時間で
  • どれくらいBANするか

という 考え方だけを押さえておきます。

具体的な数値設計や再犯対策は、次回の記事で扱います。

fail2banが動いているか確認する

導入後は、実際に動いているかを必ず確認します。

fail2ban全体の状態

sudo fail2ban-client status

sshd jailの状態

sudo fail2ban-client status sshd

Status: active と表示され、BANされたIPが確認できれば、fail2banは正しく動作しています。

ここまででできること・できないこと

できること

  • 不正ログイン試行の自動BAN
  • 明らかな攻撃の抑止
  • VPSへの負荷やログの軽減

できないこと

  • 完全な防御
  • 巧妙な攻撃の検知
  • 再犯者への長期対応

fail2ban基本編は、あくまで第一段階です。

次回予告:再犯対策と運用へ

fail2banを導入したことで、不正な試行は自動的にBANされるようになりました。

しかし、

  • 同じIPが何度も現れる
  • 時間を空けて再度攻撃してくる

といったケースも見えてきます。

次回は、recidiveを使った再犯対策と、運用時の考え方について整理します。

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