需要帮助在Ubuntu 10.10中添加FTP到IPTables

我有一个现有的IPtables脚本运行在一个LAMP堆栈VPS,我需要帮助,允许FTP连接,所以我可以上传和下载文件到我的networking服务器。

我已经安装vsftpd到Ubuntu,并configuration为authenicated用户访问,但我认为我的防火墙拒绝连接请求。

我已经尝试modprobe ip_conntrack_ftp加载模块。 但我仍然无法通过FTP连接

*filter # Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0 -A INPUT -i lo -j ACCEPT -A INPUT -i ! lo -d 127.0.0.0/8 -j REJECT # Accepts all established inbound connections -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Allows all outbound traffic # You could modify this to only allow certain traffic # This is in addition to allowing established and related traffic as listed above -A OUTPUT -j ACCEPT # Allows HTTP and HTTPS connections from anywhere (the normal ports for websites) -A INPUT -p tcp --dport 80 -j ACCEPT -A INPUT -p tcp --dport 443 -j ACCEPT #Allows FTP traffic -A INPUT -p tcp -m tcp --dport 20 -j LOG -A INPUT -p tcp -m tcp --dport 21 -j LOG -A OUTPUT -p tcp -m tcp --sport 20 -j LOG -A OUTPUT -p tcp -m tcp --sport 21 -j LOG # Allows SSH connections from trusted-host only - drop the rest -A INPUT -p tcp -m state --state NEW --source 84.70.321.123 --dport 30000 -j ACCEPT -A INPUT -p tcp --dport 30000 -j DROP # Create time lock for non-wanted SSH attempts of a period of 1 minute -A INPUT -p tcp -m state --syn --state NEW --dport 30000 -m limit --limit 1/minute -limit-burst 1 -j ACCEPT -A INPUT -p tcp -m state --syn --state NEW --dport 30000 -j DROP # Allow ping -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT COMMIT 

我一直在连接,我不知道为什么。

请用最简单的解释来解释这个问题,因为它看起来有点复杂,我看到很多人有类似的问题,可以从简单的解释中受益。

FTP可能是一个有问题的协议。 我根本没有使用它(取而代之的是大多数SSH软件包提供的更安全,更高效的SCP或SFTP,或者更好的情况下,rsync通过ssh)。

但是要寻找或尝试的东西:

  • 如果防火墙暂时设置为接受任何内容,请检查以确保其正常工作。 这将确认您的防火墙设置是问题,而其他地方没有问题。
  • 确保客户端正在使用PASV模式,否则服务器将尝试连接回客户端,并在这一端的块可能是问题,而不是你的防火墙。
  • 检查客户端尝试使用什么端口进行数据连接(一个好的FTP客户端将有一个选项可以查看命令连接上发送的完整日志,在尝试传输之前查找PORT命令)。 有关如何解释PASV命令(以及主动和被动模式之间的区别)的说明,请参阅http://slacksite.com/other/ftp.html
  • 您不会说FTP客户端是否连接,或者在获取目录列表或获取/发送文件时失败。 如果后者那么主动/被动模式的事情是没有意义的(只有在命令连接打开的时候才会起作用)再次查看日志,或者尝试一个命令行客户端,如果FTP客户端进行连接并接受你的用户名/密码),那么你得到一个命令连接好。

虽然我的一般build议,假设你可以用你的用户,是通过SSH而不是FTP使用SFPT / SCP。 我和我的用户通过解释更好的安全性和效率来解决这个问题,如果失败了,我会用“如果你真的想用FTP,那么请考虑使用不同的服务”。 几乎所有的Linux设置都具有命令行支持和GUI支持(例如,在Ubuntu上inputsftp://server.domain.tld/或类似的默认文件pipe理器),并有几个好的Windows客户端我使用WinSCP作为GUI使用,而Cygwin的OpenSSH包用于命令行使用,尽pipeWinSCP也支持命令行使用)。

默认情况下,vsftp.conf应该有以下行:

 connect_from_port_20=yes 

这将vsFTP设置为主动模式,因此将通过端口20连接回客户端。如果未启用,则意味着vsFTP被设置为被动模式,这将要求您在防火墙中打开一系列端口1024以上