目次
概要と作業前の重要注意
このガイドでは、firewalld のリッチルールを使って「LAN内のPCだけSSH接続を許可し、外部からは完全に遮断する」という強固なセキュリティ設定を行います。
⚠️ 作業前の重要注意
- 設定を誤ると現在のSSH接続が切断され、再ログインできなくなる可能性があります。
- 可能であれば、物理コンソール(モニター+キーボード)やCockpit等のWeb管理コンソールを用意して作業するのが安全です。
--reloadやsystemctl restart sshdを実行する前に、入力したコマンドを必ず再確認してください。- 設定変更後は、今のセッションを閉じずに、別ウィンドウで新規接続を確認してから作業を終えてください。
1️⃣ 既存の「どこからでもSSH OK」設定を削除する
firewalld のデフォルトでは SSH が全許可になっています。まずはこの設定を削除します。
sudo firewall-cmd --permanent --remove-service=ssh
2️⃣ LAN内(192.168.1.0/24)だけSSHを許可する
リッチルールを使い、LAN内のアドレスだけを許可します。
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'
3️⃣ 設定を反映し、状態を確認する
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
✔️ 確認ポイント
| 項目 | 正しい状態 |
|---|---|
| services: | ssh が表示されていない(=全許可ではない) |
| rich rules: | source address="192.168.1.0/24" の SSH 許可ルールがある |
🔒(さらに強固に)SSHサービス側でもLAN内だけ許可する
ファイアウォールに加えて、SSH自体にもアクセス制限をかけると二重防御になります。
sudo vi /etc/ssh/sshd_config
AllowUsers *@192.168.1.*
※特定ユーザーだけ許可したい場合は、ご自身のログインユーザー名に置き換えてください(例:AllowUsers your_username@192.168.1.*)。
再起動前に、必ず設定ファイルの構文が正しいか確認してください。
sudo sshd -t
エラーが出なければ正常です。エラーが出た場合は再起動せず、記述を見直してください。
sudo systemctl restart sshd
ポイント
再起動しても既存のSSHセッションは切断されません。新規接続から新しい設定が適用されます。念のため別ウィンドウで新規接続を確認してから、元のセッションを閉じてください。
🎯 設定の効果まとめ
| 接続元 | 結果 |
|---|---|
| LAN内(192.168.1.x) | これまで通りSSHログイン可能 |
| 外部(インターネット) | OSレベルで遮断され、ポート開放していても接続不可 |
外部からはSSHポートが存在しないように見えるため、非常に強固です。
実施記録・エビデンス
2026年8月4日、実機にて本ガイドの手順を実施し、締め出しが発生しないことを確認しました。
services: cockpit dhcpv6-client dns http https imaps pop3s smtp smtps
rich rules:
rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept
rule family="ipv4" source address="(Fail2ban検知IP)" reject
...
services 欄から ssh が消え、rich rules に 192.168.1.0/24 の許可ルールが追加されていることを確認しました。
$ ssh adminuser@172.16.1.2
NEW_CONNECTION_OK
(sshd再起動後、別ウィンドウで再テスト)
$ ssh adminuser@172.16.1.2
NEW_CONNECTION_AFTER_SSHD_RESTART_OK
適用状況
- firewalldのSSHグローバル許可を削除し、192.168.1.0/24限定のリッチルールに置き換え済み 証跡あり
- sshd_configにAllowUsersを追記し、sshd再起動後も接続を確認済み 証跡あり
- LAN内(192.168.1.116)からの新規接続がリロード前後・再起動前後ともに成功 証跡あり
精査メモ
本ガイドは以前から存在していましたが、実際のサーバーには未適用の状態(SSHサービスが全世界に開放されたまま、Fail2banの個別ブロックのみで運用)でした。2026年8月4日に本ガイド通りの手順を実施し、記載内容と実機の状態を一致させました。
SSH接続 LAN内限定 完了 🎉
firewalld・sshd_config の二重防御で、外部からのSSH接続を完全に遮断しました。LAN内からのアクセスのみ引き続き利用できます。