CentOS下iptables开放端口端示例

CentOS系统在当做网站服务器运行时,具有很高的效率和运行稳定性。windows系统下可以通过系统防火墙来限制外部计算机对服务器端口的访问,而Linux是通过iptables来允许或限制端口访问的。

 

本文讨论的使用情境是LNmp或LNmpA系统架构下的情况。

 

为了方便举例说明,飘易就直接拿来一段我的现有服务器上运行的防火墙iptables内容。

请注意:后面的注释说明文字:

 

 

修改完防火墙iptables后,需要重新启动:

或者

 

注意:iptables配置文件存放位置是:/etc/sysconfig/iptables
保存命令:service iptables save
使用命令:iptables -L -n 可以查看当前iptables的开放端口情况。
iptables服务开机自动启动

检查iptables服务:

上面开放的端口后面都有注明,有一个要注意的地方,就是FTP端口,FTP的默认端口21肯定要开放,但是一般的ftp软件都是默认先尝试几次被动模式PASV连接,在PASV模式连接失败后,才会进行主动模式PORT连接。

 

如果我们仅仅开放21端口,这里就有问题了。FTP PASV模式下,还会随机使用一个空闲端口,这个端口范围在20000-30000之间。所以,我们需要把这个端口范围加入防火墙:

关于FTP的PASV被动模式和PORT主动模式的说明
FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。
FTP协议有两种工作方式:PORT方式(主动)和PASV方式(被动),中文意思为主动式和被动式。

 

Port模式:
ftp server:tcp 21 <------client:dynamic
ftp server:tcp 20 ------>client:dynamic

 

Pasv模式:
ftp server:tcp 21 <----client:dynamic
ftp server:tcp dynamic <----client:dynamic

 

port模式和pasv模式区别
1、port模式:这种模式的FTP网管人员比较轻松,但兼容性较差,比如假如客户端在局域网内就会无法登录FTP服务器。假如有人无法使用port模式登录FTP的话,作为FTP治理员来说,你无论如何努力都是没有用的。因为这时问题症结在对方客户端的防火墙或网关。所以对于一个FTP服务器来说,尽量要使用pasv模式

 

2、pasv模式:这种模式的FTP兼容性好,但对FTP治理员来说有一定挑战性,而且设置的情况比较复杂,以下举例均以有防火墙的情况来说明:

 

我们仅以服务器在公网上的情况举例:

 

这是最理想的情况。21端口当然要首先开放,然后再作如下设置:

 

 windows系统下serv-u服务器:
本地服务器——设置——高级,在"pasv端口端口范围"中填入一段不与其它端口冲突的范围,如3001-3020,然后在防火墙中开放3001-3020的端口。
Linux系统下PureFTPd服务器:
把端口20000-30000加入到iptables允许端口范围。

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 20000:30000 -j ACCEPT

 

如果你没有设置防火墙允许ftp pasv模式下的端口,那么在客户端使用ftp软件连接服务器的时候,将会出现类似以下的连接过程:

 

从上面的ftp返回的信息,我们可以轻易的看出,ftp先进行了2次pasv被动模式连接,由于20000-30000之间的端口范围没有开放,所以pasv模式连接失败,最后进行了port主动模式连接才成功。

 

但是正如我们上面所说,ftp port模式兼容性差,假如客户端在局域网内就会无法登录FTP服务器。所以,我们还是应该配置ftp服务器端的pasv被动模式下的端口。

About the Author

Avatar photo

今生在线

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据