SSH接続元制限の方法|許可された端末だけがログインできる安全な設定

目次
SSH接続元制限を設定して不正アクセスリスクを減らそう
SSHサーバを公開すると、世界中から接続試行を受けるようになります。
公開鍵認証や多要素認証を設定していても、不必要なアクセス自体を減らせるのであれば、それに越したことはありません。
そこで実務でよく利用されるのがSSH接続元制限です。
接続を許可するIPアドレスやネットワークを限定することで、認証処理の前段階でアクセスを遮断できます。
特に企業環境やクラウド環境では、SSH公開鍵認証と並んで重要なセキュリティ対策の一つとなっています。
本記事ではSSH接続元制限の考え方や設定方法について詳しく解説します。
SSH接続元制限とは
SSH接続元制限とは、SSHサーバへ接続できるIPアドレスやネットワークを制限する仕組みです。
例えば以下のような制御を行います。
- 社内ネットワークのみ許可
- VPN利用者のみ許可
- 管理端末のみ許可
- 特定IPアドレスのみ許可
認証方式とは別のレイヤーでアクセス制御を行います。
なぜ接続元制限が必要なのか
SSHは常に攻撃対象となっています。
インターネットへ公開されたサーバでは以下のようなアクセスが発生します。
- ポートスキャン
- ブルートフォース攻撃
- 辞書攻撃
- 脆弱性スキャン
接続元を制限することで攻撃対象を大幅に減らせます。
接続元制限の考え方
セキュリティの基本は「必要な通信だけを許可すること」です。
例えば管理端末のIPアドレスが以下の場合です。
203.0.113.10
このIPのみSSH接続を許可します。
それ以外は拒否します。
最も一般的な方法はファイアウォール制御
実務で最も多い方法です。
Linuxサーバでは以下を利用します。
- firewalld
- nftables
- iptables
- クラウドFW
認証処理より前に通信を遮断できます。
firewalldによる制限
特定IPのみSSH許可する例です。
$ firewall-cmd --permanent \
--add-rich-rule='rule family="ipv4"
source address="203.0.113.10"
service name="ssh"
accept'管理端末だけ接続できます。
不要なアクセスを拒否する
デフォルト拒否運用が理想です。
許可されたIP以外はアクセスできません。
攻撃ログも大幅に減少します。
AWSでの接続元制限
AWSではSecurity Groupを利用します。
例です。
TCP 22
203.0.113.10/32
指定IPのみ接続可能になります。
Azureでの接続元制限
AzureではNSG(Network Security Group)を利用します。
SSH許可元を指定できます。
クラウドではOS設定より先に制御することが一般的です。
VPNと組み合わせる方法
企業環境ではVPN経由のみSSHを許可する構成がよく利用されます。
例です。
- インターネットからSSH禁止
- VPN接続必須
- VPN内からのみSSH許可
非常に安全な構成です。
hosts.allowとhosts.deny
古いLinux環境ではTCP Wrapperを利用していました。
例です。
/etc/hosts.allow
/etc/hosts.denyただし現在では非推奨です。
firewalldやクラウドFWが主流です。
sshd_configによる制御
OpenSSHでも一部制御が可能です。
例えば以下です。
AllowUsers
AllowGroups
DenyUsers
DenyGroupsただしIPアドレス制御には向いていません。
Match Addressの利用
OpenSSHではIPアドレス単位の制御も可能です。
例です。
Match Address 203.0.113.10
PasswordAuthentication yes特定条件で設定変更できます。
高度な運用で利用されます。
PermitRootLoginとの組み合わせ
接続元制限だけでは十分ではありません。
以下も設定しましょう。
PermitRootLogin noPermitRootLogin no
rootログイン禁止が推奨です。
公開鍵認証との組み合わせ
実務で一般的な構成です。
- 接続元制限
- 公開鍵認証
- パスワード認証無効
- rootログイン禁止
多層防御が実現できます。
踏み台サーバ構成との関係
大規模環境では踏み台サーバを利用します。
構成例です。
管理PC
↓
踏み台サーバ
↓
内部サーバ
内部サーバは踏み台からのみSSH接続を許可します。
接続元確認方法
現在のSSH接続元を確認します。
# who
または
# w接続元IPが表示されます。
ログで確認する
接続ログを確認します。
# journalctl -u sshd
または
# tail -f /var/log/secure不審な接続元を確認できます。
Fail2banとの違い
| 項目 | 接続元制限 | Fail2ban |
|---|---|---|
| 対象 | 事前許可 | 攻撃後遮断 |
| 制御方法 | ホワイトリスト | ブラックリスト |
| 安全性 | 高い | 高い |
併用するとさらに強力です。
よくある設定例
小規模企業です。
- 社内IPのみ許可
- 公開鍵認証
- rootログイン禁止
クラウド環境です。
- VPN経由のみ許可
- MFA利用
- Security Group制御
一般的な構成です。
設定ミスに注意
接続元制限は設定ミスすると自分自身が接続できなくなります。
設定前には以下を確認しましょう。
- 現在のIPアドレス確認
- 別セッション保持
- コンソール接続手段確保
実務では重要なポイントです。
おすすめ構成
現在の実務環境では以下が推奨されます。
- 接続元制限
- 公開鍵認証
- Fail2ban
- rootログイン禁止
- MFA
複数の対策を組み合わせることが重要です。
まとめ
SSH接続元制限は、不正アクセス対策として非常に効果の高いセキュリティ設定です。
特定のIPアドレスやVPN利用者のみ接続を許可することで、攻撃対象を大幅に減らすことができます。
実務ではfirewalldやSecurity Groupなどを利用した制御が主流であり、公開鍵認証やFail2banと組み合わせて運用されます。
SSHサーバを安全に運用するために、接続元制限の導入を検討してみましょう。





