Linux教程

遇到问题之-一次SYN***之战之Linux如何防SYN***

本文主要是介绍遇到问题之-一次SYN***之战之Linux如何防SYN***,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

今天早上一到公司登录公司官网的时候感觉挺慢,登录服务器查看官网访问情况:

[root@web ~]# netstat -anp |awk ‘{print $6}’|sort|uniq -c |sort -rn

172 ESTABLISHED

59 CONNECTED

589 SYN_RECV

15 STREAM

SYN居然这么高,继续追查是那些ip发出的SYN:

[root@tweb ~]# netstat -an | grep SYN | awk ‘{print $5}’ | awk -F: ‘{print $1}’ | sort | uniq -c | sort -nr | more

570 x.x.x.x

(ip 就不写出了,是山东枣庄联通的一个ip),只是这一个ip就发出了这么多的syn请求连接,本来我们web服务器的并发数不是很高,这样一来正常的用户请求得不到相应,页面无法打开。因为硬件防火墙归集团IT部管理,我没有权限,所以只能在本地服务器上做些措施对SYN攻击进行部分减缓。

首先说一下SYN的攻击原理:

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送

这篇关于遇到问题之-一次SYN***之战之Linux如何防SYN***的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!