概要 ########################################### FTP概要 ========================================== File Transfer Protocol(ファイル・トランスファー・プロトコル、FTP、ファイル転送プロトコル)は、コンピュータネットワーク上のクライアントとサーバの間でファイル転送を行うための通信プロトコルの一つである。 インターネットでSSL/TLSプロトコルを用いたHTTPS通信が主流になるまで使用されていた通信プロトコルの1つである。FTPはクライアントサーバモデルのアーキテクチャとして設計されており、クライアントとサーバの間で制御用とデータ転送用の2つの別のコネクションを使用する。 汎用性 ========================================= ftpは汎用性のあるプロトコルで、これをサポートするソフトウェアはftpサーバーに接続できます。 Windows、MacOS、Linux、Unix、ChromeOS、iOS、Androidなど市販のほぼすべてのOSに対応しています。 OS内蔵またはサードパーティのソフトウェアでftpサーバーに接続することができます。 セキュリティ ========================================= FTPは、インターネット初期から存在する古いプロトコルであり、セキュア(安全)なプロトコルとして設計されていない。ユーザ名やパスワードなどの認証情報を含むすべての通信内容を暗号化せずに転送するなどの問題の他、数多くのセキュリティ脆弱性が指摘されている。RFC 2577(1999年5月)では、以下の脆弱性が列挙されている。 * 総当たり攻撃 * FTPバウンス攻撃 * パケットキャプチャ * Port stealing(次に開いているポートを推測して正当なコネクションを奪う) * スプーフィング攻撃 * ユーザ名保護 * DoS攻撃 * FTPは通信内容を暗号化できない。全ての送信は平文で行われるため、通信経路上でパケットをキャプチャすることで、ユーザ名・パスワード・コマンド・データといった情報を容易に盗聴できる。この問題は、TLS/SSLなどの暗号化メカニズムが開発される前に設計された他のインターネットプロトコル仕様(SMTP、Telnet、POP、IMAPなど)でも同様である。 この問題に対する一般的な解決策は、次の通りである。 1. 安全なバージョンのプロトコルを使用する。例えば、FTPの代わりにFTPS、Telnetの代わりにTelnetSを使用する。 2. SSH File Transfer Protocol(SFTP)やSecure Copy Protocol(SCP)など、ジョブを処理できるより安全なプロトコルを使用する。 3. Secure Shell(SSH)やVPNなどのセキュアトンネルを使用する。 FTPは、Gumblarなどのコンピュータウイルスの標的にもされた。そのため、現在では、FTPではなく前述の FTPS (SSL/TLSを使ったFTP) や SFTP (SSH File Transfer Protocol)、SCP、SSH上でのrsync、など暗号化された手法を用いることが強く推奨される。