過去問ドリル

LinuCレベル2 システムのセキュリティ 問30

システムのセキュリティ/OpenSSH サーバーの設定と管理

サーバーのuser1の ~/.ssh/authorized_keys に公開鍵を登録したが、公開鍵認証に失敗し、パスワードを求められてしまう。sshd_configは既定値のままで、サーバー側で確認した結果は次のとおりだった。対処として適切なものはどれか。 $ ls -ld /home/user1/.ssh /home/user1/.ssh/authorized_keys drwx------. 2 user1 user1 29 Sep 26 10:00 /home/user1/.ssh -rw-rw-rw-. 1 user1 user1 100 Sep 26 10:00 /home/user1/.ssh/authorized_keys

当サイトのオリジナル問題(LinuCレベル2の出題範囲「システムのセキュリティ」に対応。実際の試験問題ではありません)

正解:C

解説

sshdは既定で StrictModes yes になっており、ホームディレクトリや ~/.ssh、authorized_keys が所有者以外(特にその他のユーザー)から書き込める状態だと、そのファイルを使った公開鍵認証を拒否します。この例では authorized_keys が誰でも書き込める 666 になっているため、公開鍵認証が失敗してパスワード認証に進んでいます。chmod 600(または chmod go-w)で所有者以外の書き込み権を外せば解決します。サーバーのログには「bad ownership or modes」のようなメッセージが記録されるので、原因の切り分けに役立ちます。

選択肢ごとの解説

  • A誤り。PubkeyAuthentication の既定値は yes なので、追記しても状況は変わりません。
  • B誤り。ssh-keygen -A は存在しない種類のホスト鍵を生成するもので、ホスト鍵はサーバーの正当性をクライアントが確かめるための鍵です。利用者の公開鍵認証の失敗とは関係がありません。
  • C正しい。authorized_keys を所有者以外が書き込めないパーミッションにすれば、sshdの検査を通り公開鍵認証が使えるようになります。
  • D誤り。パスワード認証を無効にしても、公開鍵認証が拒否される原因は解消されず、ログインできなくなるだけです。
LinuCレベル2の問題を演習モードで解く