我要提问奇虎网 > 赏金社区 >
电脑网络 > 查看问题
请高手推荐下服务器防范DDos攻击的方案!
悬赏: 20 金币
提问于2008-05-12 09:45:22 解决时间:2008-05-19 12:20:37
最快我的服务经常遭到别人DDos攻击!:
请高手推荐下服务器防范DDos攻击的方案!
你可以安装硬件防火墙,你要知道对方DOS你的什么端口,如果是不必要开的端口关了就没事了
支持(0)
反对(0)
|
回答于
2008-05-12 09:49:22 | | 2楼 |
DDOS 主要是利用 TCP/IP 协议设计上的失误,只要使用 TCP/IP 通讯协议的设备都存在此问题,但是互联网是基于 TCP/IP 协议的,除非你不上网。抗 DDOS 防火墙也只是维持10到20分钟左右的事情。DDOS 只能尽量避免,没有哪个防火墙能绝对搞定的。
支持(0)
反对(0)
|
回答于
2008-05-12 09:49:56 | | 3楼 |
1如果攻击不影响正常服务,就随便吧。
2如果影响,让服务器集群化,比比看谁有钱。
3要不然你报警吧
支持(0)
反对(0)
|
回答于
2008-05-12 09:50:34 | | 4楼 |
目前网络中有一种攻击让网络管理员最为头疼,那就是拒绝服务攻击,简称DOS和DDOS。它是一种滥用资源性的攻击,目的就是利用自身的资源通过一种放大或不对等的方式来达到消耗对方资源的目的。同一时刻很多不同的IP对服务器进行访问造成服务器的服务失效甚至死机。
今天就笔者公司管理服务器的经验为各位读者介绍几个简单有效的防范拒绝服务攻击的方法,虽然不能彻底防护,但在与DDOS的战斗中可以最大限度降低损失。
1、如何发现攻击
在服务器上可以通过CPU使用率和内存利用率简单有效的查看服务器当前负载情况,如果发现服务器突然超负载运作,性能突然降低,这就有可能是受攻击的征兆。不过也可能是正常访问网站人数增加的原因。如何区分这两种情况呢?按照下面两个原则即可确定受到了攻击。
(1)网站的数据流量突然超出平常的十几倍甚至上百倍,而且同时到达网站的数据包分别来自大量不同的IP。
(2)大量到达的数据包(包括TCP包和UDP包)并不是网站服务连接的一部分,往往指向你机器任意的端口。比如你的网站是Web服务器,而数据包却发向你的FTP端口或其它任意的端口。
2、BAN IP地址法
确定自己受到攻击后就可以使用简单的屏蔽IP的方法将DOS攻击化解。对于DOS攻击来说这种方法非常有效,因为DOS往往来自少量IP地址,而且这些IP地址都是虚构的伪装的。在服务器或路由器上屏蔽攻击者IP后就可以有效的防范DOS的攻击。不过对于DDOS来说则比较麻烦,需要我们对IP地址分析,将真正攻击的IP地址屏蔽。
不论是对付DOS还是DDOS都需要我们在服务器上安装相应的防火墙,然后根据防火墙的日志分析来访者的IP,发现访问量大的异常IP段就可以添加相应的规则到防火墙中实施过滤了。
当然直接在服务器上过滤会耗费服务器的一定系统资源,所以目前比较有效的方法是在服务器上通过防火墙日志定位非法IP段,然后将过滤条目添加到路由器上。例如我们发现进行DDOS攻击的非法IP段为211.153.0.0255.255.0.0,而服务器的地址为61.153.5.1。那么可以登录公司核心路由器添加如下语句的访问控制列表进行过滤。
cess-list 108 deny tcp 211.153.0.0 0.0.255.255 61.135.5.1 0.0.0.0,这样就实现了将211.153.0.0 255.255.0.0的非法IP过滤的目的。(如图)
点击看大图
小提示:在访问控制列表中表示子网掩码需要使用反向掩码,也就是说0.0.255.255表示子网掩码为255.255.0.0 。
3、增加SYN缓存法
上面提到的BANIP法虽然可以有效的防止DOS与DDOS的攻击但由于使用了屏蔽IP功能,自然会误将某些正常访问的IP也过滤掉。所以在遇到小型攻击时不建议大家使用上面介绍的BAN IP法。我们可以通过修改SYN缓存的方法防御小型DOS与DDOS的攻击。该方法在笔者所在公司收效显著。
修改SY缓存大小是通过注册表的相关键值完成的。我们将为各位读者介绍在WINDOWS2003和2000中的修改方法。
(1)WIN2003下拒绝访问攻击的防范:
第一步:“开始->运行->输入regedit”进入注册表编辑器。
第二步:找到HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services,在其下的有个SynAttackProtect键值。默认为0将其修改为1可更有效地防御SYN攻击。
小提示:该参数可使TCP调整SYN-ACKS的重新传输。将SynAttackProtect设置为1时,如果系统检测到存在SYN攻击,连接响应的超时时间将更短。
第三步:将HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services下EnableDeadGWDetect键值,将其修改为0。该设置将禁止SYN攻击服务器后强迫服务器修改网关从而使服务暂停。
第四步:将HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services下EnablePMTUDiscovery键值,将其修改为0。这样可以限定攻击者的MTU大小,降低服务器总体负荷。
第五步:将HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services下KeepAliveTime设置为300,000。将NoNameReleaseOnDemand
设置为1。
(2)WIN2000下拒绝访问攻击的防范:
在WIN2000下拒绝访问攻击的防范方法和2003基本相似,只是在设置数值上有些区别。我们做下简单介绍。
第一步:将SynAttackProtect设置为2。
第二步:将EnableDeadGWDetect设置为0。
第三步:将EnablePMTUDiscovery设置为0。
第四步:将KeepAliveTime设置为300000。
第五步:将NoNameReleaseOnDemand设置为1。
支持(0)
反对(0)
|
回答于
2008-05-12 10:36:29 | | 5楼 |
你给的信息太少了,所以不太好一下子给你答案
如果是上些规模的网站,可以考虑采购防DDoS防火墙
如果是小网站,建议找个能抗DDoS攻击的IDC机房,不过可能价钱稍贵些,但是也是值得的。
支持(0)
反对(0)
|
回答于
2008-05-12 11:06:25 | | 6楼 |
防范DDOS攻击并不一定非要用防火墙,首先可以尝试一下通过对服务器进行安全设置来防范DDOS攻击。如果通过对服务器设置不能有效解决,那么就可以考虑购买抗DDOS防火墙了。 其实从操作系统角度来说,本身就藏有很多的功能,只是很多是需要我们慢慢的去挖掘的。这里我给大家简单介绍一下如何在Win2000环境下通过修改注册表,增强系统的抗DoS能力。
请注意,以下的安全设置均通过注册表进行修改,该设置的性能取决于服务器的配置,尤其是CPU的处理能力。如按照如下进行安全设置,采用双路至强2.4G的服务器配置,经过测试,可承受大约1万个包的攻击量。
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
'关闭无效网关的检查。当服务器设置了多个网关,这样在网络不通畅的时候系统会尝试连接
'第二个网关,通过关闭它可以优化网络。
"EnableDeadGWDetect"=dword:00000000
'禁止响应ICMP重定向报文。此类报文有可能用以攻击,所以系统应该拒绝接受ICMP重定向报文。
"EnableICMPRedirects"=dword:00000000
'不允许释放NETBIOS名。当攻击者发出查询服务器NETBIOS名的请求时,可以使服务器禁止响应。
'注意系统必须安装SP2以上
"NoNameReleaseOnDemand"=dword:00000001
'发送验证保持活动数据包。该选项决定TCP间隔多少时间来确定当前连接还处于连接状态,
'不设该值,则系统每隔2小时对TCP是否有闲置连接进行检查,这里设置时间为5分钟。
"KeepAliveTime"=dword:000493e0
'禁止进行最大包长度路径检测。该项值为1时,将自动检测出可以传输的数据包的大小,
'可以用来提高传输效率,如出现故障或安全起见,设项值为0,表示使用固定MTU值576bytes。
"EnablePMTUDiscovery"=dword:00000000
'启动syn攻击保护。缺省项值为0,表示不开启攻击保护,项值为1和2表示启动syn攻击保护,设成2之后
'安全级别更高,对何种状况下认为是攻击,则需要根据下面的TcpMaxHalfOpen和TcpMaxHalfOpenRetried值
'设定的条件来触发启动了。这里需要注意的是,NT4.0必须设为1,设为2后在某种特殊数据包下会导致系统重启。
"SynAttackProtect"=dword:00000002
'同时允许打开的半连接数量。所谓半连接,表示未完整建立的TCP会话,用netstat命令可以看到呈SYN_RCVD状态
'的就是。这里使用微软建议值,服务器设为100,高级服务器设为500。建议可以设稍微小一点。
"TcpMaxHalfOpen"=dword:00000064
'判断是否存在攻击的触发点。这里使用微软建议值,服务器为80,高级服务器为400。
"TcpMaxHalfOpenRetried"=dword:00000050
'设置等待SYN-ACK时间。缺省项值为3,缺省这一过程消耗时间45秒。项值为2,消耗时间为21秒。
'项值为1,消耗时间为9秒。最低可以设为0,表示不等待,消耗时间为3秒。这个值可以根据遭受攻击规模修改。
'微软站点安全推荐为2。
"TcpMaxConnectResponseRetransmissions"=dword:00000001
'设置TCP重传单个数据段的次数。缺省项值为5,缺省这一过程消耗时间240秒。微软站点安全推荐为3。
"TcpMaxDataRetransmissions"=dword:00000003
'设置syn攻击保护的临界点。当可用的backlog变为0时,此参数用于控制syn攻击保护的开启,微软站点安全推荐为5。
"TCPMaxPort*hausted"=dword:00000005
'禁止IP源路由。缺省项值为1,表示不转发源路由包,项值设为0,表示全部转发,设置为2,表示丢弃所有接受的
'源路由包,微软站点安全推荐为2。
"DisableIPSourceRouting"=dword:0000002
'限制处于TIME_WAIT状态的最长时间。缺省为240秒,最低为30秒,最高为300秒。建议设为30秒。
"TcpTimedWaitDelay"=dword:0000001e
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters]
'增大NetBT的连接块增加幅度。缺省为3,范围1-20,数值越大在连接越多时提升性能。每个连接块消耗87个字节。
"BacklogIncrement"=dword:00000003
'最大NetBT的连接快的数目。范围1-40000,这里设置为1000,数值越大在连接越多时允许更多连接。
"MaxConnBackLog"=dword:000003e8
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Afd\Parameters]
'配置激活动态Backlog。对于网络繁忙或者易遭受SYN攻击的系统,建议设置为1,表示允许动态Backlog。
"EnableDynamicBacklog"=dword:00000001
'配置最小动态Backlog。默认项值为0,表示动态Backlog分配的自由连接的最小数目。当自由连接数目
'低于此数目时,将自动的分配自由连接。默认值为0,对于网络繁忙或者易遭受SYN攻击的系统,建议设置为20。
"MinimumDynamicBacklog"=dword:00000014
'最大动态Backlog。表示定义最大"准"连接的数目,主要看内存大小,理论每32M内存最大可以
'增加5000个,这里设为20000。
"MaximumDynamicBacklog"=dword:00002e20
'每次增加的自由连接数据。默认项值为5,表示定义每次增加的自由连接数目。对于网络繁忙或者易遭受SYN攻击
'的系统,建议设置为10。
"DynamicBacklogGrowthDelta"=dword:0000000a
以下部分需要根据实际情况手动修改
'-------------------------------------------------------------------------------------------------
'[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
'启用网卡上的安全过滤
'"EnableSecurityFilters"=dword:00000001
'
'同时打开的TCP连接数,这里可以根据情况进行控制。
'"TcpNumConnections"=
'
'该参数控制 TCP 报头表的大小限制。在有大量 RAM 的机器上,增加该设置可以提高 SYN 攻击期间的响应性能。
'"TcpMaxSendFree"=
'
'[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{自己的网卡接口}]
'禁止路由发现功能。ICMP路由通告报文可以被用来增加路由表纪录,可以导致攻击,所以禁止路由发现。
"PerformRouterDiscovery "=dword:00000000
支持(0)
反对(0)
|
回答于
2008-05-12 14:05:03 | | 7楼 |
从被攻击的症状来看,这次的攻击大致有以下几种:分布式拒绝服务攻击、Syn-Flood攻击,icmp炸弹(ping of death)等几种。这是通过审查我们站点被攻击后留下的纪录,分析这些记录后得出的初步结论。
要防范拒绝服务攻击,首先要从强化自身做起。
针对目前D.O.S攻击的实施手段,我们预先采取了以下的一些措施:
1.为防止Syn-Flood攻击(Syn-Flood攻击的具体原理参见本站的技术文章),我们对默认安装的系统进行了强化,主要是通过重新编译内核,设定相应的内核参数使得系统强制对超时的Syn请求连接数据包复位,同时通过缩短超时常数和加长等候队列使得系统能迅速处理无效的Syn请求数据包。如果不强制对这些无效的数据包进行清除复位,将大大加重系统的负载,最终将导致系统失去响应。
2.为防止icmp炸弹的攻击,在系统内核中对icmp数据包的流量进行限定允许。并在系统参数中对此限定值调整。以防止系统由此而造成的失去响应。
3.在系统中加装防火墙系统,利用防火墙系统对所有出入的数据包进行过滤。
4.仔细调整服务器的各项参数。根据我们站点访问量大的特点,对Web服务器和Mail服务器进行适度的预加重处理,即通过预先使服务器达到一定的负载,以使得整个系统的负载在访问量变化时不会出现很大的变化,如果出现了很大的变化,很有可能使得服务器崩溃。这和在建筑中广泛采用的预应力技术的原理是一致的。
在完成了对服务器的强化后,还必须使用一些有效的方法和规则来检测和发现拒绝服务攻击,并能在检测到拒绝服务攻击后采取相应的对策。
检测的手段很多,可以通过察看路由器纪录和系统纪录以及站点目前状态来实现。
通常,我们在设计防火墙的时候会预先对某些特殊类型的IP数据包进行过滤(不需要纪录)。这些特殊的IP是不能在Internet网上出现的(无法路由)。而要进行拒绝服务攻击往往最需要这类有来无回的数据包,来隐蔽攻击者的真实地址和身份。而一旦这类地址出现,往往就标志着某种拒绝服务攻击的开始。
这一大类的地址是127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16这四个网段的地址。就我们的防火墙的规则而言,对这三个地址段是完全拒绝任何数据包的: denyall。然后通过检测对这些规则的计数,来判决是否存在某些攻击行为。如当我们发现在我们的计数器中发现如下的情况:
0 0 deny ip from any to 127.0.0.0/8 4552 553302 deny ip from 10.0.0.0/8 to any 0 0 deny ip from any to 10.0.0.0/8 0 0 deny ip from 172.16.0.0/12 to any 0 0 deny ip from any to 172.16.0.0/12 97601 11024404 deny ip from 192.168.0.0/16 to any 0 0 deny ip from any to 192.168.0.0/16我们就可以推断是有人在拒绝服务攻击,当我们利用netstat–an来检测当时的网络连接数目时,我们会发现有大量SYN_RCVD类型的连接:
tcp4 0 0 202.109.114.50.80 203.93.217.52.2317 SYN_RCVD tcp4 0 0 202.109.114.50.80 61.136.54.73.1854 SYN_RCVD这就说明了此时服务器正在遭受Syn-Flood攻击。纪录这类攻击的IP地址是毫无意义的(因为这些IP地址都是在程序中通过改变数据包头而伪造的)。
而对于分布式拒绝服务攻击,由于采用了大流量攻击手法,会造成该网段路由器的阻塞,从而使得该网段内几乎所有的服务器可用的带宽都变得极小,对外造成不能访问的现象。而此时,该网段主干路由器亦承受极大的负载。
而对于ICMP包炸弹这类攻击,则可以通过在防火墙上设置纪录来实现检测。一旦发现在一定的时间内有量的ICMP包涌入,而内核由于ICMP包的流量过载而出现警告,则说明存在此类的攻击行为。
这时,可以从系统所纪录的日志上看到,类似于如下的纪录:
Deny ICMP 202.96.113.53 202.109.114.50 in Deny ICMP 202.96.113.53 202.109.114.50 in Deny ICMP 202.96.113.53 202.109.114.50 in Deny ICMP 202.96.113.53 202.109.114.50 in Deny ICMP 202.96.113.53 202.109.114.50 in在检测到攻击行为后,就应该采取一些措施使得攻击的影响减至最小。
对于分布式攻击,目前还没有非常有效方法来防御,我们所能做的是让ISP对主干路由器进行限流措施来降低攻击所造成的影响。
对于SYN-FLOOD攻击,一方面要在服务器端打Syn-flood的补丁,另一方面需要在该网段的路由器上做些配置的调整。这些调整包括限制Syn半开数据包的流量和个数,在路由器的前端做必要的TCP拦截(目前限于Cisco系列IOS12.0),并在路由器上设定相当严格的定时常数,利用路由器的TCP拦截技术使得只有完成TCP三次握手过程的数据包进入该网段,这样可以有效地保护本网段内的服务器不受此类攻击。同时,在路由器的访问列表里拒绝10.0.0.0/8,172.16.0.0/12,192.168.0.0/16这三个虚拟网段的访问。
对于ICMP攻击可以采取的方法一:在服务器端拒绝所有的ICMP包;方法二:在该网段路由器对ICMP包进行带宽限制,控制其在一定的范围内。
要彻底杜绝拒绝服务攻击,只有追根溯源去找到正在进行攻击的机器和攻击者。要追踪攻击者不是一件很容易的事,一旦其停止了攻击行为,很难将其发现。唯一可行的方法就是在其进行攻击的时候,根据路由器的信息和攻击数据包的特征,采用一级一级回溯的方法来查找其攻击源头。这时需要各级部门的协同配合才能很好得完成。
“绿色兵团”将对此攻击事件发布相关的“绿色兵团安全公告(SA2000-03)”,敬请关注我们的站点:www.isbase.com,同时希望遭受类似攻击的网站能够及时和我们联系,以便解决攻击所带来的严重影响,并且为查出最终源头提供有利数据,为共同创建一个宁静、和平的绿色网络而努力!
支持(0)
反对(0)
1