Lambdaカクテル

Common LISPが好きなWeb屋さんです 自宅サーバやフロントエンドもできます

SOCKS5 over SSH over HTTP + IRCでプロキシを抜ける

大学のプロキシがHTTPしか通してくれないので、他のポートを利用するサービス、FTPとかが利用できないので困っていたが、それを解決する方法を考えたのでここに書いとく。

httptunnelというソフトウェアがある。httpで任意の通信をカプセル化するものだ。
あらかじめ用意したサーバで、80番ポートにこのソフトを利用して22番(ssh)を転送する。
クライアントからも同じソフトで自分の22番にこれを転送する。

そこからsshの-Dオプションを利用して、sshをSOCKSプロキシとして作動させる。これで任意の通信(SOCKSが利用できるものはすべて)はサーバーに流すことができるようになる。

プロキシを抜けることができる。

さて、しかしカプセル化するソフトを常時起動させておくのもセキュアではないので、IRCから認証を行い、ソフトを起動できるようにPHPのスクリプトを作成。

TOTP(Time-based One Time Password)を利用したそこそこセキュアな設定。
自鯖IRCに常駐し、特定のメッセージを受信するとパスワードを照合し、パスすればhttptunnelのサーバプログラムを起動させる。
同じようなやりかたでシャットダウンも可能にした。

IRC接続関連にはPEAR::Net_SmartIRCを利用した。
TOTPにはコマンドラインツールであるoathtoolを使用した。