web-dev-qa-db-ja.com

pure-ftpdがTLSモードのパッシブ接続に間違ったIPを与える

TLS/SSLを使用するようにftpサーバー(pure-ftpd-1.0.21-r1)をセットアップしています。 TLSを使用しない場合に機能します。

コマンドオプションから始めました:

-S 21 -c 30 -C 10 -B -k 90% -A -R -Z -p 49152:65534 -U 013 -s --tls=1

Response:   230 OK. Current restricted directory is /
Command:    SYST
Response:   215 UNIX Type: L8
Command:    FEAT
Response:   211-Extensions supported:
Response:    EPRT
Response:    IDLE
Response:    MDTM
Response:    SIZE
Response:    REST STREAM
Response:    MLST type*;size*;sizd*;modify*;UNIX.mode*;UNIX.uid*;UNIX.gid*;unique*;
Response:    MLSD
Response:    TVFS
Response:    ESTP
Response:    PASV
Response:    EPSV
Response:    SPSV
Response:    ESTA
Response:    AUTH TLS
Response:    PBSZ
Response:    PROT
Response:   211 End.
Status: Connected
Status: Retrieving directory listing...
Command:    PWD
Response:   257 "/" is your current location
Command:    TYPE I
Response:   200 TYPE is now 8-bit binary
Command:    PASV
Response:   227 Entering Passive Mode (76,65,xxx,xxx,228,146) #last octets removed to protect the guilty
Command:    MLSD
Response:   150 Accepted data connection
Response:   226-ASCII
Response:   226-Options: -l 
Response:   226 54 matches total
Status: Directory listing successful
Status: Disconnected from server

TLSを使用する場合:

Response:   220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
Response:   220-You are user number 4 of 30 allowed.
Response:   220-Local time is now 09:19. Server port: 21.
Response:   220-IPv6 connections are also welcome on this server.
Response:   220 You will be disconnected after 15 minutes of inactivity.
Command:    AUTH TLS
Response:   234 AUTH TLS OK.
Status: Initializing TLS...
Status: Verifying certificate...
Command:    USER john
Status: TLS/SSL connection established.
Response:   331 User john OK. Password required
Command:    PASS ********
Response:   230-User john has group access to:  svn      anonymou proftpd  powercor john    
Response:   230- users    usb      ftp
Response:   230 OK. Current restricted directory is /
Command:    SYST
#....same as above
Response:   200 TYPE is now 8-bit binary
Command:    PASV
Response:   227 Entering Passive Mode (192,168,15,2,198,194)
Status: Server sent passive reply with unroutable address. Using server address instead.
Command:    MLSD
Error:  Connection timed out
Error:  Failed to retrieve directory listing
4
Tanj

私の推測では、FTPサーバーはNATファイアウォールの背後にあり、ファイアウォールデバイスでip_conntrack_ftpヘルパーモジュール(または同等のもの)が実行されています。基本的に、このモジュールはデータストリームをスキャンします内部IPアドレスのインスタンスを探し、それらを外部IPアドレスに書き換えます。ただし、実行中のパケットを復号化してIPアドレスを見つけることができないため、TLSで保護されたFTP接続ではこれを行うことはできません(一般的には良いことだと考えられています)。

オプションは次のとおりです。

  • 使用 -Pオプション、「PASV/EPSV/SPSVコマンドに応答して指定されたIPアドレスを強制します。」
  • NATを取り除く
4
womble

パッシブコマンドでマスカレードIPを指定する必要があります。

現在、パッシブコマンドは192,168,15,2を返します(これはプライベートIPであり、パブリックインターネット接続では機能しません)

  • '-P':PASV/EPSV/SPSVコマンドに応答して指定されたIPアドレスを強制します。サーバーがステートフルFTPマスカレードを適切に処理しないマスカレード(NAT)ボックスの背後にある場合は、そのボックスのIPアドレスをここに入力します。動的IPアドレスがある場合は、ゲートウェイのパブリックホスト名を入力できます。これは、新しいクライアントが接続するたびに解決されます。
1
John Tkaczewski