** 背景 [#bb0cf1ae]
-次のようなサーバー構成
+--------+ | +---------+
| target | -- FW-----> | my_host |
+--------+ | +---------+
- targetからmy_hostにのみアクセス可能。
- my_hostからtargetにsshできるようにしたい。
- targetからmy_hostに対してsshトンネルを作成すれば可能。
- sshトンネルはたびたび落ちる。
- 落ちたらまトンネルを作成したいのだが、targetにログインできないから、できない。
** んで、このCGI [#g5b3ac6a]
+ はじめに。
++ target上のapacheユーザーの秘密鍵をパスフレーズ空で作成。
++ my_hostのrootの.ssh/authorized_keysに、target側で作成した秘密鍵と対応する公開鍵を設定
++ target上にこのCGIを設置し、アクセスする。
#!/usr/bin/perl
$my_host = "111.222.333.444"
$my_port = "33333";
print "Content-type: text/html\n\n";
exec("ssh -f -R 22:localhost:$my_port root\@$my_host ping -i 60 localhost");
COLOR(red):注意
-COLOR(red):このCGIが攻撃者にアクセスされないように考慮すること。
-COLOR(red):targetが外部からの攻撃に対して十分に安全である場合のみ使用すること。でないとtargetのapacheユーザー経由でmy_hostのrootになられてしまう。
-上記CGIは[[GPL 2:http://www.gnu.org/licenses/gpl.ja.html]]とします。なので、自己責任でお願いします。
#blikifooter(志田)