你还在花钱防御DDoS?巧用iptables 5招免费搞定 SYN洪水攻击!

栏目: 编程工具 · 发布时间: 5年前

内容简介:SYN Flood (SYN洪水) 是种典型的DoS (Denial of Service,拒绝服务) 攻击,属于DDos攻击的一种。遭受攻击后服务器TCP连接资源耗尽,最后停止响应正常的TCP连接请求。尽管这种攻击已经出现了十多年,但它的变种至今仍能看到。虽然能有效对抗SYN洪泛的技术已经存在,但是没有对于TCP实现的一个标准的补救方法出现。今天小编将详述这种攻击原理以及对抗SYN洪水的方法~SYN Flood 主要是利用了TCP协议的三次握手的缺陷,在这个攻击中,Flood带有一系列的syn数据包,每个

SYN Flood (SYN洪水) 是种典型的DoS (Denial of Service,拒绝服务) 攻击,属于DDos攻击的一种。遭受攻击后服务器TCP连接资源耗尽,最后停止响应正常的TCP连接请求。尽管这种攻击已经出现了十多年,但它的变种至今仍能看到。虽然能有效对抗SYN洪泛的技术已经存在,但是没有对于TCP实现的一个标准的补救方法出现。今天小编将详述这种攻击原理以及对抗SYN洪水的方法~

你还在花钱防御DDoS?巧用iptables 5招免费搞定 SYN洪水攻击!

攻击原理

正常的三次握手:

  1. 先发起一个 SYN=1 的包,并且带一个序列号( Seq );
  2. 服务器收到这个包以后,将这个数据放入到一个队列中,这个队列叫 syn_table 。并且发送一个返回包,作为响应,这个返回包有自己的序列号( Seq ),以及一个 Ack , Ack 的值就是客户端发来的 Seq 值加一;
  3. 客户端收到返回信息以后,将服务器的 Seq 加一作为 Ack 又发给服务器;
  4. 服务器收到这第三个包,验证没问题以后,就将这个连接放入到 request_sock_queue,三次握手完成。
你还在花钱防御DDoS?巧用iptables 5招免费搞定 SYN洪水攻击!

SYN Flood 主要是利用了TCP协议的三次握手的缺陷,在这个攻击中,Flood带有一系列的syn数据包,每个数据包都会导致服务端发送SYN-ACK响应,然后服务器等待SYN+ACK之后的第三次握手ACK,由于客户端是软件生成的虚拟IP,永远不会再发送ACK响应服务端,服务端会利用从传机制直到超时后删除,整个系统资源也会被队列积压消耗,导致服务器无法对正常的请求进行服务。

你还在花钱防御DDoS?巧用iptables 5招免费搞定 SYN洪水攻击!

如何判断自己是否遭受 SYN 攻击?

检测SYN攻击非常的简单,当你在服务器上看到大量的半连接状态时,特别是源IP地址是随机的,基本上可以断定这是一次SYN攻击。我们使用系统自带的netstat 工具来检测SYN攻击:

# netstat -n -p TCP 

反馈如图

你还在花钱防御DDoS?巧用iptables 5招免费搞定 SYN洪水攻击!

防御 SYN Flood攻击

配置iptables规则

Iptables防火墙我们可以理解为 Linux 系统下的访问控制功能,我们可以利用Iptables来配置一些规则来防御这种攻击。强制SYN数据包检查,保证传入的tcp链接是SYN数据包,如果不是就丢弃。

#iptables -A INPUT -p tcp --syn -m state --state NEW -j DROP 

强制检查碎片包,把带有传入片段的数据包丢弃。

#iptables -A INPUT -f -j DROP 

丢弃格式错误的XMAS数据包。

#iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP 

丢弃格式错误的NULL数据包。

#iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP 

当Iptables配置完成后我们可以使用nmap命令对其验证

# nmap -v -f FIREWALL IP 
# nmap -v -sX FIREWALL IP 
# nmap -v -sN FIREWALL IP 

例如:

你还在花钱防御DDoS?巧用iptables 5招免费搞定 SYN洪水攻击!

其他防御方式:

除此之外针对SYN攻击的几个环节,我们还可以使用以下处理方法:

方式1:减少SYN-ACK数据包的重发次数(默认是5次)

sysctl -w net.ipv4.tcp_synack_retries=3 
sysctl -w net.ipv4.tcp_syn_retries=3 

方式2:使用SYN Cookie技术

sysctl -w net.ipv4.tcp_syncookies=1 

方式3:增加backlog队列(默认是1024):

sysctl -w net.ipv4.tcp_max_syn_backlog=2048 

方式4:限制SYN并发数:

iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT --limit 1/s 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

与机器赛跑

与机器赛跑

[美]埃里克·布林约尔松(Erik Brynjolfsson)、[美]安德鲁·麦卡菲(Andrew McAfee) / 闾佳 / 2013-1-20 / 6.00

一场数字革命正在加速进行。 一些科幻小说里的场景已经在现实中发生:无人驾驶汽车开上了公路;智能设备能高效地翻译人类语言;人工智能系统在智力竞赛里击败了所有人类选手;工厂雇主开始购买更多的新机器,却不招新工人…… 这些例子都证明,数字技术正在快速地掌握原本只属于人类的技能,并深刻地影响了经济。虽然大多数影响是积极的:数字革新将提高效率、降低商品价格(甚至到免费),以及增加经济总量。 ......一起来看看 《与机器赛跑》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具