iptables和FTP的pasv模式

Linux里面自带的防火墙iptables一般就是端口开启,对于FTP协议里的PASV(被动)模式,有2次连接,这第二次连接似乎和第一次的21端口没啥关联,21端口连接的是通信控制,第二次连接的才是数据通信,比如说,login进去后,无法看见列表就是这个原因。这第二次连接的端口是动态的,无法配置iptables。如果使用FTP服务软件的配置,强制固定数据端口,然后在iptables里面加上,就显得非常低能。我们知道智能防火墙是可以跟踪这个动态端口的。iptables会不会智能一些?

FTP协议里的Passive模式(略写为PASV被动模式)和主动模式的区别。

第一步,由客户端连接到服务器,一般默认使用21端口,这个端口用来传送控制信息。进行用户名和密码身份验证。这一步无论是主动和被动都是一样的。

第二部,主动模式:从服务器端发起数据通信请求到客户端,以源端口20,目的端口随机。这种情况,服务器端对于防火墙的配置到时不需要智能对应了,但是客户端就麻烦了,特别是客户端在NAT后的情况,往往无法顺利接通。这种方式基本上已经被淘汰了,但是微软的ftp命令还是采用主动模式,好在用的也不多。

被动模式:身份验证后,可能使用pwd命令,显示自己的位置,这个命令依然使用控制端口21完成,但是当需要进行文件夹列表的时候,因为这个数据量比较大,就要通过数据端口传送了。这时候客户端就会发出PASV命令,告知服务器使用被动模式以及一串数字,例如:(172,26,136,8,126,17),前面的4段,172.26.136.8,是服务器的IP地址,后面的126和17通过运算就是数据动态连接的端口,运算方法是126*256+17=32273。

这样来说,只要掌握这个规律,动态开启防火墙的端口也不是什么难事。

监视PASV命令的工作,iptables无法完成,必须要加载组件。

lsmod | grep ftp

看看是否已经加载,一般不通,肯定是没有加载。

有很多地方非常笼统的加载

modprobe ip_nat_ftp

这样是不精确的。可以是可以,但是加载多了,其实只需要加载nf_conntrack_ftp,就可以。

你可以手动加载

modprobe nf_conntrack_ftp

但是重启服务器就没了,这样对于维护者来说是很麻烦的。有的人说用自动执行命令,这样就落了下乘了。因为iptables本身就有加载的项目。

编辑 /etc/sysconfig/iptables-config

IPTABLES_MODULES="nf_conntrack_ftp"

默认是IPTABLES_MODULES="",内容是空的。

最容易忽视又关键的说完了,下面当然是编写iptables的过滤条目了。

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

就这么简单啊,要追加一定要在最后一条禁止所有的前面哦。所以最好显示一下列表号

iptables -L -n -v --line-numbers

然后用

iptables -I INPUT 5 -m state --state NEW -p tcp --dport 21 -j ACCEPT

插到最后一条前面。

等等,很多地方肯定说要追加

iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

的说法,其实大可不必了,除非你删除了所有的条目,一般默认第一条就是

1    ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED

关键是 RELATED,关系,就是从ip_conntrack_ftp那儿监视来的动态端口这个关系。ESTABLISHED是TCP3次握手里的ack和syn位的确认,和RELATED是没关系。

本例在Linux kernel2.6.32-573.7.1.el6.x86_64通过测试,也是centos6.7

时间: 2024-10-13 16:13:38

iptables和FTP的pasv模式的相关文章

Iptables开放FTP(主/被)模式端口

FTP是File Transfer Protocol(文件传输协议),它有两种工作模式,分别是主动模式(post)和被动模式(passive) PORT(主动模式) FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,客户端随机开放一个端口(1024以上),发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口:FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据. PASV(被

ftp的port和pasv模式比较

一.ftp的port和pasv模式的工作方式        FTP使用2个TCP端口,首先是建立一个命令端口(控制端口),然后再产生一个数据端口.国内很多教科书都讲ftp使用21命令端口和20数据端口,这个应该是教书更新太慢的原因吧.实际上FTP分为主动模式和被动模式两种,ftp工作在主动模式使用tcp 21和20两个端口,而工作在被动模式会工作在大于1024随机端口.FTP最权威的参考见RFC 959,有兴趣的朋友可以仔细阅读ftp://nic.merit.edu/documents/rfc/

Sftp和ftp 区别、工作原理等(服务器被动就是被动模式,PORT模式建立数据传输通道是由服务器端发起的,在PASV模式中,数据传输的通道的建立是由FTP客户端发起的)good

Sftp和ftp over ssh2的区别 最近使用SecureFx,涉及了两个不同的安全文件传输协议: -sftp -ftp over SSH2 这两种协议是不同的.sftp是ssh内含的协议,只要sshd服务器启动了,它就可用,它本身不需要ftp服务器启动.ftp over SSH2则象一个二传手. 1.SFTP的工作模式: 图1显示了SFTP的工作模式,它是作为SSH2的一个子服务工作的. 图 1 SFTP工作模式 2.FTP over SSH2 此协议还是基于ftp协议的.在此协议中SS

Serv-U FTP之PASV和PORT模式

  FTP的连接一般是有两个连接的,一个是客户程和服务器传输命令的,另一个是数据传送的连接.FTP服务程序一般会支持两种不同的模式,一种是Port模式,一种是Passive模式(Pasv Mode),我先说说这两种不同模式连接方式的分别.先假设客户端为C,服务端为S.Port模式:当客户端C向服务端S连接后,使用的是Port模式,那么客户端C会发送一条命令告诉服务端S(客户端C在本地打开了一个端口N在等着你进行数据连接),当服务端S收到这个Port命令后 就会向客户端打开的那个端口N进行连接,这

FTP的port模式和pasv模式

FTP具有两种模式,分别是port模式(也叫主动模式)和pasv模式(也叫被动模式),怎么来理解这两种模式呢?我来打个比喻吧,在主动模式下:客户端给服务器端的21端口发命令说,我要下载什么什么,并且还会说我已经打开了自己的某个端口,你就从这里把东西给我吧,服务器知道后就会通过另外一个数据端口把东西传给客户端,这就是主动模式,可以理解为服务端主动给客户端传输文件;在被动模式下:客户端给服务器端的21端口发命令说,我要下载什么什么,服务器端知道后,就打开一个端口,然后告诉客户端,我已经打开了某某端口

linux下ftp服务各种模式和ca证书认证的搭建

Red hat 下vsftpd的搭建                            作者  浩浩哥来了 首先/etc/init.d/vsftpd   restart 查看在当前版本是不是存在vsftpd服务 如果路径无法补全,这需要手动安装. Yum install vsftpd* -y /etc/init.d/vsftpd  restart 将服务启动起来 Ifconfig 查看当前主机的ip地址 在windows中输入ftp://red hat 中的ip地址 匿名用户登录 Cd /v

Ubuntu下iptables开放ftp端口的一个坑:227 Entering Passive Mode

事情是这样的,我搭的VSFTP服务器在一次重启后竟然外界连不上了,进去系统查看发现服务在正常运行着:内部也可登上排查发现是防火墙iptables的坑. 原来这个iptables规则是临时的,需要写入并save,不然重启后规则就清空了,造成外界无法登陆. 先说解决办法: iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -A OUTPUT -p tcp --dport 20 -j ACCEPT iptables -A OUTPUT -p

FTP的主动模式和被动模式

摘自http://blog.csdn.net/love_gaohz/article/details/50723164 http://my.oschina.net/binny/blog/17469 FTP的主动模式和被动模式 主动模式:客户端通过控制链接发送PORT <address>(IP 地址和两字节的端口 ID)给服务器,然后bind之后对发送的端口进行监听.服务器收到后通过端口20和客户端建链,发送数据. 被动模式:客户端通过发送PASV 请求服务器等待链接.服务器返回.这意味着在服务器

FTP的主动模式与被动模式

1.FTP的主动模式与被动模式 FTP服务器使用20和21两个网络端口与FTP客户端进行通信. FTP服务器的21端口用于传输FTP的控制命令,20端口用于传输文件数据. 1.1FTP主动模式: FTP客户端向服务器的FTP控制端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路;当需要传送数据时,客户端在命令链路上用PORT的命令告诉服务器我开放了某端口,你过来连接我.于是服务器从20端口向客户端的该端口发送连接请求,建立一条数据链路来传送数据.在数据链路建立过程中是服务器主动请求