どうも、nippaです。
FTP(File transfer protocol)の仕組みについて説明したいと思います。
SFTP、FTPSについても触れます。
構築手順については、別の機会に書きたいと思います。
1. FTPとは
FTPは File transfer protocolの略で、ファイル転送のための通信プロトコルです。
1971年に導入されていらい半世紀も使われており、OSに同梱されていることが多いです。
最近は、Httpでのデータ配布も増えてきましたが、FTPがなくなることはないかなと思っています。
ちなみに、IPv6にも対応しています。
2. プロトコルの説明
図中のClientはユーザーが使用するソフトウェアを意味しており、ClientからコマンドをPI(Process Interpreter)で解釈して、通信プロトコルに変換して、Serverに送信します。
制御用のSessionはすべて、PIで行われます。
通信プロトコルを受け取ったServerは、通信プロトコルを変換して、データ転送用Sessionを生成して、そこからCliantへデータを転送する形になります。
制御用Sessionとデータ転送用Sessionが別であることを覚えておいて下さい。
3. Passiveモードについて
FTPでは制御用の接続に21番ポート、データ転送用の接続に20番ポートを利用します。
一般的なサーバ接続と同様、制御用の接続をClientからServerに対して要求します。
一方、データ転送用の接続は、ServerからClientに接続要求をします。
そのため、データ転送のたびに接続要求し、セッションを生成されることになります。
これがPORTモードと呼ばれるFTPの接続方法になります。
PORTモードの場合、Clientの20番ポートの接続をできるように設定する必要が出てきます。
NAT(Network Address Translation)、ClientのFW(Firewall)の設定によっては、Clientに接続できない可能性があります。
Passiveモードでは、制御用の接続同様に、データ転送用の接続をClinetからServerに要求して、セッションを生成します。
これにより、NATやClientのFWのセキュリティを変更せずにデータ転送ができるようになります。
4. プロトコルの問題点
FTPの問題点として、古いプロトコルのためセキュアなプロトコルとして設計されておりません。
-ブルートフォースアタック - DoS攻撃 - Port stealing
などの攻撃を受ける可能性があります。また、通信自体が平文で行われるため、傍受される場合があります。
を利用することが強く推奨されています。
感想
FTPでよくあるのが、Passiveモードって何?という疑問です。
Clientからデータ転送用の接続を要求するモードと覚えておけばよいと思います。
利用は減るかもしれませんが、長く利用されるプロトコルなので、理解しておいても損はないと思います。
ではでは、また次回。