web-dev-qa-db-ja.com

FTPS-TLSを介した明示的なFTP-ディレクトリリストを取得できません

[〜#〜] update [〜#〜]-解決方法の概要:ルーターで誤って入力されたポートを修正した後、エラー「450 TLSセッションのデータ接続が再開されませんでしたまたはセッションが制御接続と一致しません "-これにより、サーバー設定の「PROT Pを使用する場合はデータ接続でTLSセッションの再開を要求する」のチェックが外れ、問題が修正されました。この「機能」を無効にすることがセキュリティにとって何を意味するのかわかりません。 ------

元の投稿-私の目標は、FirezillaサーバーでTLSを介した明示的なFTPを動作させることです。同じ範囲のポートを許可するようにFirezillaとWindowsファイアウォールを設定しました。

Firewall Ports: 21, 50000-51000
Firezilla Server: Passive Ports: 50000-51000

私のルーターもTCP=で正しいLAN IPに転送されるこの範囲のポートを持っています。

私のサーバーはNATの後ろにあり、Firezillaサーバーのパッシブ設定タブにもリストされている静的IPを持っています。私が成功した唯一の方法は、クライアントが同じNATの側面で、プレーンFTPをまっすぐにして、アクティブモードでのみ使用します。

私はftptest.netでテストしましたが、これはログです

TLSを介した明示的なFTP

Status: Resolving address of xxx.x.xxx.xxx
Status: Connecting to xxx.x.xxx.xxx
Warning: The entered address does not resolve to an IPv6 address. 
Status: Connected, waiting for welcome message... 
Reply: 220-FileZilla Server 0.9.60 beta 
Reply: 220 Welcome 
Command: CLNT https://ftptest.net on behalf of xxx.x.xxx.xxx 
Reply: 200 Don't care 
Command: AUTH TLS 
Reply: 234 Using authentication type TLS 
Status: Performing TLS handshake... 
Status: TLS handshake successful, verifying certificate... 
Status: Received 1 certificates from server. 
Status: cert[0]: subject='CN=xxx.x.xxx.xxx,C=US,ST=My state,L=My city' issuer='CN=xxx.x.xxx.xxx,C=US,ST=My state,L=My city' 
Command: USER username 
Reply: 331 Password required for username 
Command: PASS ************* 
Reply: 230 Logged on 
Command: SYST 
Reply: 215 UNIX emulated by FileZilla 
Command: FEAT 
Reply: 211-Features: 
Reply: MDTM 
Reply: REST STREAM 
Reply: SIZE 
Reply: MLST type*;size*;modify*; 
Reply: MLSD 
Reply: AUTH SSL 
Reply: AUTH TLS 
Reply: PROT 
Reply: PBSZ 
Reply: UTF8 
Reply: CLNT 
Reply: MFMT 
Reply: EPSV 
Reply: EPRT 
Reply: 211 End 
Command: PBSZ 0 
Reply: 200 PBSZ=0 
Command: PROT P 
Reply: 200 Protection level set to P 
Command: PWD 
Reply: 257 "/" is current directory. 
Status: Current path is / 
Command: TYPE I 
Reply: 200 Type set to I 
Command: PASV 
Reply: 227 Entering Passive Mode (xxx,x,xxx,xxx,196,44) 
Command: MLSD 
Reply: 425 Can't open data connection for transfer of "/" 
Error: Listing failed 

プレーンFTPへのフォールバックを許可する

Warning: Allowing fallback to plaintext FTP is insecure. You should use explicit FTP over TLS.
Status: Resolving address of xxx.x.xxx.xxx 
Status: Connecting to xxx.x.xxx.xxx 
Warning: The entered address does not resolve to an IPv6 address. 
Status: Connected, waiting for welcome message... 
Reply: 220-FileZilla Server 0.9.60 beta 
Reply: 220 Welcome 
Command: CLNT https://ftptest.net on behalf of xxx.x.xxx.xxx 
Reply: 200 Don't care 
Command: AUTH TLS 
Reply: 234 Using authentication type TLS 
Status: Performing TLS handshake... 
Status: TLS handshake successful, verifying certificate... 
Status: Received 1 certificates from server. 
Status: cert[0]: subject='CN=xxx.x.xxx.xxx,C=US,ST=My state,L=My city' issuer='CN=xxx.x.xxx.xxx,C=US,ST=My state,L=My city' 
Command: USER username 
Reply: 331 Password required for username 
Command: PASS ************* 
Reply: 230 Logged on 
Command: SYST 
Reply: 215 UNIX emulated by FileZilla 
Command: FEAT 
Reply: 211-Features: 
Reply: MDTM 
Reply: REST STREAM 
Reply: SIZE 
Reply: MLST type*;size*;modify*; 
Reply: MLSD 
Reply: AUTH SSL 
Reply: AUTH TLS 
Reply: PROT 
Reply: PBSZ 
Reply: UTF8 
Reply: CLNT 
Reply: MFMT 
Reply: EPSV 
Reply: EPRT 
Reply: 211 End 
Command: PBSZ 0 
Reply: 200 PBSZ=0 
Command: PROT P 
Reply: 200 Protection level set to P 
Command: PWD 
Reply: 257 "/" is current directory. 
Status: Current path is / 
Command: TYPE I 
Reply: 200 Type set to I 
Command: PASV 
Reply: 227 Entering Passive Mode (xxx,x,xxx,xxx,196,107) 
Command: MLSD 
Reply: 425 Can't open data connection for transfer of "/" 
Error: Listing failed 

私はこれを乗り越えるのを手伝っていただければ幸いです。前もって感謝します。

1
mseifert

ファイアウォールとNATアプライアンスの両方でのFTP over TLSの問題は2つあります。

  1. FTPは、2つの接続を必要とする不安定なプロトコルです。

    1. 最初はデフォルトポートTCPへの1つの制御接続であるパッシブFTPの場合21
    2. 実際にデータを転送するには(そして、ディレクトリ一覧の取得はデータ転送です)、クライアントは2番目のTCP接続、つまりデータ接続を確立する必要があります。
      FTPクライアントがPASVコントロールワードを使用してパッシブFTP接続を要求した後、FTPサーバーは「ランダムに利用可能な一時的な」デフォルト以外のポートを選択し、そのポートをPORT応答で通知します。
      PORT応答には通常6オクテットが含まれます。例:PORT h1,h2,h3,h4,p1,p2ここで、h1.h2.h3.h4はサーバーのIPv4 IPアドレスであり、TCPポート番号は(p1*256) + p2です。つまり、xxx,x,xxx,xxx,196,107はポート(196 * 256)+ 107 = 50283を表します
  2. FTP over TLSでは、クライアントとFTPサーバー間の接続は暗号化されます。その結果、ファイアウォールで保護され、NATデバイスの背後にあるサーバーで問題が発生します。

ファイアウォールの問題
通常、インテリジェントファイアウォールでは、FTPを許可する場合、制御接続TCP 21のポートを開く必要があります。次に、クリアテキストFTPプロトコルで、ファイアウォールはポートをスキャンして検出できます。応答。 FTPヘルパーモジュールは、FTPサーバーによってその特定のクライアントに割り当てられるポート番号を自動的に開き、きめ細かいアクセス制御を可能にします。

接続がTLSで暗号化されている場合、ファイアウォールはPORT応答を検出できなくなり、割り当てられたポートを自動的に開きません。
解決策は次のとおりです。

  • fTPサーバーが小さな範囲へのパッシブ接続に使用するポートの範囲を修正する
  • ファイアウォールで、ポート21とデータ接続用の固定範囲のポートの両方を開きます

NATの問題
FTPサーバーがネットワークアドレス変換を行うデバイスの背後にある場合、ポート21の制御接続上のポート転送トラフィックは、NATデバイスの(外部)ipアドレスからポートに転送されますFTPサーバー上の21。
さらに、同様のNAT FTPヘルパーモジュールが実行され、クリアテキストFTPプロトコルでは、PORT応答をスキャンして検出できます。
PORT応答を確認すると、通常は次の2つの変更が行われます。

  • 応答PORT h1,h2,h3,h4,p1,p2では、FTPサーバーのIPアドレスh1,h2,h3,h4は、クライアントが接続されているNATサーバーの(外部)IPアドレスe1,e2,e3,e4を表すe1.e2.e3.e4に置き換えられます。
  • 動的ポート転送ルールは、NATデバイスからFTPサーバーにp1,p2で定義されたポートを転送するクライアントに対して作成されます。

FTP接続がTLSで暗号化されている場合、NATデバイスはPORT応答を検出できないため、NATデバイスはIPアドレスを書き換えることも、必要なポート転送ルールを自動的に作成することもできません。
そのようなNAT問題の一般的な解決策は次のとおりです。

  • fTPサーバーを再構成して、独自のIPアドレスh1.h2.h3.h4ではなく、PORT応答でNATデバイスの外部IPアドレスe1.e2.e3.e4を使用するようにします。
  • fTPサーバーが小さな範囲へのパッシブ接続に使用するポートの範囲を修正する
  • TCPに加えて、ポート21は、FTPサーバーで構成したパッシブポート範囲内のすべてのポートに対して、明示的なポート転送(NAT)ルールを作成し、FTPサーバー上の対応するポートに送信します。 50000 --> 5000050001 --> 5000150002 --> 50002など。

FTPサーバー上のホストベースのファイアウォールに加えて、追加のファイアウォールまたはセキュリティグループが含まれる可能性があることをお見逃しなく。たとえば、ポート転送ルールに加えて、NATデバイスでファイアウォールルールを作成する必要がある場合もあります。

2
HBruijn