#SSH を守る2つの設定
Linux Server の SSH の守りは、2つあります。
- SSH 総当たりの検知と遮断: ログインに続けて失敗した接続元を、一定の時間、SSH のポートから締め出します。既定で有効です
- SSH の接続元の限定: 新しい SSH 接続を、許可リストにある接続元だけに限ります。既定は無効です
どちらも、うまく使えば攻撃を減らせます。設定を誤ると、自分が入れなくなります。この講座では、使い捨ての VM の中で、遮断と締め出しを実際に起こして確かめます。
この講座の操作は、ファイアウォールの規則を変えます。実機で試す前に、VM で流れを確かめてください。この講座の VM は tart exec で操作します。SSH を通らないので、SSH が遮断されても作業を続けられます。実機で試すときも、コンソールのような、SSH 以外の入り口を先に用意します。
#練習の場を用意する
遮断を確かめるには、「外の接続元」が要ります。このホスト自身のアドレスは、遮断の対象から外れているためです(設定ファイルの例の注記)。そこで、VM の中にネットワーク名前空間を作り、別のアドレスから SSH をかけます。
ユーザーを作り、ネットワークの設定を足す操作です(変更を伴う操作です)。パスワードは練習用のダミーです。
sudo useradd -m -s /bin/bash labuser
echo 'labuser:Practice-Pass-123' | sudo chpasswd
sudo apt install -y sshpass
sudo systemctl start roamswitch-server名前空間 outside を作り、10.99.0.2 と 10.99.0.3 を持たせます。VM の側は 10.99.0.1 です。
sudo ip netns add outside
sudo ip link add veth-host type veth peer name veth-out
sudo ip link set veth-out netns outside
sudo ip addr add 10.99.0.1/24 dev veth-host
sudo ip link set veth-host up
sudo ip netns exec outside ip addr add 10.99.0.2/24 dev veth-out
sudo ip netns exec outside ip addr add 10.99.0.3/24 dev veth-out
sudo ip netns exec outside ip link set veth-out up
sudo ip netns exec outside ping -c1 -W2 10.99.0.1 | tail -21 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.045/0.045/0.045/0.000 msガードの状態を見ます。
sudo roamswitch bans=====================================================
🛑 SSH 総当たりガード
=====================================================
状態 : 検知のみ(遮断しない)
理由 : fail2ban が SSH を防御しているため、遮断はそちらに任せています(ssh_guard_yield_to_fail2ban=true)。
ログ : journal
ポート : 22
遮断は fail2ban に任せています。SSH ガードが遮断しない接続元(開いている SSH のセッション、最近の公開鍵のログイン、ssh_guard_allow)は、fail2ban には伝わりません。自分の接続元は、fail2ban の ignoreip(/etc/fail2ban/jail.local)にも加えてください。fail2ban が遮断している接続元: sudo fail2ban-client status sshd
遮断中の接続元はありません。この VM には fail2ban が入っていて、sshd を見ています。そのため、RoamSwitch は検知して知らせるだけで、遮断は fail2ban に任せています。fail2ban が遮断している接続元は、roamswitch bans ではなく、案内の行のとおり sudo fail2ban-client status sshd で見ます。
一覧は sudo を付けて見ます。付けないと、ファイアウォールの表を読めません。一覧の代わりに「遮断の一覧は root だけが読めます: sudo roamswitch bans」と出ます。
元に戻すには、sudo ip netns del outside と sudo userdel -r labuser を実行します。
fail2ban(sshd の jail)か CrowdSec が sshd を守っていると、RoamSwitch のガードは検知と通知だけをします(ssh_guard_yield_to_fail2ban=true)。両方が規則を書くと、どちらが止めたのかが追いにくくなります。
- fail2ban の設定をすでに作り込んでいる: そのまま任せます。fail2ban が SSH の接続元を遮断すると、RoamSwitch が「fail2ban が SSH の接続元を遮断」と通知し、解除のコマンドも書きます。自分の接続元は、fail2ban の
ignoreipにも入れます - RoamSwitch に任せる: fail2ban を止めます。遮断の一覧と解除は
roamswitch bansとunban、自分のアドレスの除外はssh_guard_allowで扱います
この講座では、遮断を確かめるため、fail2ban を止めます。
#総当たりを再現して、遮断を確かめる
失敗の回数を数える元は、sshd のログ(journald)です。既定では、600 秒(ssh_guard_window_secs)のうちに 6 回(ssh_guard_max_failures)失敗した接続元を、3600 秒(ssh_guard_ban_secs)遮断します。
fail2ban を止める操作です(変更を伴う操作です)。戻し方は、この演習の最後にあります。
sudo systemctl stop fail2ban
sudo roamswitch server restart
sudo roamswitch bans | sed -n 5,7p 状態 : 検知して遮断
ログ : journal
ポート : 223つの接続元から、間違ったパスワードで 8 回ずつ試します。127.0.0.1、VM 自身のアドレス(この VM では 192.168.64.22。ip -4 addr で確かめます)、外の接続元 10.99.0.2 です。
F="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o PubkeyAuthentication=no -o NumberOfPasswordPrompts=1 -o LogLevel=ERROR -o ConnectTimeout=5"
for i in 1 2 3 4 5 6 7 8; do sshpass -p wrong-pass ssh $F labuser@127.0.0.1 true; done
for i in 1 2 3 4 5 6 7 8; do sshpass -p wrong-pass ssh $F labuser@192.168.64.22 true; done
for i in 1 2 3 4 5 6 7 8; do
sudo ip netns exec outside sshpass -p wrong-pass ssh $F -b 10.99.0.2 labuser@10.99.0.1 true; echo "try $i: exit $?"
donelabuser@10.99.0.1: Permission denied (publickey,password).
try 5: exit 255
try 6: exit 255
ssh: connect to host 10.99.0.1 port 22: Connection timed out
try 7: exit 255
ssh: connect to host 10.99.0.1 port 22: Connection timed out
try 8: exit 2556 回目は、断りの文が出る前に、接続が切れました。遮断のときに、この接続元が SSH に張っていた接続を閉じるためです。7 回目からは、接続そのものが届きません。断る返事も返さず、パケットを捨てるため、「timed out」になります。
sudo roamswitch bans=====================================================
🛑 SSH 総当たりガード
=====================================================
状態 : 検知して遮断
ログ : journal
ポート : 22
接続元 種類 残り 失敗 これまでの遮断
10.99.0.2 SSH 59m50s 6 0
解除: sudo roamswitch unban <IP> / --all
最近の記録:
2026-11-12T01:51:35 SSH 遮断 10.99.0.2 (6)
2026-11-12T01:51:06 SSH 除外(遮断しない) 192.168.64.22 (6) 理由: このホスト自身のアドレス読み方は次のとおりです。
- 10.99.0.2 は遮断されました。残りは約 60 分です。プライベートアドレスでも、遮断の対象です
- 192.168.64.22(このホスト自身)は「除外(遮断しない)」です。理由の欄に「このホスト自身のアドレス」と出ます。6 回失敗しても、遮断しません
- 127.0.0.1 は、遮断も記録もされませんでした
- 「種類」の
SSHは、総当たりガードの遮断です。Web アクセスガードの遮断も、同じ一覧に出ます - 時刻は UTC です。
01:51:35は、日本時間の 11 月 12 日 10:51:35 です
遮断と同時に、通知も出ます。通知の履歴で確かめます。
sudo roamswitch notifications | grep -A8 "SSH 総当たり" SSH 総当たりを検知し、接続元を遮断: 10.99.0.2
ホスト: ubuntu (IP: 192.168.64.22)
接続元: 10.99.0.2
失敗したログイン: 6 回(10 分以内)
試されたユーザー名: 1 種類
遮断時間: 60 分(この接続元のこれまでの遮断: 0 回)
新しい接続を止め、この接続元が SSH に張っていた 1 本の接続も切りました。認証済みのセッションは切りません。
自分の接続元だった場合は、sudo roamswitch server unban 10.99.0.2 で解除し、server.conf の ssh_guard_allow に加えてください。
時刻: 2026-11-12 01:51:35「1 本」は、遮断の時点で開いていて、実際に閉じた接続の数です。上の 6 回目の試行の接続です。もう終わった試行の接続は数えません。開いていた接続が無いときは、「この接続元が SSH に張っていた接続はありませんでした」と出ます。
遮断の実体は、nftables の表 inet roamswitch_sshguard です。止めるのは、SSH のポートへの新しい接続だけです。
fail2ban を戻すには、sudo systemctl start fail2ban のあと sudo roamswitch server restart を実行します。bans の状態が「検知のみ」に戻ります。戻した直後に、fail2ban が journal に残っていた直前の失敗を読み、この講座で失敗させた接続元を遮断することがあります。sudo fail2ban-client status sshd で確かめ、sudo fail2ban-client set sshd unbanip <IP> で外します。
戻したあとで、まだ使っていない接続元から 7 回失敗させると、fail2ban が遮断し、RoamSwitch が「fail2ban が SSH の接続元を遮断」と通知しました。通知には、解除のコマンドも書いてあります。
設定ファイルの例の注記では、次の接続元は遮断しません。ゲートウェイ、DNS のリゾルバー、このホスト自身のアドレス、whitelist_ips と ssh_guard_allow、認証済みのセッションを開いている接続元、ssh_guard_trust_key_days(既定 30 日)以内に公開鍵でログインした接続元です。
この VM のゲートウェイは 192.168.64.1 です(ip route で確かめられます)。外の接続元を名前空間で作ったのは、外れる条件に当たらないアドレスが要るためです。
#遮断を解き、しきい値を変える
自分の接続元が遮断されたら、unban で解きます。しきい値などの設定は、roamswitch server config set で変えます。
設定を変える操作です(変更を伴う操作です)。戻し方は、この演習の最後にあります。
遮断を解き、正しいパスワードでログインします。
sudo roamswitch unban 10.99.0.2
sudo ip netns exec outside sshpass -p Practice-Pass-123 ssh $F -b 10.99.0.2 labuser@10.99.0.1 'echo ok from $SSH_CLIENT' ✓ 解除しました: 10.99.0.2
失敗の回数も消しました。遮断の回数の記録(sudo roamswitch bans の「これまでの遮断」)は残ります。同じ接続元がまた遮断されると、この回数に応じて長く遮断されます(上限は ssh_guard_ban_max_secs)。
ok from 10.99.0.2 59441 22解除のすぐあとに入っても、「総当たりのあとにログインが成功」の通知は出ませんでした。bans の「最近の記録」にも、成功の行は増えません。unban が消すのは失敗の回数で、「これまでの遮断」の回数は残ります。
しきい値を 3 回にします。範囲の外の値は、保存されません。
sudo roamswitch server config get ssh_guard_max_failures
sudo roamswitch server config set ssh_guard_max_failures 3
sudo roamswitch server config set ssh_guard_max_failures 06
✓ サーバー設定を更新・保存しました。 (ssh_guard_max_failures = 3)
反映するには: sudo systemctl restart roamswitch-server または sudo roamswitch server restart
Error: 2〜1000 の範囲で指定してください: '0'保存しただけでは、反映されません。再起動の前に 4 回失敗させても、遮断されませんでした。再起動してから、別の接続元 10.99.0.3 で試します。
sudo roamswitch server restart
for i in 1 2 3 4; do sudo ip netns exec outside sshpass -p wrong-pass ssh $F -b 10.99.0.3 labuser@10.99.0.1 true; done
sudo roamswitch bans 接続元 種類 残り 失敗 これまでの遮断
10.99.0.3 SSH 59m54s 3 0
解除: sudo roamswitch unban <IP> / --all
最近の記録:
2026-11-12T01:52:47 SSH 遮断 10.99.0.3 (3)3 回で遮断されました。同じ接続元が2度目に遮断されると、遮断時間は 4 倍になります。この VM で unban のあと 10.99.0.3 を2度目に遮断させると、240 分(bans の残りは 3h59m、これまでの遮断: 1)でした。上限は ssh_guard_ban_max_secs(既定 604800 秒、7 日)です。
自分の接続元を、遮断の対象から外します。
sudo roamswitch unban 10.99.0.3
sudo roamswitch server config set ssh_guard_allow 10.99.0.3
sudo roamswitch server restart
for i in 1 2 3 4 5 6 7; do sudo ip netns exec outside sshpass -p wrong-pass ssh $F -b 10.99.0.3 labuser@10.99.0.1 true; done
sudo roamswitch bans | tail -6 最近の記録:
2026-11-12T01:53:19 SSH 除外(遮断しない) 10.99.0.3 (3) 理由: whitelist_ips か ssh_guard_allow に入っている
2026-11-12T01:53:02 SSH 遮断 10.99.0.3 (3)7 回失敗しても、「除外(遮断しない)」と記録されるだけで、遮断されませんでした。ssh_guard_allow には、アドレスか CIDR を、カンマで区切って書けます。
元に戻します。
sudo roamswitch server config set ssh_guard_max_failures 6
sudo roamswitch server config set ssh_guard_allow ""
sudo roamswitch server restart設定のキーは、次のとおりです。どれも /etc/roamswitch/server.conf に書き、反映には再起動が要ります。
| キー | 既定 | 意味 |
|---|---|---|
ssh_guard_enabled | true | ガードを動かす |
ssh_guard_block_enabled | true | 遮断する(false で検知と通知だけ) |
ssh_guard_max_failures | 6 | 遮断までの失敗の回数(2〜1000) |
ssh_guard_window_secs | 600 | 失敗を数える時間(秒) |
ssh_guard_ban_secs | 3600 | 最初の遮断の時間(秒) |
ssh_guard_ban_max_secs | 604800 | 遮断の時間の上限(秒) |
ssh_guard_allow | 空 | 遮断しないアドレスと CIDR |
ssh_guard_log_source | auto | 読むログ(auto、journal、ファイルのパス) |
ssh_guard_log_source は、auto か journal のままにします。注記では、ログのファイルは syslog を使える利用者なら書き込めるので、偽の行で第三者を遮断させられるおそれがあります。journald の送り主の欄は、偽れません。
#接続元を、許可リストに限る
roamswitch ssh-allow は、新しい SSH 接続を、許可リスト(ssh_allow_only_sources)にある接続元だけに限ります。loopback と、このホスト自身のアドレスは、常に通します。デーモンは 30 秒ごとに設定を読み直すので、再起動は要りません。
締め出しを防ぐために、次の2つのときは有効にしません。
- リストが空のとき
- いま SSH でつながっている接続元が、リストにないとき
設定を変える操作です(変更を伴う操作です)。戻し方は、この演習の最後にあります。
まず、空のリストで試します。check は何も変えずに、有効にできるかだけを調べます。
sudo roamswitch ssh-allow status
sudo roamswitch ssh-allow check; echo "exit=$?"
sudo roamswitch ssh-allow enable=====================================================
SSH の接続元の許可リスト
=====================================================
ssh_allow_only_enabled : false
ssh_allow_only_sources : -
デーモンの状態 : 無効
✗ 許可する接続元が1つもありません。ssh_allow_only_sources に足してから有効にしてください。
exit=2
✗ 許可する接続元が1つもありません。ssh_allow_only_sources に足してから有効にしてください。
有効にしませんでした。次に、10.99.0.2 から SSH でつないだままにします。この接続を「いまの自分」に見立てます。リストには、別のアドレス 192.0.2.10 だけを入れます。
sudo ip netns exec outside setsid sshpass -p Practice-Pass-123 ssh $F -b 10.99.0.2 -N labuser@10.99.0.1 </dev/null >/dev/null 2>&1 &
sudo roamswitch ssh-allow add 192.0.2.10
sudo roamswitch ssh-allow check
sudo roamswitch ssh-allow status | tail -3 ✓ 保存しました。 (ssh_allow_only_sources = 192.0.2.10)
✗ いま SSH でつながっている接続元が許可リストにありません: 10.99.0.2。リストに足すか、その接続を終えてから有効にしてください。
デーモンの状態 : 無効
いま SSH でつながっている接続元: 10.99.0.2
断られた理由に、外れている接続元 10.99.0.2 が出ています。自分の接続元を足すと、有効にできます。
sudo roamswitch ssh-allow add 10.99.0.2
sudo roamswitch ssh-allow check
sudo roamswitch ssh-allow enable
sleep 30
sudo roamswitch ssh-allow status ✓ 保存しました。 (ssh_allow_only_sources = 192.0.2.10,10.99.0.2)
✓ 有効にできます。許可する接続元は 2 件、いま SSH でつながっている接続元はすべて含まれています。
✓ 保存しました。 (ssh_allow_only_enabled = true)
30 秒以内にデーモンが規則を読み込みます。結果は `roamswitch ssh-allow status` で確かめられます。
確立済みの接続は切れません。戻すには: sudo roamswitch ssh-allow disable
=====================================================
SSH の接続元の許可リスト
=====================================================
ssh_allow_only_enabled : true
ssh_allow_only_sources : 192.0.2.10, 10.99.0.2
デーモンの状態 : 有効 — 2 件の接続元以外からの新しい SSH 接続を断っています(ポート [22])
いま SSH でつながっている接続元: 10.99.0.2
この VM では、enable から 16 秒で規則が入りました。4つの接続元から、正しいパスワードで試します。
sudo ip netns exec outside sshpass -p Practice-Pass-123 ssh $F -b 10.99.0.3 labuser@10.99.0.1 'echo ok from $SSH_CLIENT'
sudo ip netns exec outside sshpass -p Practice-Pass-123 ssh $F -b 10.99.0.2 labuser@10.99.0.1 'echo ok from $SSH_CLIENT'
sshpass -p Practice-Pass-123 ssh $F labuser@127.0.0.1 'echo ok from $SSH_CLIENT'
sshpass -p Practice-Pass-123 ssh $F labuser@192.168.64.22 'echo ok from $SSH_CLIENT'ssh: connect to host 10.99.0.1 port 22: Connection timed out
ok from 10.99.0.2 58479 22
ok from 127.0.0.1 39772 22
ok from 192.168.64.22 43322 22リストにない 10.99.0.3 だけが、正しいパスワードでも入れませんでした。規則は nftables の表 inet roamswitch_sshallow にあります。
有効のまま、いまつながっている接続元をリストから外すと、注意が出ます。
sudo roamswitch ssh-allow remove 10.99.0.2 注意: 10.99.0.2 は、いま SSH でつながっています。一覧から外すと、いまの接続は切れませんが、切れたあとの新しい接続は断られます。
✓ 保存しました。 (ssh_allow_only_sources = 192.0.2.10)元に戻します。disable は、デーモンを待たずに規則を外します。
sudo roamswitch ssh-allow add 10.99.0.2
sudo roamswitch ssh-allow disable
sudo nft list table inet roamswitch_sshallow
sudo roamswitch ssh-allow status | sed -n 7p ✓ 保存しました。 (ssh_allow_only_sources = 192.0.2.10,10.99.0.2)
✓ 保存しました。 (ssh_allow_only_enabled = false)
✓ 規則を外しました。
Error: No such file or directory
list table inet roamswitch_sshallow
^^^^^^^^^^^^^^^^^^^
デーモンの状態 : 無効表が消え、disable の直後の status も「無効」になりました。リストの中身も消すときは、ssh-allow remove で1件ずつ外します。
許可リストは、安全装置が守るのは「いまつながっているセッション」だけです。つながっていない入り口は、見ていません。有効にする前に、次を書き出して、リストに入れます。
- いま作業している接続元(
ssh-allow statusの「いま SSH でつながっている接続元」) - 明日つなぐ場所(自宅、会社、VPN の出口)。固定でなければ、範囲(CIDR)で書きます
- 踏み台や、監視・バックアップのサーバー
- IPv6 でつなぐなら、IPv6 の項目(IPv4 と IPv6 は別に判定します)
並べたら check を実行し、有効にしてから、いまのセッションを閉じずに、別の端末から新しく入れるかを確かめます。
ssh-allow remove で自分の接続元を外しても、いまのセッションは続きます。気づかずに切断すると、次は入れません。外すと注意が出るので、読み飛ばさないでください。ssh_guard_allow と ssh_allow_only_sources は、別のキーです。許可リストに入れた接続元も、総当たりガードの除外にはなりません。
#ssh_ports を、sshd のポートと合わせる
ssh_ports(既定 22)は、RoamSwitch のファイアウォールが通す SSH のポートです。緊急隔離のあとも、ここは通ります(設定ファイルの例の注記)。sshd を別のポートで待たせるなら、ここも合わせます。
sshd の設定を変える操作です(変更を伴う操作です)。戻し方は、この演習の最後にあります。
sshd に、2222 番を足します。ssh_ports は 22 のままです。
printf 'Port 22\nPort 2222\n' | sudo tee /etc/ssh/sshd_config.d/10-port.conf
sudo systemctl daemon-reload && sudo systemctl restart ssh.socket
sudo roamswitch server restart
sudo roamswitch bans | grep ポート
sudo nft list chain inet roamswitch_server input | grep dport
sudo ip netns exec outside sshpass -p Practice-Pass-123 ssh $F -p 2222 -b 10.99.0.2 labuser@10.99.0.1 'echo ok port 2222' ポート : 22, 2222
tcp dport { 22, 80, 443 } accept
ssh: connect to host 10.99.0.1 port 2222: Connection timed out総当たりガードは、sshd の設定を読んで、2222 番も見ています。一方、入ってくる通信を通す規則は、ssh_ports と allowed_ports(既定 80,443)だけです。2222 番への接続は、ここで捨てられました。
この食い違いは、roamswitch doctor が注意に出します。
sudo roamswitch doctor | grep 2222[注意] sshd は 2222 番でも待ち受けていますが、server.conf の ssh_ports は 22 です。ファイアウォールは ssh_ports と allowed_ports しか通さないため、外から 2222 番へは接続できません。その番号だけで入っていると締め出されます。直すには: sudo roamswitch server config set ssh_ports 22,2222 のあと sudo roamswitch server restart注意は、sshd が実際に 2222 番で待ち受けているときに出ます。sudo を付けないと、server.conf を読めないため、この注意は出ません。
ssh_ports を合わせます。
sudo roamswitch server config set ssh_ports 22,2222
sudo roamswitch server restart
sudo nft list chain inet roamswitch_server input | grep dport
sudo ip netns exec outside sshpass -p Practice-Pass-123 ssh $F -p 2222 -b 10.99.0.2 labuser@10.99.0.1 'echo ok port 2222' ✓ サーバー設定を更新・保存しました。 (ssh_ports = 22,2222)
反映するには: sudo systemctl restart roamswitch-server または sudo roamswitch server restart
tcp dport { 22, 80, 443, 2222 } accept
ok port 2222合わせたあとの doctor には、この注意は出ません。
元に戻します。
sudo rm /etc/ssh/sshd_config.d/10-port.conf
sudo systemctl daemon-reload && sudo systemctl restart ssh.socket
sudo roamswitch server config set ssh_ports 22
sudo roamswitch server restartsshd を新しいポートに移すときは、次の順で進めます。逆にすると、新しいポートが捨てられて、入れなくなります。
ssh_portsに、古いポートと新しいポートの両方を書いて、sudo roamswitch server restart- sshd に新しいポートを足して、いまのセッションを閉じずに、新しいポートで入れるかを確かめる
- 入れたら、sshd と
ssh_portsから古いポートを外して、もう一度再起動する
#見えない部分
使い捨ての Ubuntu 24.04 の VM で確かめた範囲では、次のようになります。
- 総当たりガードが数えるのは、sshd のログの失敗です。sshd 以外のサービスへの総当たりは、このガードでは数えません
- このホスト自身のアドレスと 127.0.0.1 は、遮断しません。同じマシンの中から試しても、遮断は再現できません
- しきい値の変更は、再起動まで効きません。許可リストの変更は、30 秒以内に効きます
- 許可リストの安全装置は、いま開いているセッションだけを見ます。明日つなぐ場所や、踏み台は、自分で数えて入れます
ssh_portsと sshd のポートの食い違いは、sudoを付けた doctor の注意に出ます。ポートを変えたら、sudo roamswitch doctorとnft list chain inet roamswitch_server inputで確かめます
同じ VM の中から ssh labuser@127.0.0.1 で 8 回失敗させても、遮断されませんでした。なぜですか
解説を見る
外の接続元から試すと、6 回で遮断されました。自分を締め出さないために、ゲートウェイ、リゾルバー、このホスト自身のアドレスは、遮断しません。試すときは、別のアドレスの接続元を用意します。
ssh-allow enable が「いま SSH でつながっている接続元が許可リストにありません: 10.99.0.2」と断りました。どうしますか
解説を見る
断られたのは、そのまま有効にすると、その接続元が次から入れなくなるからです。自分の接続元なら、リストに足します。見覚えがない接続元なら、有効にする前に、その接続が何かを調べます。
#次に学ぶこと
- 総当たりのあとにログインが成功したときの動き方は、「SSH への総当たりと、自分が締め出されたとき」(準備中)で扱います
- SSH とリモートアクセスへの攻撃の全体は、「SSH とリモートアクセス」(準備中)で扱います
- 設定ファイルの全項目は、Linux Server の運用マニュアル にあります
対応する攻撃手法 (ATT&CK): T1110.001
2026-11-12に確認しました。対象は Linux 1.17.39 です。公開版 1.17.39 の入った使い捨ての Ubuntu 24.04 の VM 2 台で、ネットワーク名前空間の別アドレスから間違ったパスワードを繰り返し、遮断・unban・しきい値・ssh_guard_allow・ssh-allow・ssh_ports の食い違い・fail2ban を戻したあとの遮断の通知を、日本語と英語で上から実際に動かして確かめました。
コマンドの出力は、製品の版や環境によって変わります。違いが出たら、まず製品の版を確かめてください。