FTP サーバーの不当使用の回避

ご使用の FTP サーバーがクライアントによって破壊目的で使用されることがあります。クライアントがユーザーのサーバーを使用してでたらめなデータを他のサーバーに送信したり、クライアントがユーザーのサーバーに 3 ウェイ転送のパッシブ・サーバーになるように要求することがあります。

お客様の FTP サーバーを使用する PROXY モード状態の FTP クライアントはすべて、ポートを listen しているどのサーバーにもデータ接続を確立することができます。この場合クライアントは膨大な量の予期しないデータをサーバーに送信できるため、この状態はそのサーバーにとって非常な混乱を起こさせる可能性があります。 悪意のある FTP クライアントは、FTP サーバーから特定のポートを listen している別の アプリケーション・サーバーに大量のデータを送信させることによって、通常のサーバー・クライアント接続を 行っているサーバーを攻撃または破壊することができます。混乱を起こさせるデータをそのクライアント自身が送信しているのではないため、問題の原因であるクライアントを識別するのは困難です。 サーバーがこのような方法で使用されるのを避けるには、FTP.DATA 内で PORTCOMMAND、 PORTCOMMANDPORT および PORTCOMMANDIPADDR ステートメントを使用します。

表 1. PORTCOMMAND のシナリオ
サーバーに以下の処理を行わせたい場合... サーバーの FTP.DATA 内に以下のステートメントをコーディングします コメント
すべての PORT または EPRT コマンドをリジェクトする。 PORTCOMMAND REJECT PORT または EPRT コマンドを使用不可にすると、お客様のサーバーを使用してでたらめなデータを他のサーバーに送信できないようにします。ただし、そのサーバーが PROXY モードでデータを転送する機能の一部が失われます。クライアントがプロキシー転送をセットアップするために PORT または EPRT コマンドをユーザーのサーバーに送信すると、サーバーはこのコマンドをリジェクトし、プロキシー転送は失敗します。 クライアントがファイアウォールに適応しておらず、データ転送のためのデフォルト・ポート番号 および IP アドレスを実装していない場合は、そのクライアントはサーバーに ファイルを転送およびサーバーからファイルを転送することはできません。
ウェルノウン・ポート (1024 より小さいポート番号) を指定する すべての PORT または EPRT コマンドをリジェクトする。 PORTCOMMANDPORT NOLOWPORTS この組み合わせを指定すると、ウェルノウン・ポートを listen している サーバーへのランダム・データの送信にこのサーバーを使用することはできなくなります。ただし、悪意のあるクライアントはユーザーのサーバーを使用して、他のポート上で listen しているサーバーにランダム・データを送信する可能性があります。この場合も、サーバーは PROXY モードでのデータ転送をサポートします。
クライアントの独自の IP アドレス以外の IP アドレスを指定する すべての PORT または EPRT コマンドをリジェクトする。 PORTCOMMANDIPADDR NOREDIRECT この組み合わせを指定すると、クライアントはこのサーバーと独自の IP アドレス上のサーバーとの間でのみ、PROXY モードでのデータ転送を要求することができます。 クライアントとサーバー間の転送は影響しません。
クライアントの独自の IP アドレス以外の IP アドレスまたはウェルノウン・ポート番号を指定する すべての PORT または EPRT コマンドをリジェクトする。 PORTCOMMANDPORT NOLOWPORTS PORTCOMMANDIPADDR NOREDIRECT この組み合わせを指定すると、クライアントはユーザーのサーバーと、独自の IP アドレス上にあるサーバーとの間でのみ PROXY モードでデータ転送を要求できます。ウェルノウンのポート番号は使用できません。クライアントは、独自の IP アドレスで、ウェルノウン・ポートを listen しているサーバーに PROXY モードを使用してランダム・データを送信することはできません。

ユーザーの FTP サーバーは、3 ウェイ転送のパッシブ・サーバーとして使用することもできます。あるクライアントが PASV または EPSV コマンドをサーバーに送信すると、サーバーは listen データ・ソケットをオープンします。このソケットは、(PASV または EPSV コマンドを送信したクライアントだけでなく) その IP アドレスとポート番号を知っているすべてのアプリケーションがそれに接続できるという意味で、ウェルノウン・ポートへ関連付けられた listen ソケットによく似ています。 クライアントはこの状態を利用して、2 台のサーバー間のデータ転送である、3 ウェイ・データ転送を開始することができます。クライアントは 1 台のサーバーへ PASV を送信した後、もう 1 台へ PORT を送信します。 クライアントは PORT コマンド IP アドレスとポート番号に PASV の返信から取得した情報を設定し、2 番目のサーバーは PORT コマンド内で指定された IP アドレスとポート番号に接続し、2 台のサーバーを接続します。 それに続く転送コマンドによって、データは 2 台のサーバー間を直接移動します。 クライアントは、EPSV コマンドと EPRT コマンドを使用して 3 ウェイ・データ転送をセットアップすることもできます。

3 ウェイ・データ転送は FTP プロトコルでサポートされている機能ですが、ご使用のサーバーを 3 ウェイ転送に参加させるのが望ましくない場合もあります。サーバーが 3 ウェイ・データ転送でパッシブ・サーバー (PASV または EPSV コマンドを受信するサーバー) にならないようにするには、サーバーの FTP.DATA ファイル内に PASSIVEDATACONN NOREDIRECT をコーディングします。 これはサーバーに、データ接続が、元の FTP クライアント (PASV または EPSV コマンドを送信したクライアント) がある IP アドレスから届いたものであるかどうかを検査するように指示します。 それがデータ接続の発信元でない場合、サーバーはデータ・ソケットをクローズし、次のデータ転送コマンドが失敗します。

3 ウェイ転送での FTP サーバーの使用を完全に禁止するには、前の段落の説明に従って、PASSIVEDATACONN ステートメントをコーディングし、表 1の説明に従って、PORTCOMMANDIPADDR NOREDIRECT ステートメントまたは PORTCOMMAND REJECT ステートメントをコーディングします。