ftpsをもう少し掘り下げる

 前々回はsftpとftpsについて書きました。この2者は「似て非なるもの」という風に表現しました。
 同記事を書くために調べていたところ、「明示的な暗号化(Explicitモード)」と「暗黙的な暗号化(Implicitモード)」の2種類が存在することを知りました。

 どうやら、前者はSSL(厳密にはTLSですが、ここでは慣用的にSSLと表現します)による通信経路の暗号化を強制することが可能です。後者はユーザ側が通信経路を暗号化するかしないかを選択できるという代物です。
 待ち受けるポート番号の違いもあります。前者は21/tcpですが、プロトコルはftpsです。(ftpではつなげない)
 後者はftpが21/tcpで、ftpsが990/tcpで受け取るという形になります。

 これからいろいろと話がややこしくなってきます。一般的によく言われる「ftpは21/tcp、ftp-dataは20/tcp。ftpsは990/tcp、ftps-dataは989/tcp。」ですが、これを受けて、「この4つのポートをFWで開けておけば、ftpもftpsもOK」と思われがちです。しかし、ftpsで通信出来ないというケースを散見します。「ftpsでの990/tcpでは接続出来るのに、ftps-data
の989/tcpとの通信が確立されなくて失敗する。」という事例を見かけます。
 
 ここで言うftpsの989/tcpですが、アクティブモードの場合でのサーバからクライアントに向けて通信する際の送信元ポートになります。
 パッシブモードの場合は、サーバ側が待ち受けポートをクライアント側に通知します。そのポートが1024/tcp以降のいずれかのポートになります。
 アクティブポートでの通信を行う場合は、サーバの989/tcpからクライアントのランダムなポートへの通信許可をFW側に設定してやる必要があります。
 ありがちなFWのフィルタリングルールとしては、LAN側からの通信を開始するものは通します。(リプライパケットは無条件に通します。でないと通信が成立しませんね。(^^;)
 ftpまたはftpsのアクティブモードの場合、サーバ側から開始する通信を許可しなくてはいけません。非常に嫌な感じですね。
 FWのポリシー的に必要以上にWAN側からの通信は許可したくありませんよね。LAN側からの通信にしても、幅広いレンジでポートを許可したくないというのもありますよね。
 ftpにおけるアクティブモード/パッシブモードについては、別の機会に書いてみますので、もう少々お待ち下さい。

【参考】
http://naoberry.com/tech/ftp-active-pasv/

  • このエントリーをはてなブックマークに追加

コメントをどうぞ