2008年10月3日金曜日

telnet があれば、サーバ間でファイルの転送ができる(後編)

前編からの続き
telnet があれば何でもできる! と言ってみたかっただけですが。
 

ということで、telnet2本使いによるFTPファイル転送を実際にやってみる。
実験にはIISのFTPサーバを使い、サーバ間のファイル転送ができるかを確かめた。
 
 

突然つまづく、最近はデフォルトセキュア(寄り)なのか…


リハーサルとして一通り試していたら、PORTコマンドの所でどうしてもつまづく。
パケットキャプチャしたら、PORT発行後もIPによる通信すら しに行っていない様子。IISの設定を見直すためにMSへ。

 
なるほどそうか。最近はそんなことやらないからか、単に脆弱性の脅威からか、デフォルト設定ではできない。レジストリをいじってFTPサービスを再起動しないといけなかった。
レジストリ変更箇所は下記。









ファイル受信側
(PASV)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSFTPSVC\Parameters\EnablePasvConnFrom3rdIP=1
※第3者からのデータコネクションを許可する
ファイル送信側
(PORT)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSFTPSVC\Parameters\EnableDataConnTo3rdIP=1
※第3者あてへのPORTコネクション接続要求を受け付ける。

これで問題はなかろう、よそへのPORTコマンドもちゃんと受け付けてくれる。
 
 

そして実験へ


test.txtと言うファイルを転送してみる。



































ファイル受信側ファイル送信側メモ
USER hogehoge
PASS *****
 
230
USER hogehoge
PASS *****
 
230
ユーザ認証してログインOK
PASV
 
227 Entering Passive Mode (xxx,xxx,xxx,xxx,xx,xx).
 待ち受けポートを決定する。
xxxはIPアドレスと待ち受けポート
 PORT xxx,xxx,xxx,xxx,xx,xx
 
200 PORT command successful.
データ転送用のセッションが確立
stor test.txt
 
125 Data connection already open; Transfer starting.
 STORでローカルに空ファイル"test.txt"作成、
データの受け入れ準備
 
125 Data connection already open; Transfer starting.
226 Transfer complete.
retr test.txt
 
150 Opening ASCII mode data connection for test.txt(23 bytes).
226 Transfer complete.

RETRで "test.txt"ファイルを転送、
受信側は待ち構えていた"test.txt" にASCIIデータとしてデータを送り込んで完了

 

OK、うまく行った。
 
 

次はどうしよう。
定番の「telnet があれば メールの送信ができる」や、「telnet があれば HTTPコンテンツを受け取れる」、あたりでやっておきたい。