防范DDoS 攻击
到目前为止,针对分布式拒绝服务攻击(DDoS)的防御依然没有特别直接有效的方法,因为这种攻击会利用TCP/IP 协议的漏洞。除非您完全不使用TCP/IP,才有可能抵御DDoS 攻击。
但面对DDoS,我们也不能因此而“逆来顺受”, 还是应该考虑其他办法进行必要的防范。
几乎所有的主机平台都有抵御DDoS 的设置。以Linux 操作系统为例,其防范技术主要分为3 大类:第一类是通过合理配置系统,达到资源最优化和利用最大化;第二类是通过加固TCP/IP 协议栈来防范DDoS ;第三类是通过防火墙、路由器等过滤网关,有效地探测攻击类型并阻击攻击。
必须明确的是,DDoS 攻击在TCP 连接原理上是合法的,除非TCP 协议重新设计,明确定义DDoS 和其他正常请求有何不同,否则不可能完全阻止DDoS 的攻击,我们所做的只是尽可能地减轻DDoS 攻击所带来的危害。
1. 服务器设置
除了防范他人攻击外,也要提防不要成为被人利用的对象。可以通过以下方法来实现:
(1)安全配置系统,杜绝攻击漏洞,及时安装系统补丁程序。
(3)有规律地查看日志。
(4)利用相关工具检查文件完整性。
2、加固TCP / IP 协议栈
这里通过修改TCP / IP 参数来控制连接资源的利用。
(1)SYN Cookies 技术
限制同时打开的SYN半连接数。以RedHat Linux 为例,通过在启动环境中设置以下命令来启用SYN Cookies :
#echo 1> /proc/sys/net/ipv4/tcp_
syncookies
也可以通过修改其他参数, 或者使用/proc/sys/net/ipv4/netfilter/ip_contrack_* 来实现。
(2)增加最大半连接数
加大未连接队列空间。Linux 使用变量tcp-max-syn_backlog 来定义backlog 队列容纳的最大半连接数。在RedHat Linux 中,该变量的默认值为256,在RHEL AS Linux中则是1024。该数值是远远不够的,一次强度不大的SYN 攻击就能使半连接队列占满。通过以下命令可以修改此变量值:
#sysctl -W net.ipv4.tcp_max_syn_
backlog=“2048”
(3)缩短SYN 半连接的Timeout 时间
RedHat Linux 使用变量tcP_synack_retries 定义重传次数,其默认值是5,总超时时间需要3 分钟。
#sysctl -W net.ipv4.tcp_ synack_
retries=“0”
(4)及时更新系统补丁
可以添加如下脚本到Linux 的/etc/sysctl.conf 文件,重启后会自动启动,达到防御DDoS 的效果。
## add by geminis for syn crack
net.ipv4.tcp_syncookied=1
net.ipv4.tcp_max_syn_backlog=“2048”
net.ipv4.tcp_synack_ retries=“1”
3. 防火墙防御
在网关超时设置处,将防火墙SYN 转发超时参数设置为小于服务器的Timeout。如果客户端在防火墙的Timeout时间内无响应,防火墙将发送终止RST 消息给服务器,使服务器从队列中删除该半连接,节省开销。
需要注意的是,网关超时参数设置不宜过小也不宜过大,超时参数设置过小会影响,正常的通信,设置过大则会影响防范SYN drome 攻击的效果,必须根据所处的网络环境来设置参数。
(1)SYN 网关:SYN 网关的原理是代替客户端发送ACK 消息,然后转发数据。SYN 网关收到服务器的SYN/ACK 包后,将该包转发给客户端,同时以客户端的名义给服务器发ACK 确认包。此时,服务器由半连接状态进入连接状态。当客户端确认包到达时,如果有数据则转发,否则丢弃。一般服务器所能承受的连接数量比半连接数量要大得多,所以这种方法能有效地减轻对服务器的攻击。
(责任编辑:)