|
蓝森林 http://www.lslnet.com 2006年4月6日 20:18
(转)小记配合网卡polling使用FB6.0下pf抗拒绝服务
环境 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的指南(感谢小龙女回答很多很多问题)
|
看起来不错啊,ipv6必须要吗? |
可以试试效果如何:lol: |
[quote]原帖由 [i]剑心通明[/i] 于 2006-1-10 19:58 发表
看起来不错啊,ipv6必须要吗? [/quote]
测试下来必须要 |
[quote]原帖由 [i]hongzjx[/i] 于 2006-1-11 10:09 发表
可以试试效果如何:lol: [/quote]
14wpps攻击量,每5个ping包剩1个,普通的1w-3w没问题 |
[quote]原帖由 [i]coolcmm[/i] 于 2006-1-11 11:08 发表
14wpps攻击量,每5个ping包剩1个,普通的1w-3w没问题 [/quote]
在这个流量下,网卡还能提供正常的服务吗 |
服务当然也是20%的连通率拉!!! |
是什么方式的攻击?按最小单位包长度算
140k pps * 64 * 8 /1024 =70Mbits/s
难道不是synflood?pf能抵抗到这种程度?这跟我以前的测试结果不太符合。 |
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。 |
| |