転載・引用について

ユーザ用ツール

サイト用ツール


tweet:2021:0108_01

差分

このページの2つのバージョン間の差分を表示します。


tweet:2021:0108_01 [2021/01/08 16:15] (現在) – 作成 - 外部編集 127.0.0.1
行 1: 行 1:
 +====== sshdでPublickeyをauthorized_keys以外から持ってくる ======
 +
 +ちょっと某所で sshd でのPublickey Authentication時のPublickeyを~/.ssh/authorized_keys以外から持ってくる設定について聞かれたので、ちょっと調べてみた。
 +
 +===== 問題 =====
 +  * ''AuthorizedKeysCommand'' に公開鍵を引っ張ってくるscriptを指定したんだけど、認証に失敗する
 +  * sshd_configに以下の記述
 +    * ''AuthorizedKeysCommand /tmp/pubkey.sh''
 +    * ''AuthorizedKeysCommandUser hogehoge''
 +  * pubkey.shは以下の通り
 +    * <code - pubkey.sh>
 +#!/bin/bash -e
 +echo "ssh-rsa AAAA........."
 +</code>
 +  * ssh -v の結果
 +    * <code>
 +Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
 +</code>
 +
 +===== 解決 =====
 +  * sshdのlogを見ると、''error: Unsafe AuthorizedKeysCommand "/tmp/pubkey.sh": bad ownership or modes for file /tmp/pubkey.sh'' が''/var/log/auth.log''に出力されていた
 +  * 色々調べてみると、以下が判明
 +    * sshdは以下の条件のうち一つでも満たすと、上記エラーを吐く
 +      - 他人に書き換えられる可能性のあるDirectoryに設置されている(/tmpとかはやばい)
 +      - Ownerがrootではない
 +      - Owner以外が書き換えることができる(g+wとかo+wだとまずい)
 +      - AuthorizedKeysCommandUser に指定されたUser Accountで実行できない
 +  * というわけで、以下のように修正
 +    * Scriptを''/usr/local/bin/pubkey.sh''に設置
 +    * ''AuthorizedKeysCommand /usr/local/bin/pubkey.sh'' として__sshd_config__に設定
 +    * ''chmod 750 /usr/local/bin/pubkey.sh'' を実行
 +    * ''chown root:nobody /usr/local/bin/pubkey.sh'' を実行
 +    * sshdを再起動
 +
 +===== 結論 =====
 +  * この手法を使えば、LDAPでsshの公開鍵を引っ張ってくることができそうだ
 +  * OpenSSHはSecurity的に相当細かくCheckしているので、ある程度はこの手法を利用しても安全性を確保できそうだ
 +  * 意外と問題の原因が分かりにくいので、追いかけるのが大変
 +  * 俺はエスパーじゃないので、何をどうしたいのか説明してくれ
 +
  
tweet/2021/0108_01.txt · 最終更新: 2021/01/08 16:15 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki