
我希望有人能在這裡指出正確的方向。
在公用 IP 上執行 proftpd(支援 tls)。
FTP 用戶端已連接,但無法列出目錄。當我將 iptables 上的“INPUT”策略更改為 ACCEPT 時,它確實有效。
以下是我的相關iptables規則:
$IPTABLES -A INPUT -i eno1 -s 0/0 -d x.x.x.x -p tcp --sport 1024:65535 -m multiport --dports 20,21,989,990 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d x.x.x.x --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
我啟用了connection_tracking模組。
server ~ # lsmod | grep nf_conntra
nf_conntrack_ftp 24576 3
nf_conntrack 176128 8 xt_conntrack,nf_nat,xt_state,xt_nat,xt_helper,nf_conntrack_ftp,xt_CT,xt_MASQUERADE
nf_defrag_ipv6 24576 1 nf_conntrack
nf_defrag_ipv4 16384 1 nf_conntrack
libcrc32c 16384 2 nf_conntrack,nf_nat
我還在 /proc 中啟用了 nf_conntrack_helper
server ~ # cat /proc/sys/net/netfilter/nf_conntrack_helper
1
答案1
proftpd(支援 tls)
TLS 支援可能是罪魁禍首。
通常在智慧防火牆中,當您允許 FTP 時,您需要開啟控制連線連接埠 TCP 21,然後在明文 FTP 協定中,conntrack 模組可以掃描並偵測回應PORT
。然後,FTP conntrack 幫助程式模組將自動開啟 FTP 伺服器指派給該特定用戶端的連接埠號碼(如相關),從而允許退出粒度存取控制。
當使用 TLS 加密連線時,防火牆無法再偵測到 PORT 回應,因此不會自動開啟已指派的連接埠。解決方案是:
將 FTP 伺服器用於被動連接的連接埠範圍修復為小範圍
PassivePorts min-pasv-port max-pasv-port
在防火牆中開啟連接埠 21 和用於資料連線的固定連接埠範圍