DDOS防护抵御方法 不指定

kangyang , 2015/08/20 09:55 , 黑客攻防 , 评论(0) , 阅读(5780) , Via 本站原创 | |
在安全领域,DDoS(分布式拒绝服务攻击)简单粗暴,是常见攻击方法。而网站型应用,由于有公开的域名和IP,并使用特定的通信协议(TCP),很容易被发起DDoS攻击。友好速搭上线9个月以来,遭受DDoS攻击超过20次,有些攻击流量规模超过100Gbps。

用来区分DDoS攻击类型的名词很多,比如SYN Flood、UDP Flood、ICMP Flood、CC攻击等。从防护角度看,主要可以分为两种类型:带宽消耗型和资源消耗型。
带宽消耗型攻击
带宽消耗型攻击,目的是封堵系统的网络出入口,大都是基于简单网络协议,比如UDP或ICMP,向指定IP发送大量数据包。这类攻击,只能通过增加网络带宽来防御,如果流量特别大,超过了机房网络的承受范围,那只能使用第三方的流量清洗服务,例如安全宝、腾讯大禹系统等。
点击在新窗口中浏览此图片
这类清洗服务,主要提供两类帮助:

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

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

网站使用的HTTP或SSL协议,都是基于传输层TCP协议的应用,TCP协议中的状态变化如下:
点击在新窗口中浏览此图片
可以通过识别不同状态的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


发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]