File eXchange Protocol

この記事には参考文献や外部リンクの一覧が含まれていますが、脚注による参照が不十分であるため、情報源が依然不明確です。 適切な位置に脚注を追加して、記事の信頼性向上にご協力ください。（2023年1月）

|

File eXchange Protocol（FXP、FXSP）は、FTPプロトコルを使ってデータ転送を行う手段であり、クライアントのコネクションを経由しなくとも転送元のサーバから別のサーバにデータを転送できる。FTPは単一のサーバと単一のクライアントの間のプロトコルである。全てのデータ転送はその両者の間で直接行われる。FXPでは2つのサーバとFTPコネクションを確立し、さらにその2つのサーバ間でのデータ転送が可能である。ネットワーク管理者が作業しているクライアントがサーバ群とは離れていて低バンド幅であるとき、高バンド幅のサーバから別の高バンド幅のサーバにリソースを転送するような作業に便利である。

## 危険性

[編集]

FXPを利用可能にすると、サーバはFTPバウンス攻撃と呼ばれるエクスプロイトに対して脆弱になることが知られている。そのため、FTPサーバソフトウェアはデフォールトではFXPを使用不可にしていることが多い。

## FXP over SSL

[編集]

glFTPd、RaidenFTPd、wzdftpd といったFTPサーバは、FTPプロトコル拡張コマンド CPSV または SSCN を使い、セキュアなデータチャネルをサーバ間に構築できる。これは通常クライアントがPASVコマンドの代わりにCPSVコマンドを発行するか、PASVの前にSSCNを送ることでなされ、それによってサーバはSSLまたはTLSコネクションを作成する。しかし2つのFTPサーバは互いのSSL証明書を検証しないので、CPSVでもSSCNでも中間者攻撃に弱い。SSCNは2003年に RaidenFTPd と SmartFTP で採用されたのが最初で、その後他にも広く採用されている。

## 詳細

[編集]

FXPはそれ自体が「プロトコル」に分類されることもあるが、実際には RFC 959 にある通りFTPの単なる拡張である。

User-PI - Server A  (Dest)              User-PI - Server B  (Source)

C->A : Connect                          C->B : Connect
C->A : PASV
A->C : 227 Entering Passive Mode. A1,A2,A3,A4,a1,a2
C->B : PORT A1,A2,A3,A4,a1,a2
B->C : 200 Okay
C->A : STOR                             C->B : RETR

B->A : Connect to HOST-A, PORT-a

## 参考文献

[編集]

この「プロトコル」は RFC 0959 のサブセットとしてIETFにより標準化されている。

* RFC 959 File Transfer Protocol (FTP). J. Postel, J. Reynolds. Oct-1985. これは、RFC 114 を起点とし RFC 765 を含むそれまでのFTP関連RFCを置き換えたものである。

## 関連項目

[編集]

* File Transfer Protocol (FTP)
* FTPサーバ
* Trivial File Transfer Protocol (TFTP)
* SSH File Transfer Protocol (sftp)
* FTPS