Linux下iptables 禁止端口和开放端口示例

2019-10-10 14:00:18王旭

说明本机DNS正常, iptables 允许53这个端口的访问。

7、iptables对ftp的设置

现在我开始对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=30001
pasv_max_port=31000

然后保存退出。

这两句话的意思告诉vsftpd, 要传输数据的端口范围就在30001到31000 这个范围内传送。

这样我们使用 iptables 就好办多了,我们就打开 30001到31000 这些端口。

[root@localhost root]#iptables -A INPUT -p tcp --dport 30001:31000 -j ACCEPT
[root@localhost root]#iptables -A OUTPUT -p tcp --sport 30001:31000 -j ACCEPT
[root@localhost root]#service iptables save

最后进行保存, 然后我们再用浏览器范围下 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