[转]FreeBSD 6.0 抗DOS

系统使用FreeBSD6.0

原理:
1、打开Polling防止DOS时大量的发包使网卡中断过多而拖垮系统(CPU)。
2、使用PF 防火墙防止SynFlood等Flood,以及防止不必要的包进入系统。
功效:
对DOS有较好的效果,DDOS也有一定的效果,慢速DDOS效果不大。
但是对DOS和DDOS带宽耗尽没有很好的防御(PS:其他方法也对此也无可奈何)。
网卡推荐使用Intel的intel pro 100(fxp)或intel pro 1000(em),因为FreeBSD对intel的网卡支持比较好。

配置内核时加上

  1. options         DEVICE_POLLING #打开 Polling
  2. options HZ=1000
  3.  
  4. device pf  #编译上PF防火墙模块
  5. device pflog

以下以WEB服务器为例,网卡为em0(intel pro 1000)

1、PF防火墙配置

  1. ext_if="em0"
  2.  
  3. table {}
  4. scrub in all
  5. block in  on $ext_if #默认拒绝
  6. pass out all
  7. pass quick on lo
  8. block in  on $ext_if
  9. block in quick on $ext_if from to any
  10. pass  in quick  on $ext_if proto tcp from any to $ext_if port 80  \
  11.         flags S/SA modulate state (source-track rule, max-src-conn-rate 10/1,max-src-states 30, overload flush, src.track 1)
  12.          #同一原地址最大连接数30个,当每秒钟建立连接数超过10个/秒(Syn包)加入黑名单并断开所有这个ip的连接。
  13. pass in quick on $ext_if proto udp from any port 53 to $ext_if  keep state #打开DNS
  14. pass out quick  on $ext_if proto { tcp, udp} all keep state  #PASS自身出去的包

2、优化网络参数:

  1. net.isr.direct=1 #必要时打开
  2. net.inet.tcp.sendspace=65536
  3. net.inet.udp.recvspace=65536
  4. net.inet.udp.maxdgram=65536
  5. net.inet.icmp.drop_redirect=1
  6. net.inet.icmp.log_redirect=0
  7. net.inet.ip.redirect=0
  8. net.inet6.ip6.redirect=0
  9. net.inet.tcp.msl=7500

3、攻击时打开polling

  1. #ifconfig em0 polling

一条评论 »

  1. jack said,

    四月 20, 2008 at 9:36 下午

    应该把常用的 SSH FTP端口也加上哦

RSS feed for comments on this post · TrackBack URL

发表评论

You must be logged in to post a comment.