Linuxサーバー管理

SSHのセキュリティ強化【sshd_config完全ガイド】

Linuxサーバー管理
記事内に広告が含まれています。

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の全要点を確認できます。

コメント

タイトルとURLをコピーしました