2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

FTP通信の意外な落とし穴!

鯖関係の事で最も気を付けなければいけないことに「思いこみ」と言うことがある。
例えば、あなたがFTP通信をするとき、どのポートを開けとけば良いと思う?
普通はね、FTP鯖のPort20と21を開けておけばFTP通信出来ると思うでしょう。でも、違うんだな、これがまた・・・・。これから、そのことについて話すことにしましょう。


これからみなさん俺と一緒にプロトコルって奴の詳細について理解していこうよ。さて始めるな。俺の書いた下のやや汚い図1図2を見て欲しい。FTPには、アクティブモードとパッシブモードが有るのは知ってるかな。

■ アクティブモード
普通のFTPクライアントとFTPサーバ間のFTP通信のこと。

■ パッシブモード
これは、WebブラウザがFTP転送に使ってるのがパッシブモードで有ることが多い。

だから、このアクティブモードとパッシブモードについて図1図2にしたがって説明する。まず、言っておくがクライアントと鯖は両者ともPort20と21で通信するわけではない。クライアントは、Port1024以降、2000とか3000とかのポートを任意に使う。これは、httpプロトコルなども同じなんだよ。


1.アクティブモード
まず、アクティブモードもパッシブモードも制御コネクションをして制御コマンドのやり取りをする。これは、アクティブモードだよ。パッシブモードだよ。ってクライアントと鯖との間のモードの決定をして、アクティブモードではクライアントのファイル転送用Portを鯖に教える。自分のPort21で教えられた鯖は、自分のPort20で相手のクライアントのPort3002とファイル転送用のセッションを確立してファイル転送を行う。

図1

2.パッシブモード
そんじゃ、次にパッシブモードを見ていこう。
パッシブモードもクライアントのファイル転送Port3002を鯖のPort21に教えるが、今度は鯖が自分のファイル転送Port2002をクライアントへ通知している。そして、両者のファイル転送Portが解ったのでいざファイル転送する。ファイル転送の通信は、クライアントは、Port3002で鯖は、Port2002だ。ここで、みんなは何か気がつかない?鯖は、FTPを行うときPort20と21だけじゃないんだ、1024から65535迄の任意のPortが必要になる。つまり、固定的でなく動的に必要になるんだよ。結構勘違いしてる人多いと思うんだけどね。

図2

それじゃ、これによってどういう影響が考えられるかというと、普通の通信には何ら問題はないけどセキュリティ的にはどうだろう?
もう、おわかりであろう。鯖をFTP鯖に仕立てるにはPortを20と21番だけでなく1024から65535迄開かなくてはならない。セキュリティ的にはとっても怖い。20と21だけならともかく1024から65535迄全て開かなくてはならないのだ。だけどね、フィルタリングには固定的なフィルタリングつまり、スタティックフィルタリングと動的なフィルタリング、ダイナミックフィルタリングの二種類がある。特に、前述の問題はダイナミックフィルタリングが必要になるだろう。つまり、スタティックフィルタリングは、あらかじめ必要なPortは開けて不要なPortは閉めておく。しかし、ダイナミックフィルタリングは、この動作を動的に行うんだ。その機能をちなみに”ステートフルインスペクション”って言うんだけど、みんなは聞いたこと有るかなぁ。BBルータには、結構付いてる機種多いんだけどね。以上、FTP通信の意外なところを説明してきた。人には「思いこみ」と言う奴がついて回る。俺もこの年になって改めて「そうだったのか」と理解し直す事が多い。

以上

コメント