免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: love4life
打印 上一主题 下一主题

[网络管理] 如何利用iptables指定内网某些ip地址可以上网??? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2005-08-24 22:54 |只看该作者

如何利用iptables指定内网某些ip地址可以上网???

以下是cisco的例子,192.168.18.0/24是总部网络,any是其分支机构,那么
access-list 100 permit tcp any 192.168.18.0 0.0.0.255 gt 1023 established
表明允许其分支机构对总部网络发起连接的返回报文,这些返回报文的源地址是其分支机构的IP,目的地址是192.168.18.0/24.但是连接是192.168.18.0发起的

例如:某个企业(如图)总部在网络上为其分支机构提供的应用主要有:⑴远程登录访问(telnet: TCP port 23)⑵发送接收电子邮件(smtp:TCP port 25,pop3:TCP port 110)⑶WWW(http:TCP port 80),而总部可以任意访问他的分支机构,


那么他的路由器的访问列表定义如下:


access-list 100 permit tcp any 192.168.18.0 0.0.0.255 eq 23
access-list 100 permit tcp any 192.168.18.0 0.0.0.255 eq 25
access-list 100 permit tcp any 192.168.18.0 0.0.0.255 eq 110
access-list 100 permit tcp any 192.168.18.0 0.0.0.255 eq 80
access-list 100 permit tcp any any established
……
interface serial 0
ip access-group 100 in
由于路由器对流经Serial 0 的TCP报文均按照access-list 访问列表的内容顺序进行检测,这无疑将大大加重路由器CPU的负担,因此,建立访问列表一段时间后,可使用命令"show access-list 100"检查每项access-list 后面括号中TCP报文的matched数,根据matched数由大到小的顺序重新排列访问列表每个access-list的顺序,这样可以减少报文在访问列表中不必要的检测,减少特定报文查找访问列表的时间,降低路由器CPU的负担。
一定注意到access-list 100 的最末尾使用了关键字"established",它被CISCO路由器访问列表用来允许TCP返回的报文。它检测TCP报文中ACK或RST标志位的存在,如果报文中的ACK或RST位被设置了,则通常表示报文是一个正在进行的会话的一部分,所以,使用关键字"established"是一种判断报文是否为一个已知会话的一部分的简单方法。但是,作为网络黑客可以非常容易地写出一段程序,用来生成这两个标志,并将带有ACK或RST标志位的报文发送出去,而这些报文却并非正在进行的合法会话的一部分。在实践中我们发现TCP返回的报文随机选择的端口号范围为1024~65536(因为Well-Know port的端口范围是1~1023),所以我们可以将含有关键字"established"的访问控制语句改为:

access-list 100 permit tcp any 192.168.18.0 0.0.0.255 gt 1023 established

这就确保了进入企业内部网络的报文,其目的端口号必须大于1023。那么,黑客的攻击报文即使欺骗地使用了ACK和RST位,企图逃脱访问列表项的控制,但是它的端口号必须大于1023,这能使得欺骗性的报文不会对端口号低于1024的网络设备如FTP、DNS、HTTP等服务器造成影响,在一定程度上提高了网络的安全性。

在楼主的例子中
  1. iptables -I FORWARD -s 192.168.0.97 -j DROP
  2. iptables -I FORWARD -s 192.168.0.97 -p tcp --dport 80 -j ACCEPT
  3. iptables -I FORWARD -s 192.168.0.97 -m state --state RELATED,ESTABLISHED -j ACCEPT
复制代码

是通过禁止某些包的IP转发达到限制上网的目的
iptables -I FORWARD -s 192.168.0.97 -m state --state RELATED,ESTABLISHED -j ACCEPT
按我的理解是允许源地址为192.168.0.97连接状态为RELATED,ESTABLISHED的包,但对于状态为ESTABLISHED的包按照cisco的说法是返回包,是192.168.0.97收到连接请求后,192.168.0.97对连接的响应.但192.168.0.97没有被外边访问的需求啊?

论坛徽章:
0
12 [报告]
发表于 2005-08-24 23:22 |只看该作者

如何利用iptables指定内网某些ip地址可以上网???

-I 的意思是插入,默认是插入到规则的最前面
iptables 匹配的时候是从前面向后匹配的,他那样写有点类似华为的“倒序”

论坛徽章:
0
13 [报告]
发表于 2005-08-25 00:11 |只看该作者

如何利用iptables指定内网某些ip地址可以上网???

原帖由 "platinum" 发表:
-I 的意思是插入,默认是插入到规则的最前面
iptables 匹配的时候是从前面向后匹配的,他那样写有点类似华为的“倒序”

哦,这个跟cisco不一样,但也不是难于理解,cisco是插在最后面一条,所以deny all要写在最后,相当于iptables -A,华为跟iptables -I是插在最前面,但这个不会影响到established的流向问题

论坛徽章:
0
14 [报告]
发表于 2005-08-25 01:16 |只看该作者

如何利用iptables指定内网某些ip地址可以上网???

原帖由 "bingosek" 发表:

哦,这个跟cisco不一样,但也不是难于理解,cisco是插在最后面一条,所以deny all要写在最后,相当于iptables -A,华为跟iptables -I是插在最前面,但这个不会影响到established的流向问题

是的
另外一个 iptables 与 cisco 和华为都不同的,就是 “iptables -t 表名 -I 链名 序号 具体规则”
可以指定某条规则插入到某个表某个链的特殊位置,因此 iptables 的规则下发更灵活

论坛徽章:
0
15 [报告]
发表于 2005-08-25 05:25 |只看该作者

如何利用iptables指定内网某些ip地址可以上网???

iptables -I FORWARD -s 192.168.0.97 -j DROP
iptables -I FORWARD -s 192.168.0.97 -p tcp --dport 80 -j ACCEPT
iptables -I FORWARD -s 192.168.0.97 -m state --state RELATED,ESTABLISHED -j ACCEPT

请问这几条规则的IPTABLES执行顺序是什么啊。

论坛徽章:
0
16 [报告]
发表于 2005-08-25 13:00 |只看该作者

如何利用iptables指定内网某些ip地址可以上网???

假如在这台RH9上又是mail server 那不允许上网 但是可以收邮件 怎么操作呢?

论坛徽章:
1
白银圣斗士
日期:2015-11-23 08:33:04
17 [报告]
发表于 2005-08-25 13:25 |只看该作者

如何利用iptables指定内网某些ip地址可以上网???

[quote]原帖由 "ycfei" 发表:
iptables -I FORWARD -s 192.168.0.97 -j DROP
iptables -I FORWARD -s 192.168.0.97 -p tcp --dport 80 -j ACCEPT
iptables -I FORWARD -s 192.168.0.97 -m state --state RELATED,ESTABLISHED -j ACCEPT

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

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP