午夜福利院在线观看免费,天堂最新版在线,色噜噜精品一区二区三区,无码一区二区三区中文字幕,丝袜美腿一区二区三区

Linux寶塔面板 防CC攻擊教學(xué)

前言

CC攻擊是目前互聯(lián)網(wǎng)上最常見的攻擊方式,具有成本低,效果好的優(yōu)點(diǎn),往往幾百塊錢就可以攻擊你一周,讓你網(wǎng)站痛不欲生。

本教程只防CC攻擊,不能防DDOS,防DDOS請(qǐng)購買百度云加速或高防IP解決。

實(shí)測(cè):1核1G內(nèi)存撐住700多代理IP持續(xù)攻擊,屹立不倒,且CPU在45%左右徘徊。

本教程借助根據(jù)CPU/內(nèi)存大小 優(yōu)化LNMP環(huán)境配置,且使用了類似cfCDN的防CC攻擊特點(diǎn)并做了一些優(yōu)化

什么是CC攻擊

攻擊者借助代理服務(wù)器生成指向受害主機(jī)的合法請(qǐng)求,實(shí)現(xiàn)DDOS和偽裝就叫:CC(ChallengeCollapsar)。 CC主要是用來攻擊頁面的。大家都有這樣的經(jīng)歷,就是在訪問論壇時(shí),如果這個(gè)論壇比較大,訪問的人比較多,打開頁面的速度會(huì)比較慢,訪問的人越多,論壇的頁面越多,數(shù)據(jù)庫壓力就越大,被訪問的頻率也越高,占用的系統(tǒng)資源也就相當(dāng)可觀。 一個(gè)靜態(tài)頁面不需要服務(wù)器多少資源,甚至可以說直接從內(nèi)存中讀出來發(fā)給你就可以了,但是論壇就不一樣了,我看一個(gè)帖子,系統(tǒng)需要到數(shù)據(jù)庫中判斷我是否有讀帖子的權(quán)限,如果有,就讀出帖子里面的內(nèi)容,顯示出來——這里至少訪問了2次數(shù)據(jù)庫,如果數(shù)據(jù)庫的數(shù)據(jù)容量有200MB大小,系統(tǒng)很可能就要在這200MB大小的數(shù)據(jù)空間搜索一遍,這需要多少的CPU資源和時(shí)間?如果我是查找一個(gè)關(guān)鍵字,那么時(shí)間更加可觀,因?yàn)榍懊娴乃阉骺梢韵薅ㄔ谝粋€(gè)很小的范圍內(nèi),比如用戶權(quán)限只查用戶表,帖子內(nèi)容只查帖子表,而且查到就可以馬上停止查詢,而搜索肯定會(huì)對(duì)所有的數(shù)據(jù)進(jìn)行一次判斷,消耗的時(shí)間是相當(dāng)?shù)拇蟆?CC就是充分利用了這個(gè)特點(diǎn),模擬多個(gè)用戶(多少線程就是多少用戶)不停的進(jìn)行訪問(訪問那些需要大量數(shù)據(jù)操作,就是需要大量CPU時(shí)間的頁面).這一點(diǎn)用一個(gè)一般的性能測(cè)試軟件就可以做到大量模擬用戶并發(fā)。

你是否受到了CC攻擊

1.網(wǎng)站訪問緩慢,報(bào)503錯(cuò)誤(nginx拒絕連接),502錯(cuò)誤(php掛逼)

2.服務(wù)器CPU 100%;

基本上確診被C了。

LNMP環(huán)境優(yōu)化

1.nginx優(yōu)化:nginx沒有過多的優(yōu)化,一般nginx都死被php拖死的。簡(jiǎn)稱:扶不起來

2.寶塔中nginx的防火墻試效果并不理想,主機(jī)吧用過幾次,都是幫客戶設(shè)置的,完全沒用,而且有誤殺幾率視乎有點(diǎn)高。

3.php優(yōu)化:服務(wù)器掛壁基本都是php進(jìn)程太多導(dǎo)致的了。nginx是個(gè)傳菜的,php就是真正花時(shí)間吃飯的。

Linux寶塔面板 防CC攻擊教學(xué)插圖

4.如圖:簡(jiǎn)單理解,最少15個(gè)人在廠里,最多50個(gè)人同時(shí)干活,如果有35個(gè)人以上沒干活就開除掉。

5.根據(jù)CPU核數(shù)設(shè)定起始進(jìn)程數(shù)和最小空閑,這樣可以發(fā)揮正常狀態(tài)的最大優(yōu)勢(shì),加快處理速度 設(shè)置為15*核數(shù) ,即1核15進(jìn)程,雙核30進(jìn)程。

6.根據(jù)內(nèi)存設(shè)置最大進(jìn)程,防止出現(xiàn)內(nèi)存爆炸,導(dǎo)致fpm掛起或者mysql等其他服務(wù)掛逼。設(shè)置為1G*(40-50),即1G內(nèi)存40-50,2G內(nèi)存80-100。

7.設(shè)置上面兩項(xiàng)可以更有效率的使用服務(wù)器。

8.如上設(shè)置并不能防止CC攻擊,但是為我接下來需要說的提供了前提。

redis + 驗(yàn)證碼 + 策略 防CC

采用redis高性能數(shù)據(jù)庫,合理的訪問策略驗(yàn)證并在超大攻擊時(shí)開啟驗(yàn)證碼訪問。讓網(wǎng)站遠(yuǎn)離CC

1.安裝redis,在寶塔軟件管理找到,安裝;

2.安裝php redis擴(kuò)展,你用哪個(gè)php就安裝哪個(gè)php的擴(kuò)展,別裝錯(cuò)了;

3.在網(wǎng)站入口,如Wordpress的index.php 頭部加入如下代碼:

header('Content-Type: text/html; charset=UTF-8'); //emlog原有代碼,復(fù)制下列代碼放在下面
 //CC攻擊停止后會(huì)盡快解除驗(yàn)證碼,回到正常狀態(tài)
 //防CC配置$IPmax = 30; //開啟驗(yàn)證碼條件 值>=php最大進(jìn)程數(shù),適當(dāng)設(shè)置更大會(huì)降低驗(yàn)證碼觸發(fā)條件,但會(huì)增大502錯(cuò)誤幾率(php掛起) 
 $IPfor = 60; //周期 這個(gè)值基本不用動(dòng)
 $IPban = 60; //扔入黑名單 60秒內(nèi)訪問超過60次即拉黑IP
 $banTime = 3600*24; //黑名單時(shí)長(zhǎng) 扔小黑屋時(shí)長(zhǎng),這種代理IP放一天感覺都少了 = =!
 $ip = ip();
 //連接本地的 Redis 服務(wù)$redis = new Redis();$redis->connect('127.0.0.1', 6379);
 //攔截黑名單if($redis->exists($ip.'ban')){
	exit('您被關(guān)進(jìn)了小黑屋,黑白網(wǎng)丨HeiBai.Org');}
 //扔黑名單檢測(cè)if($redis->get($ip.'ok') >= $IPban){
	$redis->setex($ip.'ban', $banTime, '1');}
 if($redis->exists($ip.'ok')){
	$redis->incrby($ip.'ok',1); //記錄IP 自增1}else{
	$redis->setex($ip.'ok',$IPfor,1);}
 //按需開啟防CC 小黑屋IP不會(huì)觸發(fā)該條件,所以當(dāng)一段時(shí)間以后就會(huì)解除驗(yàn)證碼。除非攻擊者換一批代理繼續(xù)攻擊。如此往復(fù)if(count($redis->keys("*ok")) > $IPmax){
	//驗(yàn)證
	if($_COOKIE['key'] == ''){
		if($_GET['cc']){
			$key = md5($ip.$_GET['cc']);
			setcookie("key",$key);
		}
	}
	//攔截代碼
	if($_COOKIE['key'] && $_COOKIE['cc'] && $_COOKIE['key'] == md5($ip.$_COOKIE['cc'])){
		//通過
	}else{
		if($_GET['cc']){
			$key = md5($ip.$_GET['cc']);
			setcookie("key",$key);
		}else{
			$cc = rand(1000,9999);
			setcookie("cc",$cc);
			//這里只是簡(jiǎn)單的構(gòu)造了一下驗(yàn)證碼,有能力可以自己更改的更安全和完美。
			echo '<!DOCTYPE html>
			<html>
			<body>
			<form action="">請(qǐng)輸入:'.$cc.'<input type="text" name="cc" value=""><input type="submit" value="繼續(xù)訪問"></form> 
			<p>訪問異常,請(qǐng)輸入驗(yàn)證碼。</p>
			</body>
			</html>';
		}
		exit();
	}}function ip() {
    if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
        $ip = getenv('HTTP_CLIENT_IP');
    } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
        $ip = getenv('HTTP_X_FORWARDED_FOR');
    } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
        $ip = getenv('REMOTE_ADDR');
    } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    $res =  preg_match ( '/[\d\.]{7,15}/', $ip, $matches ) ? $matches [0] : '';
    return $res;}

如果不會(huì)技術(shù)怎么辦?

那也沒事,直接接入百度云加速防護(hù),進(jìn)入安全功能-ADS-CC防護(hù),直接啟用強(qiáng)力防護(hù)。

Linux寶塔面板 防CC攻擊教學(xué)插圖1

給TA打賞
共{{data.count}}人
人已打賞
0 條回復(fù) A文章作者 M管理員
    暫無討論,說說你的看法吧
在線客服
主機(jī)邦
我們將24小時(shí)內(nèi)回復(fù)。
2025-05-18 11:30:07
您好,有任何疑問請(qǐng)與我們聯(lián)系!
您的工單我們已經(jīng)收到,我們將會(huì)盡快跟您聯(lián)系!
取消

選擇聊天工具: