你是否有遇到这样的情况,明明服务器正常运行,用户访问网站人数正常,却出现网页很卡,直到奔溃的情况,出现这种情况多半是被CC攻击了,预防胜于治疗,下面小编以Linux系统为例,给大家介绍下Linux如何防止CC攻击。
什么是CC攻击
cc攻击简单就是(ChallengeCollapsar)
CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃。CC主要是用来攻击页面的,每个人都有这样的体验:当一个网页访问的人数特别多的时候,打开网页就慢了,CC就是模拟多个用户(多少线程就是多少用户)不停地进行访问那些需要大量数据操作(就是需要大量CPU时间)的页面,造成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的连接直至就网络拥塞,正常的访问被中止。
防止CC攻击方法
用防止这CC攻击有两种方法
第一种就是利用本机的防火墙来解决可以安装CSF之内的防火墙,这种的弊端是只能防止小规模的CC攻击和DDOS(我的站在阿里云,所以不用太担心DDOS)CC攻击比较猛的话机器也直接CUP跑满了。
第二种方式是添加CDN,这种防止CC攻击的方法是最好的,不过CDN一般都要钱。
现在就来谈谈具体换防护,
首先安装CSF防火墙,这个比较简单而且不用改域名什么的,小规模的就直接解决了。
一、安装依赖包:
yuminstallperl-libwww-perlperliptables
二、下载并安装CSF:
wgethttp://www.configserver.com/free/csf.tgz
tar-xzfcsf.tgz
cdcsf
shinstall.sh
三、测试CSF是否能正常工作:
[root@localhostcsf]#perl/etc/csf/csftest.pl
Testingip_tables/iptable_filter.。.OK
Testingipt_LOG.。.OK
Testingipt_multiport/xt_multiport.。.OK
Testingipt_REJECT.。.OK
Testingipt_state/xt_state.。.OK
Testingipt_limit/xt_limit.。.OK
Testingipt_recent.。.OK
Testingxt_connlimit.。.OK
Testingipt_owner/xt_owner.。.OK
Testingiptable_nat/ipt_REDIRECT.。.OK
Testingiptable_nat/ipt_DNAT.。.OK
RESULT:csfshouldfunctiononthisserver
四、csf的配置:
CSF的配置文件是
vim/etc/csf/csf.conf
#AllowincomingTCPports
#推荐您更改SSH的默认端口(22)为其他端口,但请注意一定要把新的端口加到下一行中
TCP_IN=20,21,47,81,1723,25,53,80,110,143,443,465,587,993,995〃
#AllowoutgoingTCPports同上,把SSH的登录端口加到下一行。
#在某些程序要求打开一定范围的端口的情况下,例如Pureftpd的passivemode,可使用类似30000:35000的方式打开30000-35000范围的端口。
TCP_OUT=20,21,47,81,1723,25,53,80,110,113,443〃
#AllowincomingUDPports
UDP_IN=20,21,53〃
#AllowoutgoingUDPports
#Toallowoutgoingtracerouteadd33434:33523tothislist
UDP_OUT=20,21,53,113,123〃
#AllowincomingPING是否允许别人ping你的服务器,默认为1,允许。0为不允许。
ICMP_IN=1〃
以上这些配置大家一看就懂了,下面再介绍几个比较常用的:
上一页12下一页共2页 免疫某些类型的小规模DDos攻击:
#ConnectionTracking.ThisoptionenablestrackingofallconnectionsfromIP
#addressestotheserver.Ifthetotalnumberofconnectionsisgreaterthan
#thisvaluethentheoffendingIPaddressisblocked.Thiscanbeusedtohelp
#preventsometypesofDOSattack.
#
#Careshouldbetakenwiththisoption.It’sentirelypossiblethatyouwill
#seefalse-positives.Someprotocolscanbeconnectionhungry,e.g.FTP,IMAPD
#andHTTPsoitcouldbequiteeasytotrigger,especiallywithalotof
#closedconnectionsinTIME_WAIT.However,foraserverthatispronetoDOS
#attacksthismaybeveryuseful.Areasonablesettingforthisoptionmight
#bearround200.
#
#Todisablethisfeature,setthisto0
CT_LIMIT=200##固定时间内同一个IP请求的此数
#ConnectionTrackinginterval.Setthistothethenumberofsecondsbetween
#connectiontrackingscans
CT_INTERVAL=30##指上面的固定时间,单位为秒
#SendanemailalertifanIPaddressisblockedduetoconnectiontracking
CT_EMAIL_ALERT=1##是否发送邮件
#IfyouwanttomakeIPblockspermanentthensetthisto1,otherwiseblocks
#willbetemporaryandwillbeclearedafterCT_BLOCK_TIMEseconds
#是否对可疑IP采取永久屏蔽,默认为0,即临时性屏蔽。
CT_PERMANENT=0
#IfyouoptfortemporaryIPblocksforCT,thenthefollowingistheinterval
#insecondsthattheIPwillremainedblockedfor(e.g.1800=30mins)
#临时性屏蔽时间
CT_BLOCK_TIME=1800
#Ifyoudon’twanttocounttheTIME_WAITstateagainsttheconnectioncount
#thensetthefollowingto1〃
CT_SKIP_TIME_WAIT=0##是否统计TIME_WAIT链接状态
#Ifyouonlywanttocountspecificstates(e.g.SYN_RECV)thenaddthestates
#tothefollowingasacommaseparatedlist.E.g.SYN_RECV,TIME_WAIT
#LeavethisoptionemptytocountallstatesagainstCT_LIMIT
CT_STATES=##是否分国家来统计,填写的是国家名
#Ifyouonlywanttocountspecificports(e.g.80,443)thenaddtheports
#tothefollowingasacommaseparatedlist.E.g.80,443〃
#
#LeavethisoptionemptytocountallportsagainstCT_LIMIT
#对什么端口进行检测,为空则检测所有,防止ssh的话可以为空,统计所有的。
CT_PORTS=
做了以上设置之后,可以先测试一下。如果没有问题的话,就更改为正式模式,刚才只是测试模式。
#把默认的1修改为0。
TESTING=0
在/etc/csf/下有csf.allow和csf.deny两个文件,
allow是信任的IP,可以把自己的IP写到这里面防止误封。
deny就是被封的IP。
如果有调整需要重启一下cfs服务
上面就是Linux防止CC攻击的方法介绍了,很多时候用户网站被CC攻击了自己都不知道,所以定期的检测是很有必要的。