免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 瀚海书香

CU线上连载讨论一 Linux iptables使用问题和内核Netfilter流程 [复制链接]

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
发表于 2011-07-18 14:10 |显示全部楼层
回复 49# Godbach
如果说只是一条规则来说,应该是差不多的。但是如果具体到应用的话,string就有些力不从心了。
比如匹配baidu.com这个网站下所有的网站,那么你用字符串匹配的话,就无法利用from和to做到非常精确,因为你需要匹配:www.baidu.com,tingting.mp3.baidu.com,tieba.baidu.com,bj.map.baidu.com.....;这个时候你就只能是模糊的匹配baidu.com,而且这个范围就不能做到精确了。如果使用domain模块的话,可以直接定位到dns查询的请求的最后进行匹配baidu.com。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2011-07-18 18:05 |显示全部楼层
回复 51# 瀚海书香
能否直接用命令写出来这两者的区别。
你的这个举例,我没怎么搞清楚。

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
发表于 2011-07-19 11:14 |显示全部楼层
本帖最后由 瀚海书香 于 2011-07-19 14:45 编辑

回复 52# Godbach
还是实例比较好一些:

禁止访问*.baidu.com的域名.

string模块: iptables -m string --hex-string "|05|baidu|03|com" --from 40 --to 200 -j DROP   //由于需要匹配所有以baidu.com结尾的域名,from和to无法非常精确,只能是一个大体的范围

domain模块: iptables -m domain --hex-string ".baidu.com" -j DROP

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2011-07-19 14:28 |显示全部楼层
回复 53# 瀚海书香
这两条规则都用了 string 匹配,是笔误吗

其次,我觉得首先决定匹配效率的是起始位置,这个位置如果指定好了,那么对于可以命中的查找的速度应该和你的实现是一样的吧。
对于不能命中的,那么就看 --to 写多大了。你的 domain 模块是会判断域名的结束位置,对吧。

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
发表于 2011-07-19 14:47 |显示全部楼层
回复 54# Godbach
上面的回复的确是笔误。

domain模块可以直接到最后进行比较是否是“baidu|03|com”
string模块需要进行模糊匹配。

论坛徽章:
54
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
发表于 2011-07-19 19:23 |显示全部楼层
使用iptables来做IP转发,需要配置两块以上的网卡。单块网卡不可以吧。
我曾经用iptables配置过限制,结果一不小心把自己搞到服务器外了。呵呵 。

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
发表于 2011-07-19 21:23 |显示全部楼层
回复 56# renxiao2003


    应该是iptables不支持子接口吧.
    把自己弄到服务器外我也弄过

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
发表于 2011-07-20 08:09 |显示全部楼层
回复 56# renxiao2003
不知道你是怎么配置的啊?

单网卡机器可以配置做网关模式是ip转发的。
比如一个网卡eth0:
ifconfig eth0 192.168.0.1
ifconfig eth0:1 202.102.xxx.xxx
通过iptables的snat可以实现对内部192.168.0.0/24的ip数据包转发的。

论坛徽章:
6
丑牛
日期:2013-09-17 00:18:40未羊
日期:2013-10-31 12:10:47午马
日期:2013-12-07 01:58:50水瓶座
日期:2013-12-24 22:43:12水瓶座
日期:2014-03-15 21:12:13操作系统版块每日发帖之星
日期:2016-08-07 06:20:00
发表于 2011-07-20 11:03 |显示全部楼层
使用iptables来做IP转发,需要配置两块以上的网卡。单块网卡不可以吧。
我曾经用iptables配置过限制,结果 ...
renxiao2003 发表于 2011-07-19 19:23


这问题我也多次遇到,后来采用如下方法解决,特推荐给广大的cuer们:

      防火墙初始化前,可以配置一计划任务crontab,每5分钟运行一次,即*/5 * * * * root /bin/sh /root/firestop.sh,firestop.sh内容为: service iptables stop;这样即使你的脚本存在错误设置(或丢失的)规则时,也不至于将你锁在计算机外而无法返回与计算机的连接,让你放心大胆的调试你的脚本,同学们可参考学习下,这毕竟是生产环境下逼出来的办法~

评分

参与人数 1可用积分 +6 收起 理由
Godbach + 6 感谢分享

查看全部评分

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2011-07-20 11:35 |显示全部楼层
回复 55# 瀚海书香
嗯,我粗略的看了一下你的实现,明白了你的匹配算法。

不过,通过 strlen 来判断域名的长度,还是多少有一些风险的,如果攻击者不给你 '\0' 的话,你这个 strlen 的结果会是多少的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会

【架构革新 高效可控】2020年12月21日-23日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP