使用iptables应对SYN攻击、CC攻击、ACK攻击

简介:

1、前言

笔者想总结一些应对常见的网络攻击的方法,特参阅网络上的文档,以便整理出一套可以应对SYN、CC、ACK等攻击的方案。

2、理论基础

2.1、TCP/IP的三次握手理论

TCP/IP协议使用三次握手来建立连接,过程如下:

1)第一次握手,客户端发送数据包syn到服务器,并进入SYN_SEND状态,等待回复

2)第二次握手,服务器发送数据报syn/ack,给客户机,并进入SYN_RECV状态,等待回复

3)第三次握手,客户端发送数据包ACK给客户机,发送完成后,客户端和服务器进入ESTABLISHED状态,链接建立完成

2.2、TCP/IP三次握手服务器过程分析

1)三次握手协议中服务器维护一个等待队列

2)收到一个syn包就在队列中建立一个条目,并分配一定的资源

3)对应的每一个条目表示已经收到一个syn请求,并已经回复syn/ack

4)服务器上对应的连接已经进入SYN_RECV状态,等待客户端响应

5)收到客户端的响应包以后,该连接进入 ESTABLISHED状态,队列中对应的条目被删除。

2.3、TCP/IP三次握手相关参数

2.3.1、backlog

1)参数的作用:

设定等待队列的最大数目。

2)对应内核参数:

1
net.ipv4.tcp_max_syn_backlog = 1024

2.3.2、syn-ack

1)参数的作用:

重传次数,服务器发送syn/ack包,如果没有收到客户端的相应,就会重传syn/ack,超过一定时间之后会进行第二次重传,超过设定 次数以后将该条目从队列中删除。每次重传的间隔时间并不确定。

2)对应内核参数:

1
net.ipv4.tcp_synack_retries = 5

2.3.3、syn

1)参数的作用:

重传次数,概念和syn/ack重传次数类似

2)对应内核参数:

net.ipv4.tcp_syn_retries = 5

2.3.4、等待存活时间

指等待队列的条目存活时间,即从服务器收到syn包到确认这个包无效的最长时间,该时间是所有重传包请求的最长等待时间。

3、攻击类型与防御

3.1、DDOS攻击

3.1.1、DDOS攻击的概念

DDOS攻击又称流量攻击

一群恶霸试图让对面那家有着竞争关系的商铺无法正常营业,他们会采取什么手段呢?(只为举例,切勿模仿)恶霸们扮作普通客户一直拥挤在对手的商铺,赖着不走,真正的购物者却无法进入;或者总是和营业员有一搭没一搭的东扯西扯,让工作人员不能正常服务客户;也可以为商铺的经营者提供虚假信息,商铺的上上下下忙成一团之后却发现都是一场空,最终跑了真正的大客户,损失惨重。此外恶霸们完成这些坏事有时凭单干难以完成,需要叫上很多人一起。嗯,网络安全领域中DoS和DDoS攻击就遵循着这些思路。

3.1.2、一般的DDOS解决方法

1)设置方法1

vim编辑/proc/sys/net/ipv4/tcp_max_syn_backlog

1
8000

默认500,建议改为8000以上

2)设置方法2

vim编辑/proc/sys/net/ipv4/tcp_fin_timeout

1
 

默认值60,建议改为15

3)syncooies

1
2
3
4
5
6
7
sysctl -w net.ipv4.icmp_echo_ignore_all=1 
echo  1 >  /proc/sys/net/ipv4/tcp_syncookies 
sysctl -w net.ipv4.tcp_max_syn_backlog= "2048" 
sysctl -w net.ipv4.tcp_synack_retries= "3" 
iptables -A INPUT -i eth0 -p tcp --syn -j syn-flood 
# Limit 12 connections per second (burst to 24) 
iptables -A syn-flood -m limit --limit 12 /s  --limit-burst 24 -j RETURN

4)limit

1
iptbales -A FORWARD -p tcp --syn -m limit --limit 1 /s  -j ACCEPT

3.2、SYN攻击

3.2.1、SYN攻击的概念

syn攻击属于DDOS攻击中的一种,利用TCP/IP的缺陷进行网络攻击,可以使用很小的资源取得十分显著的效果。

3.2.2、攻击原理

1)服务器收到客户端的syn包,之后进入SYN_RECV状态

2)服务器的等待队列中增加一个条目

3)服务器未收到客户端的确认包,进行重传一直到超时之后,该条目从未链接队列中删除。

以上行为被攻击者利用:

客户端不断地发送syn包,而不响应来自服务器的syn/ack,等待队列的条目迅速增长,最后服务器的等待队列达到最大数目,之后就不能再接受新的连接,一直到链接超时才从队列中删除对应的条目。

配合ip地址欺骗技术,该方法可以取得十分良好的效果,基本上在攻击期间,服务器将不能给正常的用户提供服务。

这个攻击办法利用了TCP/IP协议的缺陷,攻击的目标不止于服务器,任何网络设备,只要开启了网络服务器,都可能会受到这种攻击,导致处理器资源被大量占用,内存被用完,大量队列等待处理,针对网络设备的攻击往往会导致整个网络瘫痪。

3.2.3、相关指令

1)查询syn相关参数

1
sysctl -a |  grep  syn

3.2.4、应对方法


1)修改等待数

1
sysctl -w net.ipv4.tcp_max_syn_backlog=2048

2)启用syncookies

1
sysctl -w net.ipv4.tcp_syncookies=1

注意:启用syncookies可以大幅减小syn攻击带来的影响,但是却引入了新的安全缺陷(ACK攻击)

syncookie基本原理

1)仔细处理连接的初始序列号而不是随机选择一个序列号。

2)一旦server接收到SYN报文,将关键信息仔细编码并作为state存储在SYN队列中。

3)这种经过编码的信息是用一个秘钥进行加密hash,形成SYN-ACK报文中的序列号并发送给client。

在合法握手的第三个报文中,即从client返回给server的ACK报文中,在acknowledgment number字段中包含该序列号(加1)。这样,open双向连接所必须的所有信息又返回给server,而server在三次握手完成之前不必维护state。syn-cookies解决了SYN的基本问题,但是随之带来一个新的问题,就是服务器需要对收到的ACK报文进行计算,提高了三次握手需要的系统资源。一种新的攻击方式随之而来,即ACK攻击,发送大量的ACK数据报,导致服务器忙于计算最终导致服务器停止相应。Linux上的实际应用中,有等待数被占满的时候才会启用 syncookies的方式(syncookies摘自网文)。

3)修改重试次数

1
sysctl -w net.ipv4.tcp_syn_retries = 0

重传次数设置为0,只要收不到客户端的响应,立即丢弃该连接,默认设置为5次

4)限制单IP并发数

使用iptables限制单个地址的并发连接数量:

1
iptables -t filter -A INPUT -p tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT

5)限制C类子网并发数

使用iptables限制单个c类子网的并发链接数量:

1
iptables -t filter -A INPUT -p tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 10 --connlimit-mask 24 -j REJECT

6)限制单位时间内连接数

设置如下:

1
2
iptables -t filter -A INPUT -p tcp --dport 80 -m --state --state NEW -m recent -- set  --name access --resource
iptables -t filter -A INPUT -p tcp --dport 80 -m --state --state NEW -m recent --update --seconds 60 --hitcount 30 --name access -j DROP

或者使用如下两条策略

1
2
iptables -t filter -A INPUT -p tcp --dport 80 -m --state --syn -m recent -- set
iptables -t filter -A INPUT -p tcp --dport 80 -m --state --syn -m recent --update --seconds 60 --hitcount 30 -j DROP

7)修改modprobe.conf

为了取得更好的效果,需要修改/etc/modprobe.conf

1
options ipt_recent ip_list_tot=1000 ip_pkt_list_tot=60

作用:记录10000个地址,每个地址60个包,ip_list_tot最大为8100,超过这个数值会导致iptables错误

8)限制单个地址最大连接数

1
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP

3.3、ACK攻击

3.3.1、ACK攻击的概念

ACK 攻击是针对syn-cookies而发产生的,通过发送大量的ACK数据报,使目标服务器忙于计算,达到拒绝服务的目的。

3.3.2、应对ACK攻击

1)并发连接数限制

1
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP

限制并发连接数不大于50

2)限制并发ACK

1
iptables -t filter -A INPUT -p tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK ACK -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT

限制并发ACK不大于50

3)限制单位时间链接次数

1
2
iptables -t filter -A INPUT -p tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK ACK -m recent -- set  --name drop
iptables -t filter -A INPUT -p tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK ACK -m recent --update --seconds 60 --hitcount 30 -j DROP

一分钟内大于30次的连接全部丢弃

3.4、CC攻击

3.4.1、CC攻击的概念

普通的CC攻击特点是所有的连接都是正常的完整的连接,这样的连接一般的防火墙是很难预防的。但是既然是网络攻击必然也具有网络攻击的共同特点,也就是每一个攻击源都会发起尽量多的连接,因此我们仍然可以使用限制单个地址并发链接数量的办法来实现对CC攻击的抵御。

具体命令同上

3.5、webcc

想必之下似乎更加难以预防,但是由于所有的访问都是由相同的一个或几个网站中转而来,这些访问请求的http_reffer都会带有这些中转站的地址。我们只要在web服务器上设置http_reffer过滤即可大幅减小webcc攻击的影响,具体的设置这里就略过不表了。

附:如何为RHEL5增加connlimit模块









本文转自 tanzhenchao 51CTO博客,原文链接:http://blog.51cto.com/cmdschool/1708497,如需转载请自行联系原作者

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
6月前
|
云安全 安全 BI
CC攻击该怎么防护更好
随着互联网发展,CC攻击成为严峻的网络安全问题。这种DDoS攻击通过操纵大量主机,向目标服务器发送大量请求,导致服务器资源耗尽。应对CC攻击,可以采取以下策略:部署高防IP或SCDN服务,限制请求频率,以及使用验证码验证。德迅云安全提供一站式安全加速解决方案,包括Web应用防火墙、CDN加速和抗DDoS防护,利用AI检测、智能语义解析等技术,有效防御各种网络攻击,同时保证网站内容的快速稳定访问。通过实时数据统计和安全可视化工具,便于监控和应对安全威胁。综合运用这些方法能有效降低CC攻击影响,保障Web应用程序的安全稳定运行。
|
4月前
|
云安全 负载均衡 安全
CC攻击和DDoS攻击
【8月更文挑战第17天】
108 4
|
6月前
|
存储 缓存 负载均衡
CC攻击解析与防御策略
CC攻击是DDoS的一种,利用代理服务器向目标发送大量合法请求,消耗服务器资源。识别特征包括命令行大量"SYN_RECEIVED"连接、IP批量异常连接和日志中异常访问模式。防御策略包括提升服务器性能、数据缓存优化、页面静态化、请求速率限制、IP访问限制及使用CDN。专业高防产品提供智能识别和响应,帮助企业构建全面防御体系。
361 2
|
7月前
|
域名解析 安全 网络安全
全面了解CC攻击和防范策略
CC攻击是一种针对Web服务的攻击,模仿正常用户请求耗尽服务器资源。攻击类型包括直接、肉鸡、僵尸和代理攻击。目标包括网站、API、登录页面、基础设施组件、云服务、金融机构等。影响包括服务中断、性能下降、经济损失、品牌受损及法律问题。判断CC攻击可通过观察CPU上升、网站响应慢或检查系统日志。防护措施包括IP封禁、人机验证、使用安全加速服务、静态化页面、更改端口、完善日志和域名解析策略。CC与DDoS攻击主要区别在于攻击原理、对象、危害、门槛和所需流量。综合运用多种防御策略能有效抵御CC攻击。
|
6月前
|
JavaScript Ubuntu 应用服务中间件
nginx扩展 OpenResty 实现防cc攻击教程
使用OpenResty实现CC攻击防护,包括两个主要步骤:限制请求速度和JS验证。首先,安装依赖(RHEL/CentOS需安装readline-devel, pcre-devel, openssl-devel,Ubuntu需安装libreadline-dev等)。然后,安装Luajit和OpenResty。在Nginx配置中,创建`lua`共享字典并设置`content_by_lua_file`调用lua脚本。lua脚本检查请求频率,超过限制则返回503,否则增加计数。同时,通过JS验证,生成随机码并重定向用户,用户需携带正确验证码请求才能访问。
145 0
|
7月前
|
缓存 负载均衡 安全
每天一技:全面了解CC攻击和防范策略
CC攻击是一种模拟真实用户请求,导致服务器资源耗尽的网络攻击。攻击者利用工具生成木马,控制大量“肉鸡”对目标网站发起恶意请求,使服务器CPU过载,网站无法正常服务。特点是请求有效、IP分散、数据包真实、针对网页。常见类型包括直接攻击、肉鸡攻击、僵尸攻击和代理攻击。判断CC攻击可通过观察CPU usage飙升和系统日志异常。大型网站如某度、Google因代码规范、硬件配置高、缓存策略、严格防火墙和负载均衡等技术能有效防御。防御措施包括IP封禁、人机验证、静态化页面、更改Web端口、日志分析等,或使用SCDN产品提供全面防护,包括Web攻击防护、DDoS防护、合规性保障、流量管理和安全可视化功能。
|
7月前
|
安全 网络协议 网络安全
【看案例】冠赢互娱:用游戏盾解决DDoS/CC攻击
冠赢互娱凭借阿里云专为游戏行业定制的游戏盾安全防护方案,在APP端切入游戏盾,对整个传输链路进行安全处置,精准定位黑客并实现风险隔离,解决了DDoS攻击、游戏CC攻击问题。
121 0
【看案例】冠赢互娱:用游戏盾解决DDoS/CC攻击
Adobe XD CC 55.2.12.2 是一款非常专业的矢量图形规划软件Adobe XD 2023版本软件下载安装教程(内含所有版本)
Adobe XD CC 55.2.12.2 是一款非常专业的矢量图形规划软件,全新的桌面端UX原型工具,这是新一代网页与移动应用的UX设计工具。xd能够帮助设计者快速有效的设计图形、建立手机APP以及网站原型等等设计制作,支持设备的尺寸多样。集原型、设计和交互等功能于一体,从网站和移动应用程序到语音交互都可轻松实现,Adobe XD CC带来了响应调整大小、自动动画、语音原型、插件和应用程序集成等新功能,
Adobe Photoshop CC 2019下载中文永久安装和破解教程
Adobe Photoshop CC 2019下载中文永久安装和破解教程
50053 0
Animate CC 2019免费下载丨Adobe Animate CC 2019下载中文完整版永久安装教程
Adobe 提供了一整套可互相配合使用的动画应用程序,助您实现所有创意。使用 Animate CC 创建适用于游戏、应用程序和 Web 的交互式矢量动画。利用 Character Animator CC 将人物实时制成动画。
8449 0

热门文章

最新文章