アクティブ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
私はこの問題に遭遇しました。明示的な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
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
--set
ruleは制御接続によって照合され、ソースIPをftpdata
最近のリストに追加します。 --update
ルールは、興味深い作業のほとんどを実行します。
ftpdata
リスト(--update
)とソースアドレスが最後の1800秒以内に見られました(--seconds 1800
)。--update
)。ftpdata
リストのエントリは削除されます(--reap
)。したがって、制御接続がACCEPT
edされた後、データ接続を開始するための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_timeout
、data_connection_timeout
およびidle_session_timeout
vsftpd.conf のパラメータ。
以下の行を/etc/sysconfig/iptables
に追加します
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p
tcp --dport 64000:65535 -j ACCEPT
iptables
を再起動します