セキュリティ

SSH 向けに fail2ban を設定する方法(2026)

fail2ban を設定して SSH 総当たりボットを遮断する:インストール、sshd jail の設定(maxretry、findtime、bantime)、確認と BAN 解除、そしてスマホからのやり方 ── さらに自分を締め出さないための方法も。

CC Chen Chen· 創業者·2026年6月24日·5 分で読めます

fail2ban が SSH に対してすること

fail2ban は認証ログを監視し、ログイン失敗が一定回数を超えた IP アドレスを一時的に BAN します ── つまり SSH に総当たり攻撃を仕掛けるボットは、いつまでも叩き続ける代わりにファイアウォールで遮断されます。役立つ防御層ですが、その位置づけははっきりさせておきましょう。すでに SSH 鍵に切り替えてパスワードログインを無効にしているなら、総当たり攻撃はそもそも成功しません。fail2ban は多層防御とログノイズの削減であって、第一の防衛線ではありません。まず鍵を設定し(鍵 vs パスワード)、その上に fail2ban を追加しましょう。

ステップ 1 ── fail2ban をインストールする

sudo apt update && sudo apt install fail2ban   # Debian/Ubuntu
# RHEL/Fedora: sudo dnf install fail2ban

妥当なデフォルト値で起動しますが、パッケージ更新で上書きされないよう、自分の設定は jail.local に書くべきです。

ステップ 2 ── SSH の jail を設定する

/etc/fail2ban/jail.local を作成します:

[sshd]
enabled  = true
port     = ssh
maxretry = 5
findtime = 10m
bantime  = 1h

これはこう読めます:10 分以内に 5 回ログインに失敗したら、その IP を 1 時間 BAN する。繰り返す相手には bantime を上げられます(1 日にする人もいれば、bantime.increment = true で段階的に増やす人もいます)。SSH を 22 番ポートから移動したなら、port を実際のポートに設定してください。

ステップ 3 ── 再起動して確認する

sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

ステータス行には現在 BAN 中の IP と合計が表示されます。誤って BAN したアドレス(例えば、何度か打ち間違えた後の自分自身)を解除するには:

sudo fail2ban-client set sshd unbanip 203.0.113.10
スマホからサーバーの fail2ban ステータスを確認する SSH セッション
fail2ban-client status sshd を実行して BAN 中の IP を確認。インストール、設定、ステータス確認 ── これらすべてスマホから SSH 越しに問題なくできます。

スマホからやる

fail2ban はスマホから SSH 越しに完全に管理できます:SFTP か nanojail.local を編集し、サービスを再起動し、ステータスを確認する。正確な fail2ban-client のサブコマンドを思い出せなければ、TermAI のアシスタントに説明してください ──「sshd で BAN 中の IP を表示」「このアドレスを解除」── 実行前にコマンドを確認しましょう。

TermAI が Run ボタン付きで fail2ban コマンドを提案している様子
正しい fail2ban-client コマンドを尋ね、実行前に確認 ── スマホから BAN を確認するときに便利です。

自分を締め出さないように

自分のログインに何度か失敗すると、fail2ban はあなたを BAN することがあります。2 つの安全策:テスト中は使えるセッションを開いたままにしておくこと、そして自分の IP(または Tailscale の範囲)を無視リストに追加すること:

# in [DEFAULT] of jail.local
ignoreip = 127.0.0.1/8 100.64.0.0/10

この 100.64.0.0/10 は Tailscale の範囲です ── Tailscale 経由で SSH に到達するなら、自分の接続は BAN されません。さらに良いのは、SSH を完全に Tailscale の後ろに置くこと。そうすれば公開ボットはそもそも到達できません。

FAQ

SSH 鍵を使うなら fail2ban は必要ですか?
任意です。鍵を使いパスワードログインを無効にしていれば、総当たり攻撃は成功しません。それでも fail2ban はログノイズを減らしトラフィックを遮断するので、多くの管理者は追加の層として動かしています。

fail2ban は IP をどのくらい BAN しますか?
bantime に設定した値 ── 1 時間が一般的です。上げることも、繰り返す相手には段階的に増やすこともできます。

fail2ban で IP の BAN を解除するには?
fail2ban-client set sshd unbanip <IP> を実行します。信頼できる IP を ignoreip に追加すれば、決して BAN されません。

クイックファクト

  • 役割:SSH ログイン失敗が繰り返された後に IP を BAN する
  • 位置づけ:多層防御 ── 鍵 + パスワード無効のほうが重要
  • 設定:/etc/fail2ban/jail.local[sshd] maxretry / findtime / bantime
  • 自分を BAN しない:自分の IP / Tailscale の範囲を ignoreip に;さらに良いのは SSH を Tailscale の後ろに置くこと
Try TermAI

Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.

CC
Chen Chen — Founder of TermAI

Writes about mobile DevOps, terminal UX, and the surprising depth of "boring" infrastructure.

Was this useful? ← Back to blog