Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 操作系统 > 其他操作系统 > 基于freebsd5.3下 PF synproxy的DDOS防范方案
【标  题】:基于freebsd5.3下 PF synproxy的DDOS防范方案
【关键字】:freebsd5.3,PF,synproxy,DDOS
【来  源】:http://www.cublog.cn/u/13956/showart.php?id=235787

基于freebsd5.3下 PF synproxy的DDOS防范方案

Your Ad Here
基于freebsd下 PF synproxy的DDOS防范方案

[摘要]
本文讲述了基于freebsd5.3 下PF synproxy的DDOS防范方案,对于中小型企业抵挡每秒3万个包的攻击不失为一种可用方案。

[环境]
防火墙:台式机P4 2G,512内存。 FREEBSD5.3
WEB服务器:笔记本PIII 700 256m, suse linux enterprise server 9
攻击机器:笔记本:PIII 700 256M, WIN2000 SERVER
攻击工具:HGOD v0.4
测试机:笔记本:PIII 700

拓朴:
=====
防火墙:xl0 外网卡:172.16.0.1; sis0 内网卡:192.168.100.1
WEB服务器:eth0 192.168.100.2
攻击机:172.16.0.194
测试机:172.16.0.195

一、编译内核
#cd /usr/src/sys/i386/conf
#cp GENERIC billy-pf
#vi billy-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
#config billy-pf
#cd ../compile/billy-pf
#make depend;make make install
二、编辑启动脚本/etc/rc.conf
pf_enable="YES" # Enable PF (load module if required)
pf_rules="/etc/pf.conf" # rules definition file for pf
pf_flags="" # additional flags for pfctl startup
pflog_enable="YES" # start pflogd(8)
pflog_logfile="/var/log/pflog" # where pflogd should store the logfile
pflog_flags="" # additional flags for pflogd startup

gateway_enable="YES"

三、修改/etc/pf.conf
ext_if="xl0"
int_if="sis0"
internal_net="192.168.100.1/24"
external_addr="172.16.0.1"
web_server="192.168.100.2"
nat on $ext_if from $internal_net to any ->; ($ext_if)
#($ext_if) 括起来的原因:如果你使用DHCP还配置外部地址,不括起来会存在问题。如果你分配的IP地址改变了,NAT仍然会使用旧的IP地址转换出去的数据包。这会导致对外的连接停止工作。为解决这个问题,应该给接口名称加上括号,告诉PF自动更新转换地址。
rdr on $ext_if proto tcp from any to $external_addr/32 port 80 ->; $web_server port 80
#这一行重定向了TCP端口80(web服务器)流量到内部网络地址$web_server。因此,即使$web_server在网关后面的内部网络,外部仍然能够访问它。
pass in on $ext_if proto tcp from any to $web_server port 80 flags S/SA synproxy state
#连到外部地址的80端口,作SYNPROXY,以防DDOS攻击

四、修改192.168.100.2的网关IP为192.168.100.1

五、修改/etc/sysctl.conf
net.inet.ip.forwarding=1
使防火墙进行IP转发

重启

六、测试
攻击前先访问http://172.16.0.1/index.html,正常打开了WEB服务器上的主页
攻击:
往防火墙的外部IP172.16.0.1的80端口发动DDOS攻击。
hgod 172.16.0.1 80
观察WEB服务器192.168.100.2上的80端口连接情况和收到的包数。
统计防火墙上受攻击强度(包/每秒)。
speed.sh
#!/bin/sh
oldval=0
curval=0
while true
do
curval=`netstat -i | grep xl0 | head -1 | awk '{print $5}'
if [ $oldval = 0 ]; then
old=$curval
else
echo `date`" pkg inbound rate on xl0: $(($curval-$oldval)) pps"
oldval=$curval
fi
sleep 1
done
`


七、测试结果

DDOS攻击下,防火墙接收到的包速率为:2.6万-2.8万个包每秒
在PF的保护下,仅DDOS攻击时,WEB服务器没有收到一个包,说明防火墙全挡住了非法包。
去掉SYNPROXY的保护,即最后一条规则时,WEB服务器收到的包速成率与防火墙收到的包相当。访问WEB服务器时被拒绝。
在PF保护下,WEB_server的访问正常。

结论:
基于PF的防DDOS攻击对于每秒3万个包以下的攻击抵挡效果出色。对于更大流量的攻击,有待进一步测试。

进一步的工作:

结合ALTQ中RED算法的连接耖尽攻击防范。
尽管对于非法IP的拦截PF可以大显身手,但对于完整TCP连接的消耖攻击,同样非常重要,下一篇将讲述如何利用RED(Random Early Detection)算法来适当保护合法用户。利用二八原则来区分用户的合法性。在表面上区分不了连接的合法性时,只能作适当的牺牲,牺牲突然前来地访问的用户。

作为保护服务器的不停机运行的第三把利剑,还可结合负载均衡来增强WEB服务器的高可用性.
FreeBSD使用大全----王波(可以下载附件):【上一篇】
博客网站盈利无良方 借助传统模式难见效:【下一篇】
【相关文章】
  • 闲话WPF之二五(WPF中的ControlTemplate [3])
  • 闲话WPF之二四(WPF中的ControlTemplate [2])
  • WPF 关于C#代码实现ControlTemplate
  • 闲话WPF之二三(WPF中的ControlTemplate)
  • 我讨论WPF/E,Orcas,IIS7和MIX的采访录像
  • pfn_pte()
  • 闲话WPF之二二(WPF中的Style)
  • WPF/E - 使用 Transforms 和 Opacity Masks 创建 Reflection 反射效果
  • 用WPF和.NET开发的下一代Yahoo Messenger
  • <原创>PF限制部分机器上网实验
  • 【随机文章】
  • C&C08交换机No.7信令TUP改为ISUP的方案(1)
  • 程式的编辑,编译与测试(EMACS)
  • sql语法中的一个重点
  • JDBC连接Oracle数据库之十大技巧
  • 如何配置ISQLPLUS
  • PP2005 Build 0525 简体中文测试版下载
  • 本本使用的三大纪律八项注意
  • 让傲游(Maxthon)支持讯雷5.0和IDM直接点击下载的方法
  • Moblile Application开发
  • hibernate3的一个bug
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.