vsftpd主动,被动防火墙设置

说明:
本篇主要记录了vsftpd 主动,被动连接iptables设置的过程。从主动,被动的原理来说明。
期间参考了鸟哥关于vsftpd的教程,真的非常棒,推荐大家看下。

实现:
一. ftp主动连接原理及iptables规则:

1.建立命令通道的联机
如上图一所示,客户端会随机取一个大于 1024 以上的埠口 (port AA) 来与 FTP 服务器端的 port 21 达成联机, 这个过程当然需要三向交握了!达成联机后客户端便可以透过这个联机来对 FTP 服务器下达指令, 包括查询档名、下载、上传等等指令都是利用这个通道来下达的;

2.通知 FTP 服务器端使用 active 且告知连接的埠号
FTP 服务器的 21 埠号主要用在命令的下达,但是当牵涉到数据流时,就不是使用这个联机了。 客户端在需要数据的情况下,会告知服务器端要用什么方式来联机,如果是主动式 (active) 联机时, 客户端会先随机启用一个埠口 (图一当中的 port BB) ,且透过命令通道告知 FTP 服务器这两个信息,并等待 FTP 服务器的联机;

3.FTP 服务器『主动』向客户端联机
FTP 服务器由命令通道了解客户端的需求后,会主动的由 20 这个埠号向客户端的 port BB 联机, 这个联机当然也会经过三向交握啦!此时 FTP 的客户端与服务器端共会建立两条联机,分别用在命令的下达与数据的传递。 而预设 FTP 服务器端使用的主动联机埠号就是 port 20 啰!
如此一来则成功的建立起『命令』与『数据传输』两个信道!不过,要注意的是, 『数据传输信道』是在有数据传输的行为时才会建立的通道喔!并不是一开始连接到 FTP 服务器就立刻建立的通道呢!留意一下啰!

//因此,得到了如下iptables设置
iptables -A INPUT -p tcp --dport 21  -m state --state NEW -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20  -m state --state NEW -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

 

二. ftp被动连接原理及iptables规则:

1.建立命令通道:
同样的需要建立命令通道,透过三向交握就可以建立起这个通道了。

2.发出 PASV 的联机要求:
当有使用数据信道的指令时,客户端可透过命令通道发出 PASV 的被动式联机要求 (Passive 的缩写), 并等待服务器的回应;

3.FTP 服务器启动数据端口口,并通知客户端联机:
如果你的 FTP 服务器是能够处理被动式联机的,此时 FTP 服务器会先启动一个埠口在监听。 这个端口口号码可能是随机的,也可以自定义某一范围的埠口,端看你的 FTP 服务器软件而定。 然后你的 FTP 服务器会透过命令通道告知客户端该已经启动的埠口 (图中的 port PASV), 并等待客户端的联机。

4.客户端随机取用大于 1024 的埠口进行连接:
然后你的客户端会随机取用一个大于 1024 的端口号来对主机的 port PASV 联机。 如果一切都顺利的话,那么你的 FTP 数据就可以透过 port BB 及 port PASV 来传送了。
发现上面的不同点了吗?被动式 FTP 数据信道的联机方向是由客户端向主机端联机的喔! 如此一来,在 NAT 主机内部的客户端主机就可以顺利的连接上 FTP Server 了!但是,万一 FTP 主机也是在 NAT 后端那怎么办…..呵呵!那可就糗了吧~ @_@这里就牵涉到更深入的 DMZ 技巧了,我们这里暂不介绍这些深入的技巧,先理解一下这些特殊的联机方向, 这将有助于您未来服务器架设时候的考虑因素喔!

此外,不晓得您有无发现,透过 PASV 模式,服务器在没有特别设定的情况下,会随机选取大于 1024 的埠口来提供客户端连接之用。那么万一主机启用的端口口被搞鬼怎么办?而且, 如此一来也很难追踪来自入侵者攻击的登录信息啊!所以,这个时候我们可以透过 passive ports 的功能来『限定』主机启用的 port number 喔!

iptables -A INPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 30000:30999 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

 

三. ftp主动,被动iptables规则

iptables -A INPUT -p tcp --dport 21  -m state --state NEW -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 30000:30999 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20  -m state --state NEW -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

 

附录:
暂空

发表评论

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