雑文発散

«前の日記(2006-01-03) 最新 次の日記(2006-01-05)» 編集
過去の日記

2006-01-04 [長年日記]

[] ブラウザ経由で別サーバのコマンドをセキュアに実行するには

ブラウザに表示されたリンクをクリックしたり、フォームをPOSTして、Webサーバとは別のサーバのコマンド実行をする場合、どうやれば一番セキュアなのだろう? とりあえず考えてみたのはこの形。 ブラウザ経由で別サーバのコマンド実行
  1. ブラウザとWebサーバの間はhttpsで接続する。
  2. Webサーバ内では、PHPからshell_exec()で外部コマンド(ssh)を実行する。
  3. sshの実行は「ssh hoge@server_a COMMAND」の形とし、サーバA上でコマンドを実行して、その結果をPHPに返す。
  4. PHPでは返ってきた結果をHTML出力する。
ここで、3のsshでの接続をどうしようか迷ってる。サーバAに公開鍵をインストール、Webサーバにはパスフレーズなしの秘密鍵を置いて、サーバAにログインする方法が楽なんだけど、、、「パスフレーズなし」ってところにひっかかりを感じるんだよなぁ。 2の外部コマンドでexpectを利用し、ブラウザから入力されたパスフレーズを対話的に入力しsshによるコマンドを実行するってのが最良の方法だろうか? expect苦手なんだけど。
本日のツッコミ(全3件) [ツッコミを入れる]
yoosee (2006-01-05 07:23)

pathphrase-less で ssh を使うなら、最低限 authorized_keys の from="..." で接続元を限定するのと、出来れば command="..." で実行できるコマンドを限定するのかよいかなと。<br>http://sonic64.com/2004-11-17.html<br><br>もしくはサーバAでもCGIなりを動かしてWebサーバからHTTPリクエストを受けるようにする、とか。

はとっち (2006-01-05 12:20)

WebサーバーとサーバーAの間をIPSecトンネルを張りっぱなしにして、そこにコマンドを流し込むのではだめですか?<br><br>サーバー系は門外漢なので、はずしてたらすいません。

すずき (2006-01-05 15:35)

おぉぉ! authorized_keysで接続元やコマンドの制限ができるとは知りませんでしたよ。この線でもう少し調べてみますわ。<br><br>IPsecは今ひとつ理解が乏しいので、今回はまず上記で進めてみます。ありがとうございましたー。