使用Iptables防止CC攻击
要想明白CC攻击就要先了解DoS攻击
dos攻击
简介
参见百度百科:DoS攻击是指故意的攻击网络协议实现的缺陷或直接通过野蛮手段残忍地耗尽被攻击对象的资源,目的是让目标计算机或网络无法提供正常的服务或资源访问,使目标系统服务系统停止响应甚至崩溃,而在此攻击中并不包括侵入目标服务器或目标网络设备。这些服务资源包括网络带宽,文件系统空间容量,开放的进程或者允许的连接。这种攻击会导致资源的匮乏,无论计算机的处理速度多快、内存容量多大、网络带宽的速度多快都无法避免这种攻击带来的后果。
表现形式
1、制造大流量无用数据,造成通往被攻击主机的网络拥塞,使被攻击主机无法正常和外界通信。 [1]
2、利用被攻击主机提供服务或传输协议上处理重复连接的缺陷,反复高频的发出攻击性的重复服务请求,使被攻击主机无法及时处理其它正常的请求。
3、利用被攻击主机所提供服务程序或传输协议的本身实现缺陷,反复发送畸形的攻击数据引发系统错误的分配大量系统资源,使主机处于挂起状态甚至死机。
CC攻击
原理
CC(ChallengeCollapsar,挑战黑洞)攻击是DDoS攻击的一种类型,攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃。CC主要是用来攻击页面的,每个人都有这样的体验:当一个网页访问的人数特别多的时候,打开网页就慢了,CC就是模拟多个用户(多少线程就是多少用户)不停地进行访问那些需要大量数据操作(就是需要大量CPU时间)的页面,造成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的连接直至就网络拥塞,正常的访问被中止。
使用Iptables防御
有上可知,CC攻击是某些主机不停的向服务器发送请求占用服务器资源造成的。我们是不是就可以使用防火墙禁止这些ip访问我们的服务器呢
# iptables 禁用一个ip
iptables -t filter -I INPUT -s 192.168.31.210 -d 192.168.31.211 --dport 80 -j DROP
由于CC攻击是多个主机,就需要借用ipset
ipset
安装
#yum 安装
yum install ipset
# apt-get安装
sudo apt-get install ipset
使用
-
创建一个集合
ipset create xxx hash:ip # xxx 集合名称 hash:ip 指单个ip
-
查看已创建的ipset
ipset list
-
加一个ip进入ipset
ipset add xxx 10.20.50.60
-
集合中去除一个ip
ipset del xxx 10.20.50.60
-
将ipset规则保存到文件
ipset sava xxx -f xxx.txt
-
删除ipset
ipset destroy xxx
-
从文件导入规则
ipset restore -f xxx.txt
ipset
的一个优势是集合可以动态的修改,即使ipset
的iptables
规则目前已经启动,新加的入ipset
的ip
也生效 -
iptables 使用ipset
iptables -I INPUT -m set --match-set xxx src -p tcp --destination-port 80 -j DROP #ipset中的ip都不能访问80端口(防CC攻击)