如何了解远程 FTP 服务器的被动端口范围

如何了解远程 FTP 服务器的被动端口范围

有没有办法了解不在我权限范围内的“被动”FTP 服务器的端口范围。可以在配置文件中设置范围。例如在vsftpd.conf

pasv_min_port=25000
pasv_max_port=25500
#pasv_min_port=0
#pasv_max_port=0 (any port)

因为我想在我的 Linux 终端服务器上应用非常受限制的输出防火墙 (iptables),所以我需要知道远程服务器的端口范围。FTP 是否支持公开客户端可以使用的端口范围信息?

除了以下解决方案之外,我还接受任何其他可能的解决方案,其中我假设服务器 IP 地址为 10.1.1.1:

-A OUTPUT -d 10.1.1.1 -j ACCEPT

感谢您的关注...

问候

编辑

感谢@aaron-copley@martin-prikryl@用户3590719

回答主要问题,FTP 不会向客户端公开被动端口范围。

需要的解决方案是为 FTP 加载 netfilter 连接跟踪模块。

ip_conntrack_ftp (Module alias for CentOS/Red Hat : nf_conntrack_ftp)

Red Hat 7 的工作示例配置:

/etc/sysconfig/iptables 配置

IPTABLES_MODULES="nf_conntrack_ftp"

iptables 规则

-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -d 10.1.1.1/32 -p tcp -m tcp --dport 21 -j ACCEPT
-A OUTPUT -j DROP

最后,手动加载模块或重新启动 iptables.service。

答案1

FTP 服务器不会公开宣布被动端口范围。

您所能做的就是自动执行往返于服务器的多个文件的并行传输,并从用于这些传输的端口推断出范围。

答案2

我在之前的回答中找到了这一点

为 FTP PASV 模式连接设置 Linux iptables

这:https://major.io/2007/07/01/active-ftp-connections-through-iptables/

和这个:

https://www.cyberciti.biz/tips/how-do-i-use-iptables-connection-tracking-feature.html

在所有这些中,您都需要使用 ip_conntrack_ftp 和 iptables 规则中的相关规则来保持被动连接打开。

相关内容