iptables下开放ftp连接端口

Posted 夏天的麦田

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iptables下开放ftp连接端口相关的知识,希望对你有一定的参考价值。

iptables下开放ftp连接端口

转载 2014年04月19日 10:04:27
 

iptables 就是linux系统的防火墙,很多人安装iptables之后重启服务器发现网站无法访问,ftp无法连接。关闭iptables之后网站和ftp服务器都能正常访问,但是为了服务器的安全,不建议关闭防火墙。

要想配置好iptables让ftp服务器正常访问,我们首先要了解一下ftp服务器的工作机制。

ftp协议是一个简单、保密性差(明码)的tcp协议,它的工作原理是客户端先连服务器端的21端口,然后经过3步的握手以后建立了一条连接。要注意的是,这条连接只可以用来传输ftp的命令,只有这条连接的话是什么文件都传不了的,就算是用“ls”命令来查看文件也不行。

建立了命令的连接以后,服务器端就要建立一条数据的连接。数据的连接又分为主动模式(port)和被动模式(passive)。ftp默认是被动模式,主动和被动之间使用”pass”命令切换。主动模式通过20端口与客户端相连,而被动模式却使用1024以后的端口与客户端相连。由于1024以后的端口是随机分配的,所以在被动模式下我们是不知道服务端是使用什么端口与客户端连接的。也就是说,我们是不知道iptables要开放什么端口。

了解之后我们发现,仅仅在iptables设置开放21端口是不行的。

在/etc/sysconfig/iptables-config里面添加ip_nat_ftp、ip_conntrack、ip_conntrack_ftp模块,如下:

vi /etc/sysconfig/iptables-config
IPTABLES_MODULES="ip_nat_ftp"
IPTABLES_MODULES="ip_conntrack"
IPTABLES_MODULES="ip_conntrack_ftp"
 

然后重启iptables或者执行如下命令:

modprobe ip_nat_ftp   (加载ftp模块)
lsmod | grepftp    (查看模块是否被加载)

 

之后只需要添加规则

iptables -I INPUT -s 192.168.1.1 -d 192.168.1.200 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -s 192.168.1.1 -d 192.168.1.200 -p tcp --sport 21 -j ACCEPT
 

注意:如果你把OUTPUT 设置成DROP的就要写上

iptables -A OUTPUT -m state --state NEW -p tcp --dport 21 -j ACCEPT

 

最后要记得保存和重启iptables服务

/etc/rc.d/init.d/iptablessave
service iptables restart

这样ftp命令能传输了,也可以利用ftp服务器上传下载文件了。

 

以上是关于iptables下开放ftp连接端口的主要内容,如果未能解决你的问题,请参考以下文章

Centos配置iptables开放ftp服务

iptables开放被动模式FTP服务

iptables之state扩展与开启被动模式ftp

vsftpd服务监听端口修改以及设置iptables

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

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