DDOS原理以及一些基本的DDOS防护抵御方法

  • A+
所属分类:系统运维 网络技巧
输入正文标题广告代码(非移动端)

在安全领域,DDoS(分布式拒绝服务攻击)简单粗暴,是常见攻击方法。而网站型应用,由于有公开的域名和IP,并使用特定的通信协议(TCP),很容易被发起DDoS攻击。友好速搭上线9个月以来,遭受DDoS攻击超过20次,有些攻击流量规模超过100Gbps。

用来区分DDoS攻击类型的名词很多,比如SYN Flood、UDP Flood、ICMP Flood、CC攻击等。从防护角度看,主要可以分为两种类型:带宽消耗型和资源消耗型。

带宽消耗型攻击
带宽消耗型攻击,目的是封堵系统的网络出入口,大都是基于简单网络协议,比如UDP或ICMP,向指定IP发送大量数据包。这类攻击,只能通过增加网络带宽来防御,如果流量特别大,超过了机房网络的承受范围,那只能使用第三方的流量清洗服务,例如安全宝、腾讯大禹系统等。

DDOS原理以及一些基本的DDOS防护抵御方法
这类清洗服务,主要提供两类帮助:

域名通过CNAME解析,隐藏应用真实IP
域名解析的IP结果,是防护IP地址,攻击的流量只先到防护的机房,应用的真实IP,只对防护服务商可见。

流量清洗,筛选健康流量发回源站
服务商会通过技术手段,将攻击流量拦截,并筛选出健康流量发给应用。
资源消耗型攻击
资 源消耗型攻击,主要目的是耗尽系统资源,比如SYN Flood,会导致主机建立大量TCP连接,耗尽系统句柄,CC攻击发起大量正常请求,超出业务应用的处理上限。这类攻击的流量大小,与攻击者使用的肉鸡 数量有关。如果流量特别大,也需要使用上面提到的流量清洗服务。如果流量规模不大,可以通过简单的脚本,识别出攻击代理的IP,并进行屏蔽来防御。

网站使用的HTTP或SSL协议,都是基于传输层TCP协议的应用,TCP协议中的状态变化如下:

DDOS原理以及一些基本的DDOS防护抵御方法
可以通过识别不同状态的TCP连接数量,来判断是否攻击IP。

例如,SYN Flood攻击,就是通过建立处于SYN状态的TCP连接,消耗服务器的句柄,遭受这种攻击时,服务器可以查看到,很多TCP连接处于syn-recv状态。

而CC攻击,通常都是向网站发起大量请求,与服务器建立大量TCP连接,状态大都处于established,time-wait,close-wait。

通过 Linux 系统中的ss命令,可以查看各种状态的TCP连接: ss -ntu state syn-recv state established state time-wait 通过查看IP的TCP连接状态和数量,就能判断出这个IP是否用于DDoS攻击。

基于这个思路,针对资源消耗型攻击,我们开发了一个简单的脚本工具:AntiDDoS。在服务器上部署启动后,会定时查看TCP连接,超过指定连接数量的IP,会被加入iptables屏蔽一段时间,并发邮件通知系统管理员。

下载链接:
https://github.com/yeezon/AntiDDoS

iptables简单防护iptables -A FORWARD -p tcp –syn -m limit –limit 1/s –limit-burst 5 -j ACCEPT      #每秒中最多允许5个新连接iptables -A FORWARD -p tcp –tcp-flags SYN,ACK,FIN,RST RST -m limit –limit 1/s -j ACCEPT  #防止各种端口扫描iptables -A FORWARD -p icmp –icmp-type echo-request -m limit –limit 1/s -j ACCEPT     #Ping洪水攻击(Ping of Death
屏蔽一个IP# iptables -I INPUT -s 192.168.0.1 -j DROP
怎么防止别人ping# iptables -A INPUT -p icmp -j DROP
防止同步包洪水(Sync Flood)# iptables -A FORWARD -p tcp –syn -m limit –limit 1/s -j ACCEPT
防止各种端口扫描# iptables -A FORWARD -p tcp –tcp-flags SYN,ACK,FIN,RST RST -m limit –limit 1/s -j ACCEPT
Ping洪水攻击(Ping of Death)#iptables -A FORWARD -p icmp –icmp-type echo-request -m limit –limit 1/s -j ACCEPT
# NMAP FIN/URG/PSH# iptables -A INPUT -i eth0 -p tcp –tcp-flags ALL FIN,URG,PSH -j DROP
输入正文底部广告代码(非移动端)
输入评论上方广告代码(非移动端)

发表评论

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen: