web-dev-qa-db-ja.com

アクティブFTPでFTPS(FTP over explicit TLS / SSL)を使用していますか?

アクティブFTPでvsftpdを使用しています。モジュール "ip_conntrack_ftp"(/ etc/sysconfig/iptables-config内)があり、ポート21が開いています。 FTPとの接続は機能しますが、FTPSは機能しません。ログインできますが、リストが表示されません。

227 Entering Passive Mode
LIST -a

ファイアウォールを停止すると機能します(FTPサーバー自体のiptablesを意味します)。私は http://www.experts-exchange.com/Software/Server_Software/File_Servers/FTP/Q_22418222.html を読んで、アクティブなFTPでFTPSを使用することはできません。これは本当ですか?

私のiptables構成:

*filter
:INPUT DROP [15:2752]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [132:159725]
-A INPUT -i lo -j ACCEPT
-A INPUT -d 127.0.0.0/255.0.0.0 -i ! lo -j REJECT --reject-with icmp-port-unreachable
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 990 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 989 -j ACCEPT
COMMIT
5
user74952

私はこの問題に遭遇しました。明示的なTLS/SSLでFTPを使用する場合、ポートのFTPデータ転送範囲を開く必要があるようです。以下を試してください:

iptables -A INPUT -p tcp --sport 1024: --dport 64000:65535 -m state --state ESTABLISHED -j ACCEPT

iptables -A OUTPUT -p tcp --sport 64000:65535 --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT
5
Nic Young

ftp-data着信ポート範囲へのアクセスを明示的に許可する必要があります。 Nicの答えは、静的に全範囲を開くことを推奨していますが、too開いている可能性があります。さらに、この場合、RELATEDは役に立ちません。これは、 conntrack_ftp モジュールが暗号化された制御接続をスヌープできないためです。

最近 を使用することをお勧めします。以下を試してください:

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state NEW -j in_new
iptables -A in_new -p tcp --sport 1024: --syn --dport 64000:65535 -m recent --name ftpdata --update --seconds 1800 --reap -j ACCEPT
iptables -A in_new -p tcp               --syn --dport ftp         -m recent --name ftpdata --set -j ACCEPT

--setruleは制御接続によって照合され、ソースIPをftpdata最近のリストに追加します。 --updateルールは、興味深い作業のほとんどを実行します。

  • パケットの送信元アドレスがftpdataリスト(--update)とソースアドレスが最後の1800秒以内に見られました(--seconds 1800)。
  • 一致した場合、送信元アドレスの「最後に確認された」タイムスタンプが更新されます(--update)。
  • 過去1800年に見られなかったftpdataリストのエントリは削除されます(--reap)。

したがって、制御接続がACCEPTedされた後、データ接続を開始するための1800秒があります。その後、制御接続を再度開いて、ftpdataリストに送信元アドレスを再度追加する必要があります。

そのFTPクライアントが最後の制御接続確立時間の1800秒後にデータ接続を開始できない場合、このソリューションの不便。必要に応じて24hを使用できます。ポート範囲全体を永続的に開くよりも、lessのほうが開かれます。次のようなシーケンスを持つこともできます。

iptables -A INPUT -m state --state ESTABLISHED -p tcp --dport ftp -m recent --set
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

確立された制御接続パケットが着信するたびにソースアドレスを更新しますが、--state RELATED,ESTABLISHED上部のルール。

こちらもチェックしてくださいaccept_timeoutdata_connection_timeoutおよびidle_session_timeoutvsftpd.conf のパラメータ。

5
mmoya

以下の行を/etc/sysconfig/iptablesに追加します

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p 
                                            tcp --dport 64000:65535 -j ACCEPT

iptablesを再起動します

0
Md. Mansoor