即使指定了PassivePortRange,PureFTPd也使用50000以上的端口

我已经使用apt-get在Ubuntu 10.04上安装了PureFTP 1.0.24的pure-ftpd软件包。

即使这是默认的端口范围,我添加了包含以下内容的文件/ etc / pure-ftpd / conf / PassivePortRange:

30000 50000 

这会在运行命令( -p 30000:50000 )时添加正确的选项,但由于某些原因,我仍然尝试使用50000以上的端口进行连接。我认为问题在于这些是活动的ftp会话,但是如果仅用于被动模式,指定端口范围有什么意义? 然后我仍然需要打开我的防火墙中的所有端口…

有没有办法为所有连接指定端口范围(而不仅仅是被动的)?

在主动模式下,服务器启动到客户端定义的IP地址的连接,所以服务器无法影响正在使用的端口号。 在这种情况下,您不需要打开其他超过21个的传入端口,因为服务器启动了与客户端的数据连接。

在被动模式下,客户端打开到服务器定义的端口的连接,这就是被动端口范围发挥作用的地方。 服务器在该范围内select一个空闲端口并将其交给客户端。 这当然意味着整个端口范围需要在服务器防火墙中打开,这有安全隐患。

Linux有一个很好的function来减轻为被动FTP – iptables连接跟踪打开一个大的端口范围的影响。 要利用它,你需要确保ip_conntrack_ftp模块被加载,然后你可以允许这样的stream量# iptables -A your_chain -i your_iface -m state --state RELATED -m helper --helper ftp -j ACCEPT (如果需要,你可以包括你的端口范围)。 这告诉iptables接受由conntrack FTP helperpipe理的相关连接。 所以,如果有任何其他的服务在你的被动端口范围内的一个套接字上监听,iptables将拒绝对这个端口的访问,因为它不能识别它是否与FTP相关。

在被动模式下,服务器通知客户端连接到随机端口。 您已将服务器configuration为使用特定的范围,因此应仅使用这些范围。 这个范围将需要通过防火墙来打开,以允许连接。(除非你的防火墙足够聪明,以查看FTP数据包并添加dynamic规则)。

在主动模式下,客户端请求服务器在随机端口上连接到它。 因为客户select这个,你无法控制它。 但是,要积极工作,您只需要添加一个保持状态规则,以允许这些连接从您的服务器。 你不需要完全打开所有的端口。