shintaro.info infra

SSH (セキュリティ設定)

作成: Shintaro / Acia
対象OS: Debian 13 (Sakura VPS)


目的

公開鍵認証方式による安全な SSH 接続を実現し、
root 直ログインやパスワード認証を無効化することで、不正アクセスを防止する。
また、設定内容を明示し、再構築時に同一環境を再現できるようにする。


設定方針

  • 設定は /etc/ssh/sshd_config.d/override.conf に分離して管理する。

本体ファイル /etc/ssh/sshd_config は変更しない。

  • 先に 別セッションで公開鍵ログインを確認 し、誤設定による接続不能を防ぐ。
  • Debian 13 では PasswordAuthentication no が既定だが、意図を明示するため明記 する。
  • PAM は維持 (UsePAM yes) し、ログ監査とシステム整合性を確保する。

手順

1. ディレクトリ作成と設定ファイルの作成

sudo mkdir -p /etc/ssh/sshd_config.d

sudo tee /etc/ssh/sshd_config.d/override.conf >/dev/null <<'EOF'
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
UsePAM yes
X11Forwarding no
MaxAuthTries 4
LoginGraceTime 20
UseDNS no
AcceptEnv LANG LC_*
EOF

2. 設定のテストと反映

sudo sshd -t && sudo systemctl reload ssh

検証

設定反映確認

sudo sshd -T | egrep -i 'passwordauthentication|kbdinteractiveauthentication|pubkeyauthentication|usepam'

期待される出力:

usepam yes
pubkeyauthentication yes
passwordauthentication no
kbdinteractiveauthentication no

これが確認できれば、公開鍵認証専用+PAM維持構成 となっている。


運用ノート

  • 別セッションでの検証が必須。 設定変更中にSSHが切断されても復旧できるよう、常に別ターミナルを開く。
  • トラブル時の緊急回避:

一時的にパスワード認証を許可する場合は以下の手順を行う。

    sudo sed -i 's/^PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config.d/override.conf  
    sudo systemctl reload ssh

作業完了後は必ず no に戻すこと。

  • UsePAM yes により、ログ監査・アカウントポリシーがシステム全体で一貫性を保つ。
  • AcceptEnv LANG LC_* のみ許可し、不要な環境変数転送は抑制。
  • sshd_config.d/ による分離構成により、将来的な OS アップグレードや ssh パッケージ更新時の差分管理が容易になる。
  • Fail2ban(後続章)により、SSH総当たり攻撃を検知・遮断予定。

変更履歴

日付編集者内容
2025-10-27Shintaro / Aciasshd_config.d 分離方式から直接編集方式へ統一。実環境の設定 (PasswordAuthentication no 等) を反映し、Debian 13 仕様に準拠した構成に更新。
2025-10-28Shintaro / Aciasshd_config.d/override.conf を利用する汎用スタイルへ再移行。設定の再現性・保守性向上を目的として反映。