【捍卫者导读】如果你的服务器开启了ftp服务,而且又需要更改FTP的端口,那么你设置了iptables防火墙开放的指定端口,但是你连接一下试试,是不是打不开?这是被多事的iptables防火墙拦截住了的缘故。你还要详细设置一下,才能够让iptables对ftp打开的端口放行。
iptables防火墙针对ftp服务更换端口的设置
Linux服务器上安装ftp提供用户上传下载,是很方便的事情,但是如果你的服务器开启了iptables防火墙,就要对ftp端口做一些设置。
我之前也做过iptables允许某个端口访问的视频,为什么还要做ftp端口这个演示?
因为ftp端口真的比较特殊,并不像80,22这些端口。
它分为连接用的端口,还有当你上传下载文件的传输数据用的端口。
好下面我边演示,边讲下它如何的特别。
netstat -tnl 命令可以看到,我们现在运行了ftp服务。
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
================
[root@localhost root]# iptables -L -n
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:22
我这里现在只允许 22 端口的访问。
现在我开始对ftp端口的设置,添加需要开放的端口
ftp连接端口有2个 21 和 20 端口,我现在添加对应的规则。
[root@localhost root]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
[root@localhost root]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT
[root@localhost root]# iptables -A OUTPUT -p tcp --sport 21 -j ACCEPT
[root@localhost root]# iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
好,这样就添加完了,我们用浏览器访问一下ftp,出现超时。
所以我刚才说 ftp 是比较特殊的端口,它还有一些端口是 数据传输端口,
例如目录列表, 上传 ,下载 文件都要用到这些端口。
而这些端口是 任意 端口。 这个 任意 真的比较特殊。
如果不指定什么一个端口范围, iptables 很难对任意端口开放的,
如果iptables允许任意端口访问, 那和不设置防火墙没什么区别,所以不现实的。
那么我们的解决办法就是 指定这个数据传输端口的一个范围。
下面我们修改一下ftp配置文件。
我这里使用vsftpd来修改演示,其他ftp我不知道哪里修改,大家可以找找资料。
[root@localhost root]# vi /etc/vsftpd.conf
在配置文件的最下面 加入
pasv_min_port=10001
pasv_max_port=11000
然后保存退出。
这两句话的意思告诉vsftpd, 要传输数据的端口范围就在10001到11000 这个范围内传送。
这样我们使用 iptables 就好办多了,我们就打开 10001到11000 这些端口。
[root@localhost root]# iptables -A INPUT -p tcp --dport 10001:11000 -j ACCEPT
[root@localhost root]# iptables -A OUTPUT -p tcp --sport 10001:11000 -j ACCEPT
[root@localhost root]# service iptables save [iptables 要保存下设置]
最后进行保存, 然后我们再用浏览器范围下 ftp。可以正常访问
用个账号登陆上去,也没有问题,上传一些文件上去看看。
看到了吧,上传和下载都正常。 再查看下 iptables 的设置
[root@localhost root]# iptables -L -n
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:20
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpts:30001:31000
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:21
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:20
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spts:30001:31000
为了演示ftp特殊端口做的简单规则,大家可以添加一些对数据包的验证
例如 -m state --state ESTABLISHED,RELATED 等等要求更加高的验证
小结:其实设置也比较简单,为了增加服务器的安全性,作以上设置也是非常有必要的。
转截请注明:文章来自 pc捍卫者 http://www.pchwz.com
本站发布此文为传递更多信息之目的,不表明pc捍卫者赞同其观点