File Transfer Protocol
この問題に対する一般的な解決策は、次の通りである。
安全なバージョンのプロトコルを使用する。例えば、FTPの代わりにFTPS、Telnetの代わりにTelnetSを使用する。
SSH File Transfer Protocol(SFTP)やSecure Copy Protocol(SCP)など、ジョブを処理できるより安全なプロトコルを使用する。
Secure Shell(SSH)やVPNなどのセキュアトンネルを使用する。
FTPは、Gumblarなどのコンピュータウイルスの標的にもされた。そのため、現在では、FTPではなく前述の FTPS (SSL/TLSを使ったFTP) や SFTP (SSH File Transfer Protocol)、SCP、SSH上でのrsync、など暗号化された手法を用いることが強く推奨される。
HTTP/WebDAV
Secure copy(SCP)
Rcp
rsync
Network File System(NFS)
Server Message Block(SMB)/CIFS (Samba)
FTP over SSHは、Secure Shell接続を介して通常のFTPセッションをトンネリングする方法である。FTPは複数のTCP接続を使用するため、SSHを介してトンネリングすることは特に困難である。多くのSSHクライアントでは、制御チャネル(ポート21による最初のクライアントとサーバの間の接続)用にトンネルを設定しようとすると、そのチャネルだけが保護される。データを転送するときは新しいTCP接続(データチャネル)を確立するため、機密性や完全性の保護はない。
そのため、SSHクライアントソフトウェアがFTPプロトコルの情報を持ち、FTP制御チャネルのメッセージを監視して書き換え、FTPデータチャネルのための新しいパケット転送を自律的に開く必要がある。
明示的FTPS(Explicit FTPS)は、クライアントがFTPセッションの暗号化を要求できるようにするFTP標準の拡張である。これは、"AUTH TLS"コマンドを送ることによって行われる。サーバには、TLSを使用しない接続の許可・拒否のオプションがある。このプロトコル拡張は、RFC 4217で定義されている。
暗黙的FTPS(Implicit FTPS)は、SSL/TLS接続の使用を必要するFTPの古い標準であり、通常のFTPとは異なるポートを使用するように指定されていた。