免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1747 | 回复: 8
打印 上一主题 下一主题

(原创)小记配合网卡polling使用FB6.0下pf抗拒绝服务 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-01-10 18:23 |只看该作者 |倒序浏览
环境 FB6.0 stable   
普通服务器 P2.4 1G内存 一块xl0 一块rl0 帮一个朋友装一台FB抗拒绝服务


什么是polling模式
本来网卡工作模式:需要的时候请求中断。但在拒绝服务攻击情况下,包数太多,就不太可行,polling模式就是让cpu定期去取网卡内存中的数据包。虽然平时看上去这种方法比较效率低,但在拒绝服务攻击情况下就比较好用。

打开网卡的polling模式
内核  options DEVICE_POLLING

polling支持网卡类型
dc(4), em(4), fwe(4), fwip(4), fxp(4), ixgb(4),
nge(4), re(4), rl(4), sf(4), sis(4), ste(4), vge(4), vr(4), and xl(4)

polling在sysctl中参数的含义
kern.polling.enable=1           打开polling模式
kern.polling.burst                  每个时间片,系统在每个网卡可以抓的最多的包值,不可以改的值,根据其他值系统自己算的
kern.polling.burst_max          每次取多少内存中的包默认150,是 一个参数,和内核里面的HZ相乘(HZ * burst_max)就是每秒cpu极限可以抓的包量   默认HZ=1000
kern.polling.each_burst         没搞懂用处,默认5 好像用处不大
kern.polling.idle_poll=1          man 中推荐打开选项
kern.polling.reg_frac             多久检测一次网卡错误 默认20
kern.polling.user_frac=10      cpu预留给userland  tasks的量 默认50, 做防火墙推荐少留一点
kern.polling.handlers              有多少网卡注册了polling服务  不用改

注:HZ的含义以及burst_max的关系,HZ就是赫兹,时间的倒数,就是多久cpu去取一次网卡内存中的包
HZ越大,CPU去取的时间间隔越短,burst_max就是每次取多少内存中的包。
这个参数需要自行测试,HZ越大,在大流量下用top看中断就越多
感觉范围在500-2000比较合适,再大就。。。。。

在内核中为:options HZ=500   (我设置500,burst_max设置150,可保证我的服务器稳定和抗攻击能力比较好)  


pf部分
内核(编进去总是快一点)
device pf
device pflog
device pfsync

options         ALTQ
options         ALTQ_CBQ        # Class Bases Queuing (CBQ)
options         ALTQ_RED        # Random Early Detection (RED)
options         ALTQ_RIO        # RED In/Out
options         ALTQ_HFSC       # Hierarchical Packet Scheduler (HFSC)
options         ALTQ_PRIQ       # Priority Queuing (PRIQ)
options         ALTQ_NOPCC      # Required for SMP build
在/etc/rc.conf中还有若干选项 要打开

特别注意,编译内核一定要  :options         INET6  可用
否则pf不可用,启动报
Apr 25 20:49:29 ds9 kernel: link_elf: symbol in6_cksum undefined
Apr 26 20:39:58 ds9 kernel: link_elf: symbol in6_cksum undefined
Apr 27 21:41:22 ds9 kernel: link_elf: symbol in6_cksum undefined

其他部分参看pf说明

注:也不是什么pf详细指南什么的,只是拿出自己的一点心得与大家分享,肯定有错,请大家指正,也希望以后可以出一个pf的指南(感谢小龙女回答很多很多问题)

[ 本帖最后由 coolcmm 于 2006-1-10 18:25 编辑 ]

论坛徽章:
2
丑牛
日期:2013-09-29 09:47:222015七夕节徽章
日期:2015-08-21 11:06:17
2 [报告]
发表于 2006-01-10 19:58 |只看该作者
看起来不错啊,ipv6必须要吗?

论坛徽章:
0
3 [报告]
发表于 2006-01-11 10:09 |只看该作者
可以试试效果如何

论坛徽章:
0
4 [报告]
发表于 2006-01-11 11:06 |只看该作者
原帖由 剑心通明 于 2006-1-10 19:58 发表
看起来不错啊,ipv6必须要吗?


测试下来必须要

论坛徽章:
0
5 [报告]
发表于 2006-01-11 11:08 |只看该作者
原帖由 hongzjx 于 2006-1-11 10:09 发表
可以试试效果如何



14wpps攻击量,每5个ping包剩1个,普通的1w-3w没问题

论坛徽章:
0
6 [报告]
发表于 2006-01-11 13:06 |只看该作者
原帖由 coolcmm 于 2006-1-11 11:08 发表



14wpps攻击量,每5个ping包剩1个,普通的1w-3w没问题


在这个流量下,网卡还能提供正常的服务吗

论坛徽章:
0
7 [报告]
发表于 2006-01-11 15:21 |只看该作者
服务当然也是20%的连通率拉!!!

论坛徽章:
0
8 [报告]
发表于 2006-01-11 17:31 |只看该作者
是什么方式的攻击?按最小单位包长度算
140k pps * 64 * 8 /1024 =70Mbits/s
难道不是synflood?pf能抵抗到这种程度?这跟我以前的测试结果不太符合。

论坛徽章:
0
9 [报告]
发表于 2006-01-13 10:55 |只看该作者
inet6并不是必须的,参见使用手册

25.4.1 启用 PF

  PF 作为 FreeBSD 5.3 和更高版本基本系统安装的一部分,作为一个可以动态加载的模块出现。 如果在 rc.conf 中配置了 pf_enable="YES" 则系统会自动加载对应的内核模块。可加载内核模块在构建时启用了 pflog(4)。

    注意: 这个模块假定 options INET 和 device bpf 是存在的。 除非编译时指定了 NOINET6 (例如在 make.conf(5) 中) 则还需要 options INET6。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP