Phase 1でSSHキー認証を学びました。この記事ではサーバー側の sshd_config を徹底的に固めて、安全なSSH環境を構築します。
sshd_config のセキュリティ設定
/etc/ssh/sshd_config を編集します。変更後は必ず sshd -t で構文チェックしてから再起動してください。
# ⚠️ 設定変更前に別のターミナルでSSH接続を維持しておくこと
# 設定ミスでロックアウトされた場合の保険
# /etc/ssh/sshd_config
# 1. rootログインを禁止(最重要)
PermitRootLogin no
# 2. パスワード認証を無効化(鍵認証のみに)
PasswordAuthentication no
ChallengeResponseAuthentication no
# 3. SSHポートを変更(22番への自動攻撃を減らす)
Port 2222 # 任意のポート番号(1024〜65535)
# 4. 特定ユーザーのみSSH接続を許可
AllowUsers deployuser adminuser
# 5. 特定ユーザーのみSSH接続を許可(AllowUsersで絞り込む)
# AllowUsers deployuser adminuser
# 接続元IPを制限するにはファイアウォール(UFW/firewalld)を使う
# /etc/hosts.allow(TCP Wrappers)は現代のOpenSSHでは動作しない環境も多いため非推奨
# UFW を使った接続元IP制限の例:
# sudo ufw allow from 203.0.113.0/24 to any port 2222
# 6. 認証試行回数を制限
MaxAuthTries 3
# 7. アイドル接続のタイムアウト
ClientAliveInterval 300 # 5分ごとに疎通確認
ClientAliveCountMax 2 # 2回応答なしで切断
# 8. 空パスワードを禁止
PermitEmptyPasswords no
# 9. X11フォワーディングを無効化(不要なら)
X11Forwarding no
# 構文チェック(必ず実行!)
$ sudo sshd -t && echo "設定に問題なし"
# 再起動
$ sudo systemctl restart sshd
# ポートを変更した場合はファイアウォールも更新
$ sudo ufw allow 2222/tcp
$ sudo ufw delete allow 22/tcp
SSHポート変更時の接続方法
# -p でポートを指定
$ ssh -p 2222 user@server
# ~/.ssh/config に登録すると便利
Host myserver
HostName server.example.com
User deployuser
Port 2222
IdentityFile ~/.ssh/id_ed25519
# 登録後はシンプルに接続できる
$ ssh myserver
SSH鍵の強度確認と更新
# 現在の鍵のアルゴリズムを確認
$ ssh-keygen -l -f ~/.ssh/id_rsa
# RSA 2048bit は現在も使えるが、ed25519への移行を推奨
# ed25519鍵を生成(現在の推奨アルゴリズム)
$ ssh-keygen -t ed25519 -C "myserver-$(date +%Y%m%d)"
# サーバーに登録
$ ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 user@server
まとめ
PermitRootLogin no+PasswordAuthentication noが最低限のセキュリティ設定- 設定変更前に必ず別セッションでSSH接続を維持してロックアウト対策
- 変更後は
sshd -tで構文チェックしてからsystemctl restart sshd - ポート変更は完全な防御ではないが、自動スキャンによる攻撃ログを大幅に減らせる
- SSH鍵はed25519を使う(RSA 2048より安全・高速)
📋 Linuxサーバー運用・管理チェックリスト完全版でPhase 2の全要点を確認できます。



コメント