洪水攻击怎么办?

简介:

洪水攻击是网络攻击里比较常见的一种,一般体现就是机器慢(CPU居高不下),ssh等网络服务登陆缓慢甚至会出现登陆不上的情况,甚至在# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 的命令里,发现SYN_RECV 的数量要远远大于ESTABLISHED的数量(几乎是5~8倍以上),然后查看系统的日志或者使用#dmesg的时候,就会出现如下的语句:

possible SYN flooding on port 80. Sending cookies.



原理了解

洪水攻击的原理就是利用了TCP三次握手的漏洞,坏人们仿造了大量的假IP地址,这些IP一股脑的类似洪水一样向你的服务器发起请求,然后服务器老老实实按部就班的接收到SYN,然后一个一个的返回ACK,但是因为这些IP都是实际不存在的,所以这一步就卡住了,然后需要在对应的数据区里等若干时间,过了时间限制之后,服务器才会认为这些链接是坏死的,彻底放弃他们。然后再接纳新的链接,但是由于“洪水”过大,会造成系统负担过重,于是就出现cpu过高等现象。


针对这种情况,linux默认情况下是以发送cookies的形式进行自我保护,cookies的原理是当服务器接收到客户端的SYN包的时候不会特意建立一个数据区来返回syn+ack,而是根据syn来设定一个cookies,服务器会根据cookies来检查这个链接的合法性,如果链接不合法直接丢弃,如果合法在设定一个数据区来保存整套链接。


应该怎么办?

发现这种情况要使用# netstat -na |grep SYN_RECV|more在第一时间把问题IP迅速定位,然后iptables全部drop掉。


如果发现洪水攻击并不是来自恶意IP攻击,而是普通的多用户访问,那么就是自身服务器的问题,这时候需要把/proc/sys/net/ipv4/tcp_syncookies的值由1改成0,这个意思是关闭掉洪水攻击的防范。


如果觉得关闭了整个阀门,整个服务器就好像会不太安全(的确是有副作用的),那么是可以适当扩大一些阈值的,具体可以更改的文件如下:

1)/proc/sys/net/ipv4/tcp_max_syn_backlog这个文件是规定系统可以缓存多少syn请求,这个值普遍默认是512,有些服务器比较强势的可能是1024,但是要注意,请不要把这个数字轻易改超过1024,可能会出现忽略广播的现象;

2)/proc/sys/net/ipv4/tcp_synack_retries,这个意思是当客户端不返回ack+syn的时候,服务器会给几次机会继续尝试与客户端的链接,默认是5次。可以适当改小,或者干脆就成0,加快回收半连接。当然,改成0的话,也是有弊端,就是用户可能会连接不上网站,不过一般正常智商的用户会刷新一下,这样就会重新连接上的,所以这个弊端不算啥;

3)/proc/sys/net/ipv4/tcp_abort_on_overflow ,这个值默认是0,如果改成1的话,服务器就会在链接变慢的时候,发送一个reset包来快速重启链接,这个值根据情况开启;


扩展

/proc/sys/net/core 和/proc/sys/net/ipv4里面有很多文件,这里简单说明部分文件用途。

1)/proc/sys/net/ipv4/ip_local_port_range:本机主动连接其他机器时的端口分配范围;

2)/proc/sys/net/core/netdev_max_backlog:网络设备接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目;

3) /proc/sys/net/core/wmem_max:最大的TCP 数据发送缓冲(字节);

4) /proc/sys/net/core/rmem_max:最大的TCP 数据接收缓冲(字节);

5) /proc/sys/net/ipv4/tcp_timestamps = 0:时间戳选项,与前面net.ipv4.tcp_tw_reuse参数配合,是个布尔值,0 or 1。


 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1773403

相关文章
|
3月前
|
网络协议
网络攻击-arp攻击
网络攻击-arp攻击
30 0
|
3月前
|
安全 算法 数据可视化
认识Glitch到攻击BootROM
认识Glitch到攻击BootROM
47 0
|
6月前
|
负载均衡 网络协议 安全
无法防范的网络攻击-DDOS
无法防范的网络攻击-DDOS
|
算法 安全 大数据
女巫攻击及其防范
女巫攻击及其防范
|
算法 安全 网络协议
科普知识:什么是攻击隐写术
本文讲的是科普知识:什么是攻击隐写术,隐写术是以隐藏格式发送数据的做法,因此这些发送的数据都会伪装成各种形式。“隐写”一词是希腊语στεγανό和γράφειν的组合,στεγανό的意思是“覆盖,隐藏或受保护”,而γράφειν的含义是“graphein”,意思是“写作”。
2673 0
|
安全 数据安全/隐私保护 网络架构
解密常见的社会工程学攻击
社会工程学的手段日渐成熟,其技术含量也越来越高。社会工程学在实施之前必须掌握「心理学」、「人际关系」、「行为学」等知识与技能,以便收集和掌握实施进攻行为所需的资料和信息。不了解社会工程学的小伙伴可以点击链接: 什么是社会工程学 。
266 0
|
网络协议
SYN洪水攻击原理
SYN Flood 或称 SYN洪水、SYN洪泛是一种阻断服务攻击,起因于攻击者传送一系列的SYN请求到目标系统。 用户和服务器之间的正常连接,正确执行3次握手。 三次握手当客户端尝试与服务器建立TCP连接时,客户端和服务器在正常情况下交换一组信息,如下所示:1.客户端将SYN同步信息发送到服务器并请求连接设置。
1494 0
|
弹性计算 监控 安全
DDoS攻击介绍,如何防御DDoS攻击?
分布式拒绝服务攻击(DDoS攻击)是一种针对目标系统的恶意网络攻击行为,DDoS攻击经常会导致被攻击者的业务无法正常访问
4133 0
|
Web App开发 网络协议 安全