(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Linux】authorized_keysに不要な権限を付与するとSSHに失敗する

スポンサーリンク

はじめに

表題の通りで、具体的にはOtherに対して「書き込みを許容」してしまうとエラーになります。

つまり、以下にあるようなSSH認証のための準備におけるパーミッションの適切な変更は必要条件というわけです。

#公開鍵を authorized_keys に追記
$ cat id_rsa.pub >> authorized_keys
#パーミッションの変更
$ chmod 600 authorized_keys

実験

.ssh及び配下ファイルの権限変更はSSH認証失敗につながるので、試す場合は事前にログイン済のセッションを保持して行うか他のログイン方法を確保した上で試してください。

環境情報

Teretermマクロを用いて公開鍵認証を行います。

対象サーバはDebian GNU/Linux 9 (stretch)で/etc/ssh/sshd_configはデフォルト設定で以下の設定項目が「yes」になっています。ここでログイン前にパーミッションをチェックするか否かを指定しています。

StrictModes yes

ログイン実験

以下のようにauthorized_keysが存在する.sshディレクトリがあるとします。

$ ls -l /home/xxx/.ssh
total 4
-rw------- 1 xxx xxx ... authorized_keys
$ cat /home/xxx/.ssh/authorized_keys
# memo
ssh-rsa AAAAB3NzaC1yc2EAAAADAQA...
5HebarY48llLo3Hgq4anZbN5HDtRY4x....
q7255Zt+tsdi1kncIblJQDET1h0FnxEt8t.... xxx

このファイルに対して権限を変更するとどうなるでしょうか。

OKな例
$ chmod 664 /home/xxx/.ssh/authorized_keys

これはSSH認証ができます。

NGな例
$ chmod 602 /home/xxx/.ssh/authorized_keys

f:id:mtiit:20191203102600p:plain
TeratermでのSSH失敗

要はOtherに対して書き込み権限があると失敗します。
逆にグループに対しては特に反応がありません。


ちなみにsshd_configに指定したログ吐き出し先にて以下のようなメッセージが上がります。

Authentication refused: bad ownership or modes for file /home/xxx/.ssh/authorized_keys

終わりに

SSH周りの権限設定は必要最低限の付与が重要ですので、ご注意ください。
今回のケースで言えば、読み取り権限は問題ないですが書き込み権限はエラーとなります。

これは、そのサーバにアクセスできるユーザAが管理する秘密鍵に対応した公開鍵をユーザBのauthorized_keysに仕込むことでユーザBとして不正ログインが可能になってしまう状態を防いでいます。

以上、ご参考になれば幸いです。