QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2016|回复: 8

iptables实现类似路由器防火墙FTP穿透功能(已解决)

[复制链接]
发表于 2005-1-5 21:54:36 | 显示全部楼层 |阅读模式
我的机子是用ADSL拔号+TP-Link路由器上网的,路由器是带了防火墙的(仅把FTP21端口映射到本机)。为了学习Linux下的iptables配置,所以在主机上也启用iptables。我的防火墙设置目的是:本机开了FTP服务(vsFTP,须被动模式,PASV端口6081:6085),本机上外网不限制,但从外网只能访问本机的FTP。

/etc/sysconfig/iptables文件如下:
*filter
:INPUT DROP
:FORWARD ACCEPT
:OUTPUT ACCEPT
-A INPUT -p udp -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m multiport --dports 21 -m limit --limit 10/s --limit-burst 10 -j ACCEPT
COMMIT

问题是别人无法访问我的FTP,只有加入下面这行才能访问:
-A INPUT -p tcp --dport 6081:6085 -j ACCEPT

我想知道的是为什么iptables一定要加入6081:6085端口才行,而路由器上的防火墙却不必开放(映射)6081:6085端口呢?有什么方法能让iptables也不必开放6081:6085端口吗?谢!
 楼主| 发表于 2005-1-6 12:29:52 | 显示全部楼层
发现一个更奇怪的问题,我用FlashFXP在外网以被动模式连接我的FTP时,发现它试图建立的FTP数据端口不是6081:6085,而是我路由器上的其它端口(随机的,如28765),可能是路由器又智能的把28765端口转接到我的本机6081:6085端口。
可我的路由器28765端口并没做映射呀!?再说外网客户怎么就知道能连28765端口呢?
回复

使用道具 举报

 楼主| 发表于 2005-1-6 13:51:21 | 显示全部楼层
同志们,帮帮忙呀
回复

使用道具 举报

发表于 2005-1-6 15:14:24 | 显示全部楼层
路由器映射的是21端口,但有一点智能判断在里面
tpc/ip协议中ftp比较特殊,有两个通道:命令通道21和数据通道20
在建立链接之初只有命令通道建立了,用21端口,所以没问题;接着进行数据传输时要建立数据通道,这时路由器判断这个数据包属于前面已建立的命令通道的一部分,所以就让它通过并到达了内网的机子。这个就是简单的路由跟踪。
iptables也可以路由跟踪,
研究一下iptables的--state ESTABLISHED,RELATED,你就有答案了。
回复

使用道具 举报

 楼主| 发表于 2005-1-6 15:43:45 | 显示全部楼层
[quote:13c9cc1bfc="xmlcf"]路由器映射的是21端口,但有一点智能判断在里面
tpc/ip协议中ftp比较特殊,有两个通道:命令通道21和数据通道20
在建立链接之初只有命令通道建立了,用21端口,所以没问题;接着进行数据传输时要建立数据通道,这时路由器判断这个数据包属于前面已建立的命令通道的一部分,所以就让它通过并到达了内网的机子。这个就是简单的路由跟踪。
iptables也可以路由跟踪,
研究一下iptables的--state ESTABLISHED,RELATED,你就有答案了。[/quote]
不是吧,我的vsFTPd用的可是被动模式的,不用20端口的。
继续求教!
回复

使用道具 举报

发表于 2005-1-6 17:17:54 | 显示全部楼层
ftp是主动还是被动是由客户端决定的,vsftpd两种方式都支持。一般也不将服务器锁定为单一的方式。
在被动ftp中,客户端用20端口连接vsftpd打开的高端口进行数据传输。
回复

使用道具 举报

 楼主| 发表于 2005-1-6 18:14:40 | 显示全部楼层
[quote:fc2d301740="xmlcf"]ftp是主动还是被动是由客户端决定的,vsftpd两种方式都支持。一般也不将服务器锁定为单一的方式。
在被动ftp中,客户端用20端口连接vsftpd打开的高端口进行数据传输。[/quote]
由于出于安全方面的考虑,所以我是仅采用了被动模式(并且观察FlashFXP也的确是以被动模式连接的)。
主动模式是客户端通过21控制端口把自己的数据连接端口告诉服务器,由服务器向客户发起数据连接,由于我没限制数据出,所以这时能连通是正常的;
但被动模式是服务器通过21控制端口把服务器的PASV端口(我的设为6081-6085)告诉客户,由客户端向服务器发起数据连接,这时对服务器来说是INPUT了,所以iptables要开放6081-6085端口,奇怪的是路由器上的防火墙没开放这些端口也能接通,不解?
回复

使用道具 举报

 楼主| 发表于 2005-1-6 20:24:15 | 显示全部楼层
解决了:编辑/etc/sysconfig/iptables-config,加入下面这行:IPTABLES_MODULES="ip_nat_ftp ip_conntrack_ftp"
我参考了本站“坏东西”网友的解决办法。
回复

使用道具 举报

发表于 2005-1-9 10:11:20 | 显示全部楼层
[code:1]2005年01月09日星期日上午10时04分01秒[root@amazepc root]# iptstate -s -f|g 61.141.156.103
61.141.156.103,4757   202.60.229.155,35077  tcp     ESTABLISHED  119:59:59
61.141.156.103,4728   202.60.229.155,35067  tcp     TIME_WAIT      0:01:14
61.141.156.103,4760   202.60.229.155,35080  tcp     ESTABLISHED  119:59:59
61.141.156.103,4750   202.60.229.155,35068  tcp     ESTABLISHED  119:59:59
61.141.156.103,50365  202.60.229.155,21     tcp     ESTABLISHED  119:59:30
61.141.156.103,50370  202.60.229.155,22     tcp     ESTABLISHED  119:59:59
61.141.156.103,50369  202.60.229.155,21     tcp     ESTABLISHED  119:59:30
61.141.156.103,50366  202.60.229.155,21     tcp     ESTABLISHED  119:59:30
61.141.156.103,50360  202.60.229.155,21     tcp     ESTABLISHED  119:59:16
61.141.156.103,50363  202.60.229.155,21     tcp     ESTABLISHED  119:59:30
61.141.156.103,4758   202.60.229.155,35078  tcp     ESTABLISHED  119:59:59
61.141.156.103,4759   202.60.229.155,35079  tcp     ESTABLISHED  119:59:59
61.141.156.103,4754   202.60.229.155,35074  tcp     ESTABLISHED  119:59:59
61.141.156.103,50362  202.60.229.155,21     tcp     ESTABLISHED  119:59:30
61.141.156.103,50368  202.60.229.155,21     tcp     ESTABLISHED  119:59:30
61.141.156.103,4755   202.60.229.155,35073  tcp     ESTABLISHED  119:59:59
61.141.156.103,4752   202.60.229.155,35072  tcp     ESTABLISHED  119:59:59
61.141.156.103,50367  202.60.229.155,21     tcp     ESTABLISHED  119:59:30
61.141.156.103,50361  202.60.229.155,21     tcp     ESTABLISHED  119:59:30
61.141.156.103,4756   202.60.229.155,35076  tcp     ESTABLISHED  119:59:59
61.141.156.103,4753   202.60.229.155,35075  tcp     ESTABLISHED  119:59:59
61.141.156.103,50364  202.60.229.155,21     tcp     ESTABLISHED  119:59:30
61.141.156.103,50842  202.60.229.155,143    tcp     ESTABLISHED  119:48:02
2005年01月09日星期日上午10时04分12秒[root@amazepc root]#[/code:1]

上面是被动连接的端口明细。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 17:26 , Processed in 0.078118 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表