当前位置:朝夕网 » 数码科技 » 如何抵御频发的 DDOS 攻击?

如何抵御频发的 DDOS 攻击?

作者 | 阿文责编 | 郭芮2016年5月,不法黑客针对全球范围内的多家银行网站发动了一系列的DDoS攻击。导致约旦、韩国以及摩纳哥等央行网络系统陷入了半小时的瘫痪状态,无法进行正常工作。2016年1

2016年5月,不法黑客针对全球范围内的多家银行网站发动了一系列的DDoS攻击。导致约旦、韩国以及摩纳哥等央行网络系统陷入了半小时的瘫痪状态,无法进行正常工作。

2016年11月,俄罗斯五家主流银行遭遇长达两天的DDoS攻击。来自30个国家2.4万台计算机构成的僵尸网络持续不断发动强大的DDOS攻击。

2017年4月初,江苏省某网络公司服务器频繁遭到DDoS流量攻击,导致挂载在服务器上的多个网站无法正常运营,损失严重。

2018年3月,Github遭受了迄今为止记录的最大的DDoS攻击。攻击者通过公共互联网发送小字节的基于UDP的数据包请求到配置错误的memcached服务器,作为回应,memcached服务器通过向Github发送大量不成比例的响应,形成巨大规模的DDoS攻击。

2019年9月初,北京市公安局网络安全保卫总队以及一个加密种子(如系统启动时间),计算出一个哈希值(SHA1),这个哈希值称为 cookie。

这个 cookie 就被用作序列号,来应答 SYN+ACK 包,并释放连接状态。当客户端发送完三次握手的最后一次 ACK 后,服务器就会再次计算这个哈希值,确认是上次返回的 SYN+ACK 的返回包,才会进入 TCP 的连接状态。因而,开启 SYN Cookies 后,就不需要维护半开连接状态了,进而也就没有了半连接数的限制。

注意开启 TCP syncookies 后,内核选项 net.ipv4.tcp_max_syn_backlog 也就无效了。可以通过下面的方式开启:

$ sysctl -w net.ipv4.tcp_syncookies=1

net.ipv4.tcp_syncookies = 1

优化网络相关的内核参数

当遭遇攻击时,请求数会较大,你可能会看到大量处于TIME. WAIT状态的连接。

linux查看tcp的状态命令:

netstat -nat查看TCP各个状态的数量;

lsof -i:port可以检测到打开套接字的状况;

sar -n SOCK查看tcp创建的连接数;

tcpdump -iany tcp port 6000对tcp端口为6000的进行抓包。

[root@centos ~]

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN

tcp 0 0 192.168.10.58:22 13.136.182.140:23107 TIME_WAIT

tcp 0 48 192.168.10.58:22 13.136.182.140:61282 TIME_WAIT

tcp6 0 0 :::22 :::* LISTEN

tcp6 0 0 ::1:25 :::* LISTEN

TCP状态及其描述:

状态描述
LISTEN 等待来自远程TCP应用程序的请求
SYN_SENT 发送连接请求后等待来自远程端点的确认。TCP第一次握手后客户端所处的状态
SYN-RECEIVED 该端点已经接收到连接请求并发送确认。该端点正在等待最终确认。TCP第二次握手后服务端所处的状态
ESTABLISHED 代表连接已经建立起来了。这是连接数据传输阶段的正常状态
FIN_WAIT_1 等待来自远程TCP的终止连接请求或终止请求的确认
FIN_WAIT_2 在此端点发送终止连接请求后,等待来自远程TCP的连接终止请求
CLOSE_WAIT 该端点已经收到来自远程端点的关闭请求,此TCP正在等待本地应用程序的连接终止请求
CLOSING 等待来自远程TCP的连接终止请求确认
LAST_ACK 等待先前发送到远程TCP的连接终止请求的确认
TIME_WAIT 等待足够的时间来确保远程TCP接收到其连接终止请求的确认

它们会占用大量内存和端口资源。这时,我们可以优化与TIME_ WAIT状态相关的内核选项,比如采取下面几种措施:

增大处于 TIME_WAIT 状态的连接数量 net.ipv4.tcp_max_tw_buckets,并增大连接跟踪表的大小net.netfilter.nf_conntrack_max。

减小 net.ipv4.tcp_fin_timeout和net.netfilter.nf_conntrack_tcp_timeout_time_wait,让系统尽快释放它们所占用的资源。

开启端口复用 net.ipv4.tcp_tw_reuse。这样,被TIME_WAIT状态占用的端口,还能用到新建的连接中。

增大本地端口的范围 net.ipv4.ip_local_port_range。这样就可以支持更多连接,提高整体的并发能力。

增加最大文件描述符的数量。你可以使用fs.nr_open和fs.file-max,分别增大进程和系统的最大文件描述符数;或在应用程序的systemd配置文件中,配置LimitNOFILE,设置应用程序的最大文件描述符数。

通过专业的流量清洗系统来防范DDOS攻击

流量清洗服务是一种针对对其发起的DOS/DDOS攻击的监控、告警和防护的一种网络安全服务。在不影响正常业务的前提下,清洗掉异常流量。它会分析和过滤异常流量,将异常的攻击流量阻挡在门外,从而为正常的请求提供服务。

一般这类系统由专门的服务商提供,大多数会提供10 Gpbs~100Gpbs 的防护能力。

以上就是朝夕生活(www.30zx.com)关于“如何抵御频发的 DDOS 攻击?”的详细内容,希望对大家有所帮助!

免责声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如有侵权行为,请第一时间联系我们修改或删除,多谢。朝夕网 » 如何抵御频发的 DDOS 攻击?