什么是DDoS?
DDoS(Distributed Denial of Service)是“分布式拒绝服务”。拒绝服务的攻击是要阻止合法用户对正常网络资源的访问,从而达成攻击者不可告人的目的。
分布式拒绝服务攻击一旦实施,攻击网络包会从很多DOS攻击源(肉鸡)如洪水般涌向受害主机,从而把合法用户的网络包淹没,导致合法用户没法正常访问到服务器的网络资源。凡是导致合法用户不能正常访问网络服务的行为都是拒绝服务攻击。
常见的DDoS攻击方式
- SYN Flood:经典最有效的DDoS方法,可通杀各种系统的网络服务。
利用TCP协议原理,向受害主机发送大量伪造源IP和源端口的SYN或ACK包,导致受害主机的缓存资源被耗尽或者忙于发送回应包而造成拒绝服务。TCP在建立连接的时候,需要经过3次握手,攻击者可以通过伪造大量的TCP握手请求,耗尽服务端资源。
- HTTP Flood
针对系统的每个web页面或资源或api,用大量肉鸡,发送大量的http Request。这种攻击主要针对存在ASP、JSP、PHP、CGI等脚本程序,并调用Mysql、Oracle等数据库的网站系统设计的。
在受害主机服务器建立正常的tcp连接后,不断地向脚本程序提交查询、列表等大量耗费数据库资源的调用。
- 慢速攻击
在http协议中规定,httpRequest 以 结尾标识客户端发送结束,攻击者打开一个http 1.1的连接,将connection设置为keep-alive,保持和服务器的TCP长连接,始终不发送 ,每隔几分钟写入一些无意义的数据流,拖死机器。
- P2P攻击
攻击者精心制作一个种子,里面包含正确的文件下载,同时也包含攻击目标服务器的IP,这样,当很多人下载的时候,无意中就对受害主机发起了TCP连接。
DDoS的攻击现象判定方法
- SYN类攻击判断
- CPU占用很高
- 网络连接状态 : netstat -na,有大量的SYN_RECEIVED的连接状态
- 网线插上时服务器凝固无法操作,网线拔出或重启机器才可恢复
- CC类攻击判断
- 网站出现Service unavailable提示
- CPU占用率很高
- 网络连接状态 : netstat -na,有大量的ESTABLISHED的连接状态,单个IP高达几十条甚至上百条
- 用户无法访问网站页面或者打开非常缓慢,重启后短期正常,几分钟后又无法访问
- UDP类攻击判断
- 网卡每秒接受大量的数据包
- 网络状态netstat -na,TCP信息正常
- TCP洪水攻击判断:
- CPU占用很高
- netstat -na,有大量的ESTABLISHED连接状态,单个IP高达几十条甚至上百条。
DDoS攻击防御方法
- 过滤不必要的服务和端口:使用工具(Express)在路由器上过滤假IP,只开放服务器的某个端口或在防火墙上做阻止策略。
- 异常流量的清洗过滤:通过DDoS硬件防火墙对异常的的清洗过滤,通过数据包的规则过滤、数据流指纹检测过滤等技术判断外放流量是否正常,将异常流量过滤,可防御800-927万SYN攻击包。
- 分布式集群防御:是防御大规模DDoS攻击最有效办法,在每个节点服务器配置多个IP地址(负载均衡),每个节能能承受不低于10G的DDoS攻击,如果一个节点受攻击无法提供服务,系统将根据优先级设置自动切换另一个节点,并将攻击者的数据包全部返回发送点使攻击源成为瘫痪状态。
- 高防智能DNS解析:(这个暂时还没理解)
CC攻击
利用代理服务器(肉鸡)向受害主机不停发送大量数据包,造成对方服务器资源耗尽,一直到宕机崩溃。这种攻击看不到真实源IP,见不到大量的异常流量,但是服务器无法正常连接。
防御方法:
- 利用session做访问计数器,防止用户对某个页面频繁刷新
- 把网页做成静态页面
- 增强操作系统的TCP/IP栈
- 多站服务器时,严格限制每个站允许的IP连接数和CPU使用时间
- 服务器前端加CDN中转
DDoS攻击测试工具
LOIC、XOIC、 R-U-Dead-Yet、OWASP DOS HTTP POST、DAVOSET