婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > CCKiller:Linux輕量級(jí)CC攻擊防御工具,秒級(jí)檢查、自動(dòng)拉黑和釋放

CCKiller:Linux輕量級(jí)CC攻擊防御工具,秒級(jí)檢查、自動(dòng)拉黑和釋放

熱門(mén)標(biāo)簽:外呼電話系統(tǒng)怎么操作 天津電話外呼系統(tǒng)排名 德陽(yáng)400電話申請(qǐng) 測(cè)繪地圖標(biāo)注名稱(chēng) 鶴崗400電話申請(qǐng) 百度地圖標(biāo)注直線距離 商機(jī)地圖標(biāo)注 怎么在百度地圖標(biāo)注公司的位置 智能電銷(xiāo)機(jī)器人有用嗎

張戈博客很久以前分享過(guò)一個(gè)CC攻擊的防御腳本,寫(xiě)得不怎么樣,不過(guò)被51CTO意外轉(zhuǎn)載了。博客從此走上了經(jīng)常被人拿來(lái)練手的不歸之路。

當(dāng)然,還是有不少朋友在生產(chǎn)環(huán)境使用,并且會(huì)留言詢問(wèn)相關(guān)問(wèn)題。根據(jù)這些問(wèn)題的需求,我花了一些時(shí)間重新寫(xiě)了一個(gè)比較滿意的輕量級(jí)CC攻擊防御腳本,我給它取了一個(gè)比較形象的名字:CCKiller,譯為CC終結(jié)者。

一、功能申明

分享之前我必須先申明一下,眾所周知,DDoS攻擊指的是分布式拒絕服務(wù)。而CC攻擊只是DDoS攻擊的一種,本文所闡述的CC攻擊,指的是每個(gè)IP都以高并發(fā)請(qǐng)求攻擊,而非分布式海量IP的低并發(fā)DDoS攻擊!

對(duì)于個(gè)人低配服務(wù)器,除了使用CDN來(lái)防護(hù),至少我是沒(méi)有想到如何抵擋海量IP攻擊的!因?yàn)槊總€(gè)IP都用正常的UA來(lái)請(qǐng)求,而且每個(gè)IP的低并發(fā)請(qǐng)求和正常用戶請(qǐng)求一樣,并不會(huì)觸發(fā)防御閾值,同時(shí)來(lái)1000個(gè),甚至上萬(wàn)個(gè),個(gè)人低配服務(wù)器的帶寬在第一時(shí)間就會(huì)被占滿,無(wú)法繼續(xù)提供服務(wù)!

所以,如果你的網(wǎng)站正受到海量IP的低并發(fā)DDoS攻擊,那么本文分享的CCKiller就無(wú)能為力了。趕緊去開(kāi)啟CDN來(lái)拓展帶寬吧!

二、功能介紹

通過(guò)以上申明,也就大致給CCKiller一個(gè)定位:CCKiller是用于個(gè)人低配服務(wù)器的輕量級(jí)CC攻擊防御,可以抵擋單個(gè)IP產(chǎn)生的高并發(fā)攻擊。

目前設(shè)計(jì)的功能特性如下:
①、秒級(jí)檢查
很多人寫(xiě)的防御腳本都是使用了Linux系統(tǒng)的計(jì)劃任務(wù)crontab來(lái)定時(shí)檢查的。而crontab的最細(xì)顆粒是1分鐘,也就是說(shuō)腳本最快也只能1分鐘檢查一次。對(duì)于一些強(qiáng)迫癥來(lái)說(shuō)就會(huì)很不爽。

所以,我還是按照以前分享的思路,利用while循環(huán)實(shí)現(xiàn)秒級(jí)檢查,實(shí)現(xiàn)更細(xì)的顆粒。當(dāng)然,CCKiller更是被我寫(xiě)成了系統(tǒng)服務(wù),更加靈活穩(wěn)定。
②、拉黑時(shí)長(zhǎng)
CCKiller可以設(shè)置拉黑時(shí)長(zhǎng),默認(rèn)為10分鐘。當(dāng)發(fā)現(xiàn)有惡意請(qǐng)求時(shí),會(huì)自動(dòng)拉黑目標(biāo)IP,并在拉黑時(shí)長(zhǎng)結(jié)束后自動(dòng)釋放,這個(gè)功能算是對(duì)我之前寫(xiě)的腳本的一個(gè)大的改進(jìn)。
③、并發(fā)閾值
CCKiller 可以設(shè)定單個(gè)IP的最高請(qǐng)求數(shù),如果某個(gè)IP同時(shí)請(qǐng)求數(shù)超過(guò)了設(shè)定的閾值,就會(huì)被暫時(shí)拉黑一段時(shí)間。
④、郵件發(fā)送
這個(gè)功能沒(méi)啥好說(shuō)的,意義并不大。而且發(fā)送成功率和服務(wù)器的環(huán)境也有很大關(guān)系。
⑤、并發(fā)顯示
安裝后,直接運(yùn)行cckiller會(huì)列出當(dāng)前系統(tǒng)的請(qǐng)求排行,可以清晰的看到當(dāng)前請(qǐng)求IP和并發(fā)數(shù)。使用-s參數(shù)還可以繼續(xù)定制需求,比如 cckiller -s 10 就能顯示當(dāng)前并發(fā)數(shù)排行前10名的IP。
⑥、手動(dòng)拉黑
支持手動(dòng)拉黑,執(zhí)行后會(huì)立即檢查,將并發(fā)請(qǐng)求超過(guò)n的IP拉黑一段時(shí)間,比如 cckiller -k 100 就會(huì)將目前超過(guò)100個(gè)請(qǐng)求的IP拉黑一段時(shí)間,如果沒(méi)有則不會(huì)執(zhí)行任何拉黑操作。

三、工具安裝
①、在線安裝

由于我可能經(jīng)常會(huì)更新一些功能,或修復(fù)一些BUG,所以僅提供在線安裝,以保證腳本是最新的。

安裝非常簡(jiǎn)單,執(zhí)行如下命令就能進(jìn)入配置步驟了:

復(fù)制代碼 代碼如下:

wget --no-check-certificate -O install.sh https://zhangge.net/wp-content/uploads/files/cckiller/install.sh?ver=1.0.1 chmod +x install.sh ./install.sh -i

②、工具配置

因?yàn)槊總€(gè)服務(wù)器的情況可能不一樣,所以有一個(gè)自定義配置的過(guò)程。

執(zhí)行上述安裝命令后,將會(huì)進(jìn)入自選配置部分,如圖:

提示否使用腳本默認(rèn)配置,如果選擇是(y),那么顯示默認(rèn)配置,并詢問(wèn)是否繼續(xù):

默認(rèn)配置如下:

復(fù)制代碼 代碼如下:

The Time interval : 20 s       #每20s檢查一次系統(tǒng)請(qǐng)求情況
The Forbidden Time: 600 s  #拉黑時(shí)長(zhǎng)設(shè)為10分鐘
Adminstrator Email: root@localhost   #郵件對(duì)象設(shè)置為root@localhost(即關(guān)閉郵件發(fā)送)
Connections Allow: 100      #單個(gè)IP并發(fā)限制為100

如果不符合你的需求,你可以使用 ctrl + c 組合鍵終止腳本,或者先繼續(xù)安裝,因?yàn)楣ぞ咴O(shè)計(jì)了配置修改的功能,所以無(wú)需著急。

如果不使用默認(rèn)配置(n),則會(huì)要你輸入?yún)?shù)來(lái)自定義配置:

如圖,我將參數(shù)依次定義為每10秒進(jìn)行檢查,拉黑時(shí)長(zhǎng)為300秒,發(fā)件人設(shè)置為博客郵箱,并發(fā)限制設(shè)置為60,回車(chē)后會(huì)彈出一個(gè)提示,讓你檢查,如果沒(méi)問(wèn)題你直接回車(chē)就會(huì)安裝并啟動(dòng):

③、服務(wù)控制

安裝后,會(huì)將cckiller注冊(cè)成系統(tǒng)服務(wù),這時(shí)你就可以使用service來(lái)控制cckiller了。
使用標(biāo)準(zhǔn)的service定義,支持 start | stop | restart | status 四個(gè)參數(shù)。所以,你可以使用
service cckiller stop來(lái)停止cckiller,也可以使用service cckiller status來(lái)查看狀態(tài)。

 ④、集成命令

成功安裝后,系統(tǒng)還會(huì)多出一個(gè)cckiller的命令,這個(gè)命令現(xiàn)有功能如下:
cckiller -h可以調(diào)出幫助信息:

復(fù)制代碼 代碼如下:

CCkiller version 1.0.0 Author: Jager ge@zhangge.net>
Copyright ©2015 zhangge.net. All rights reserved.
Usage: cckiller [OPTIONS] [N]
N : number of tcp/udp   connections (default 100)
OPTIONS:
-h | --help: Show       this help screen
-k | --kill: Block the offending ip making more than N connections
-s | --show: Show The TOP "N" Connections of System Current

我蹩腳的英文也能湊合解釋一下功能了吧~

-k 是拉黑功能,需要在后面帶上你想拉黑的并發(fā)數(shù),比如 cckiller -k 100 就會(huì)拉黑當(dāng)前請(qǐng)求數(shù)大于100的IP一段時(shí)間(和拉黑時(shí)長(zhǎng)一致)

-s 是顯示并發(fā)排名,也需要在后面帶上數(shù)字,比如 cckiller -s 10 就能顯示當(dāng)前并發(fā)數(shù)排行前10名的IP。
⑤、文件結(jié)構(gòu)
如上圖所示,腳本安裝目錄為/usr/local/cckiller,其結(jié)構(gòu)如下:

cckiller/
├── cckiller       #主程序
├── log/           #日志目錄(ver 1.0.1新增特性)
├── ck.conf        #配置文件
├── ignore.ip.list #白名單
└── install.sh     #安裝和卸載腳本
 
0 directories, 5 files

很簡(jiǎn)單也比較規(guī)范的的結(jié)構(gòu),當(dāng)然,后續(xù)功能如果越來(lái)越多,此結(jié)構(gòu)可能會(huì)有所更新,這是后話。

如果你熟悉vim的話,只要編輯ck.conf就可以定義工具參數(shù)了:

復(fù)制代碼 代碼如下:

##### Paths of the script and other files
PROGDIR="/usr/local/cckiller"
PROG="/usr/local/cckiller/cckiller"
LOGDIR="/usr/local/cckiller/log"
IGNORE_IP_LIST="/usr/local/cckiller/ignore.ip.list"
IPT="/sbin/iptables"
DKName=CCkiller
DKVer=1.0.1
##### SLEEP_TIME設(shè)定檢查頻率,單位為秒
SLEEP_TIME=10
##### NO_OF_CONNECTIONS設(shè)定并發(fā)限制
NO_OF_CONNECTIONS=60
##### EMAIL_TO設(shè)定郵件的發(fā)送對(duì)象
EMAIL_TO="ge@zhangge.net"
##### BAN_PERIOD設(shè)定拉黑時(shí)長(zhǎng),單位為秒
BAN_PERIOD=300

如果不熟悉也沒(méi)關(guān)系。你還可以執(zhí)行 ./install.sh -c 進(jìn)行工具初始化,重新設(shè)定所有參數(shù),過(guò)程和首次安裝時(shí)一致,這里就不贅述了。
⑥、白名單
工具安裝時(shí)會(huì)默認(rèn)將系統(tǒng)所有IP都加入白名單,避免自己把自己給拉黑的尷尬。如果你還有其他要加白的IP,可以將IP加入到cckiller安裝目錄下的ignore.ip.list文件中,每行一個(gè)。

Ps:目前白名單還不支持IP段,敬請(qǐng)期待后續(xù)更新。
⑦、卸載工具
有心的朋友可能注意到了install.sh是可以帶參數(shù)的。我寫(xiě)代碼的時(shí)候已經(jīng)設(shè)計(jì)了幾個(gè)常用的安裝卸載功能,具體如下:

復(fù)制代碼 代碼如下:


#直接執(zhí)行./install.sh 將會(huì)顯示如下幫助信息
###################################################################
#  CCkiller version 1.0.1 Author: Jager ge@zhangge.net>          #
#  For more information please visit https://zhangge.net/5066.html #
#-----------------------------------------------------------------#
#  Copyright @2015 zhangge.net. All rights reserved.              #
###################################################################
 
Usage: configure.sh [OPTIONS]
 
OPTIONS:
-h | --help : Show help of CCkiller
-u | --update : update Check for CCkiller [not available now]
-c | --config : Edit The configure of CCkiller again
-i | --install : install CCkiller version 1.0.0 to This System
-U | --uninstall : Uninstall cckiller from This System

其中:


-u 參數(shù)用來(lái)升級(jí)工具,不過(guò)目前由于沒(méi)時(shí)間還沒(méi)寫(xiě),所以不可用(Ver 1.0.2已支持在線更新)

-i 參數(shù)用來(lái)安裝工具,如果已安裝則會(huì)提示并終止

-c 參數(shù)用來(lái)配置工具,方便安裝后隨時(shí)修改工具配置

-U 參數(shù)用來(lái)卸載工具,注意是大寫(xiě)哦!

因此,我們可以使用 ./install.sh -U 如圖卸載CCKiller:

四、攻防測(cè)試

成功安裝并啟用CCKiller之后,我們可以使用壓力測(cè)試工具來(lái)測(cè)試?yán)诤歪尫判Ч热鐆ebbench 或 ab等。
假如CCKiller設(shè)定的并發(fā)限制為100,檢查間隔為10s,使用webbench如下測(cè)試:
webbench -c 101 -t 60 http://www.yourwebsite.com/
啟動(dòng)測(cè)試后,你可以立即去服務(wù)器上查看防火墻:
iptables -nvL
多刷幾下,就可以看到webbench所在服務(wù)器IP已經(jīng)在DROP規(guī)則中了。
確定已被拉黑之后,你等個(gè)10分鐘再來(lái)看防火墻,可以發(fā)現(xiàn)webbench所在服務(wù)器IP已經(jīng)消失了,成功釋放!

Ps:如果郵件發(fā)送功能無(wú)誤,那么應(yīng)該也收到了工具發(fā)來(lái)的告警郵件,比如有一個(gè)飽受CC攻擊煎熬的站長(zhǎng)給我發(fā)來(lái)的反饋:

五、更多說(shuō)明①、配置并發(fā)限制
CCKiller配置最大連接數(shù)限制時(shí),建議根據(jù)單個(gè)網(wǎng)頁(yè)產(chǎn)生的并發(fā)數(shù)來(lái)判斷。

情況A: 你網(wǎng)站做了動(dòng)靜分離,那么靜態(tài)的請(qǐng)求就到另一個(gè)域名了(假設(shè)靜態(tài)資源托管在另一臺(tái)服務(wù)器或是CDN),單個(gè)IP請(qǐng)求一個(gè)頁(yè)面可能就只會(huì)產(chǎn)生若干并發(fā)(假設(shè)5個(gè)),我們假設(shè)某個(gè)用戶很猛,他喜歡快速拖拽打開(kāi)你網(wǎng)站的多個(gè)網(wǎng)頁(yè),比如同時(shí)打開(kāi)10個(gè),那么正常用戶的正常最大并發(fā)你也可以基本確定了吧?即并發(fā)限制:10x5=50。如果有人同時(shí)刷新你幾十個(gè)頁(yè)面,要說(shuō)沒(méi)惡意你也不相信吧?

情況B: 如果沒(méi)有做動(dòng)靜分離,那么一個(gè)頁(yè)面產(chǎn)生的并發(fā)可能就比較多了,每個(gè)css、js、圖片都會(huì)產(chǎn)生一次請(qǐng)求。所以,在這種情況下就需要稍微計(jì)算一下你網(wǎng)站單個(gè)頁(yè)面產(chǎn)生的并發(fā)請(qǐng)求,比如一個(gè)單頁(yè)面會(huì)產(chǎn)生30個(gè)請(qǐng)求,那么你也需要考慮用戶可能會(huì)連續(xù)拖拽多個(gè)頁(yè)面的情況,假設(shè)我允許用戶可以同時(shí)刷新10頁(yè)面,那么并發(fā)限制就可以設(shè)置為300了,依此類(lèi)推。

容錯(cuò):從A和B來(lái)看,CCKiller其實(shí)是有一個(gè)盲點(diǎn)的,那就是如果用戶IP是某個(gè)公司的統(tǒng)一出口,也就是代理上網(wǎng)IP,那么工具就容易誤殺無(wú)辜了。所以,除了A和B,你還得考慮你網(wǎng)站的受眾人群類(lèi)型。比如,我就一個(gè)個(gè)人博客,同一時(shí)刻被一個(gè)公司的多名同時(shí)多窗口拖拽訪問(wèn),這種情況也不多吧?如果可能存在這種受眾人群,那么這個(gè)并發(fā)限制可以設(shè)置大一些,避免錯(cuò)殺無(wú)辜。當(dāng)然,拉黑也就10分鐘而已,也不至于“一失足成千古恨”。。。

當(dāng)然,不管哪種情況,并發(fā)限制都可以比預(yù)估設(shè)置高那么一些,這個(gè)自行斟酌吧!
②、不足與完善
CCKiller是我最近利用閑暇時(shí)間,匆忙之作,難免會(huì)有各種問(wèn)題。也沒(méi)時(shí)間進(jìn)行測(cè)試和完善。不過(guò)目前還是有數(shù)位站長(zhǎng)在使用,暫未反饋異常。當(dāng)然, 我分享的是在線安裝方式,也是為后續(xù)的更新提供方便。不過(guò)對(duì)比我以前寫(xiě)的防御腳本,CCKiller算是有了長(zhǎng)足的進(jìn)步了,很簡(jiǎn)單的安裝,更強(qiáng)大的功能!

功能計(jì)劃:

A. 在線升級(jí)功能

這個(gè)不用多說(shuō),現(xiàn)有的工具已經(jīng)預(yù)留了,后面可能會(huì)加入版本判斷和更新的功能。

B. 加入其他安全防護(hù)設(shè)置

目前工具其實(shí)是趕鴨子上架一樣,直接就檢查,也沒(méi)有對(duì)系統(tǒng)環(huán)境做一些初始化的設(shè)置。比如網(wǎng)站通用的iptables設(shè)置、sync洪水攻擊防御等。后續(xù)會(huì)在安裝的時(shí)候會(huì)作為一個(gè)可選功能。

C. 集成傻瓜式的防火墻控制功能

并不是每個(gè)站長(zhǎng)都會(huì)熟練操作iptables,所以可能考慮給cckiller這個(gè)命令集成一個(gè)ban和unban ip的功能,比如禁止一個(gè)ip,執(zhí)行 cckiller -D $ip 即可,降低 iptables 的使用門(mén)檻。

另外,值得說(shuō)明是,CCKiller只適合裸奔的網(wǎng)站,而不適合使用CDN的網(wǎng)站,因?yàn)槭褂肅DN之后,請(qǐng)求過(guò)來(lái)的IP都是CDN節(jié)點(diǎn),你總不能把CDN節(jié)點(diǎn)也拉黑了吧?(Ps:其實(shí)也可以用,你把并發(fā)限制稍微設(shè)置高一些就好了,就算拉黑CDN節(jié)點(diǎn)也就拉黑10分鐘而已,不至于影響過(guò)大)

針對(duì)這個(gè)問(wèn)題,后續(xù)我會(huì)找時(shí)間研究下直接從Nginx日志里面取得真實(shí)來(lái)源IP來(lái)拒絕訪問(wèn)。目前已經(jīng)有了階段性的進(jìn)展了,敬請(qǐng)期待!
附錄:更新記錄

2015-09-23 Ver 1.0.1:

支持白名單為IP段新增拉黑改為判斷 iptables 是否已存在操作IP的判斷方式;增加日志記錄功能,每天一個(gè)日志文件,位于安裝目錄下的log文件內(nèi);集成手動(dòng)拉黑IP和解封IP功能,使用cckiller -b $IP拉黑,使用 cckiller -u $IP 解封。

2015-11-29 Ver 1.0.2:

新增在線更新功能,執(zhí)行 ./install.sh -u 即可檢測(cè)是否有新版本:

如果發(fā)現(xiàn)有新版本則顯示更新內(nèi)容,并提示是否執(zhí)行更新。選擇之后將會(huì)更新到新版本,需要重新配置,但是IP或端口白名單會(huì)保持不變。

新增端口白名單功能

應(yīng)網(wǎng)友需求,新增了這個(gè)端口白名單功能。在配置CCKiller的最后一項(xiàng)會(huì)提示輸入端口白名單:

如果需要排除某些端口,請(qǐng)如圖最后一行所示,輸入端口并已逗號(hào)分隔,比如 21,2121,8000

本次更新為非必須功能,在用的朋友可以按需更新,當(dāng)然新增了在線更新這個(gè)功能,也強(qiáng)力推薦更新一下,方便后續(xù)檢測(cè)CCKiller是否是最新版本。

更新難免存在不可意料的紕漏,使用中存在任何問(wèn)題請(qǐng)留言告知,謝謝!

您可能感興趣的文章:
  • Linux如何處理文件已刪除但空間不釋放的問(wèn)題
  • 手動(dòng)釋放Linux服務(wù)器內(nèi)存(具體操作步驟)
  • Linux強(qiáng)制釋放占用端口以及Linux防火墻端口開(kāi)放方法詳解
  • linux 內(nèi)存清理/釋放命令總結(jié)
  • Linux 內(nèi)存釋放命令詳解
  • 詳解Linux手動(dòng)釋放緩存的方法
  • Linux文件刪除后空間未釋放問(wèn)題詳解

標(biāo)簽:滁州 優(yōu)質(zhì)小號(hào) 鎮(zhèn)江 武漢 丹東 百色 六盤(pán)水 自貢

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《CCKiller:Linux輕量級(jí)CC攻擊防御工具,秒級(jí)檢查、自動(dòng)拉黑和釋放》,本文關(guān)鍵詞  CCKiller,Linux,輕量級(jí),攻擊,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《CCKiller:Linux輕量級(jí)CC攻擊防御工具,秒級(jí)檢查、自動(dòng)拉黑和釋放》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于CCKiller:Linux輕量級(jí)CC攻擊防御工具,秒級(jí)檢查、自動(dòng)拉黑和釋放的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 剑川县| 文登市| 威信县| 凯里市| 册亨县| 泗洪县| 获嘉县| 屯门区| 达州市| 南川市| 麟游县| 平舆县| 营口市| 犍为县| 武安市| 河曲县| 德惠市| 大埔县| 巴南区| 富民县| 钟山县| 神池县| 革吉县| 娱乐| 南安市| 德惠市| 东源县| 龙江县| 合水县| 偃师市| 江达县| 正镶白旗| 黄浦区| 大洼县| 开阳县| 乌海市| 松潘县| 朔州市| 高雄市| 旌德县| 岳阳市|