綠色(sè)資(zī)源網:您身邊最放心的安全下載站! 最新軟件|熱門排行|軟件分類|軟(ruǎn)件專題|廠商大全

綠色(sè)資(zī)源網

技術教程
您的位置:首頁服務器類Linux服務(wù)器(qì) → linux服(fú)務(wù)器並webbench攻擊解決方案:封鎖攻擊者ip

linux服務器並webbench攻擊解決方案:封鎖攻(gōng)擊者ip

我(wǒ)要(yào)評論 2013/03/29 12:01:23 來源:綠色資源網(wǎng) 編(biān)輯:www.ynaad.com [ ] 評論(lùn):0 點擊:377次

首先我來說一下這個被(bèi)攻擊的網站的大概部署狀況.這個網站主要是nginx+mysql+php,有兩台服(fú)務器分(fèn)別放(fàng)了web和數據庫,web隻對外開(kāi)啟了80端口操作係統是centos,而數據庫服務器則在內網,攻擊者的手段其實很簡單,用webbench網站壓力測試工具發送大量的請求到服務器,之前(qián)的(de)時候發送每一個(gè)請求之後數據庫(kù)就會相應,然後讀取內容最(zuì)終顯示,造成數據庫和web之(zhī)間大量(liàng)的交換數據,甚至導致mysql達到連接(jiē)數上限,請求被拒絕,而且攻擊者時間挺多的,他(tā)不停地換浮動ip,因此直接用防火牆封鎖ip沒意義.

剛開始我(wǒ)的做(zuò)法是,用php取得攻擊者的agent頭,判斷是不是webbench來訪,如果是就die掉,不在請(qǐng)求數據庫,確(què)實(shí)挺有效,數據庫(kù)不會再超出限製了,但是對方頻繁的發送請求過來,導致網絡(luò)帶寬被嚴重(chóng)消耗,看來得想想其他辦法,最終想到了一個解(jiě)決方法且實際測試發現可行,因此分享給大(dà)家,其實我的做法原理很簡單(dān):用(yòng)php取得用戶agent頭判斷是否是webbench來源,如果是的話就在服務器上寫一個shell文件,這個文件的內容就是封鎖IP的規則(zé),

然後再用chmod函(hán)數修改一下這個文件讓其可執行,再用cron服務讀取這個文件執行,把ip封鎖(suǒ)掉,整個過程全部自動(dòng)化完成不需要人為幹預,另外在(zài)封(fēng)鎖的時候給我發一封email通知我有個倒黴蛋被幹掉了,這樣就(jiù)行了.

具體實現代碼如下:

IF(isSet($_SERVER['HTTP_USER_AGENT']) And Trim($_SERVER['HTTP_USER_AGENT'])!='') {

    $_SERVER['HTTP_USER_AGENT']=StrToLower($_SERVER['HTTP_USER_AGENT']);

    IF(StriStr($_SERVER['HTTP_USER_AGENT'],'webbench')!==False) {

        $p='/home/www/webbench.sh';

        $_SERVER['REMOTE_ADDR']=isSet($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : 'unknow';

        <span style="color: #ff0000;">File_Put_Contents($p,"#!/bin/bash\niptables -I INPUT -s {$_SERVER['REMOTE_ADDR']} -j DROP;\n",LOCK_EX);

</span>     Chmod($p,0755);

        chown($p,'www');

        <span style="color: #ff0000;">Function sMail($to,$tit,$msg) {

            IF(Filter_var($to,FILTER_VALIDATE_EMAIL)==''){

                throw new Exception('郵箱地址錯誤!');

            }

            $tit='=?UTF-8?B?'.Base64_Encode($tit).'?=';

            $msg = str_replace("\n.","\n..",$msg);      //Windows如果在一行開頭發現一個句(jù)號則會被刪掉,要避免此(cǐ)問題將單個句號替換成(chéng)兩個句號

            Return Mail($to,$tit,$msg,'From:No-reply@adm.bossadm.com.tw'."\n".'Content-Type:text/html;charset=utf-8');

        }

        sMail('see7di@gmail.com','【WebBench又開始了t】!',date('Y-m-d H:i:s',time())." {$_SERVER['REMOTE_ADDR']}");</span>

        Header('locations:http://127.0.0.1');

        Die();

    }

}

後來我又做了一次調整,把發(fā)email的部份寫入了shell文件內,不再用php發email,因(yīn)為那會灌爆(bào)你(nǐ)的(de)信箱(xiāng),把上邊的代碼修改成:

IF(isSet($_SERVER['HTTP_USER_AGENT']) And Trim($_SERVER['HTTP_USER_AGENT'])!='') {

    $_SERVER['HTTP_USER_AGENT']=StrToLower($_SERVER['HTTP_USER_AGENT']);

    IF(StriStr($_SERVER['HTTP_USER_AGENT'],'webbench')!==False) {

        $p='/home/www/webbench.sh';

        $_SERVER['REMOTE_ADDR']=isSet($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : 'unknow';

        File_Put_Contents($p,"#!/bin/bash\niptables -I INPUT -s {$_SERVER['REMOTE_ADDR']} -j DROP;\necho \"{$_SERVER['REMOTE_ADDR']} - `date`\" | mail -s \"WebBench-www.ynaad.com\" see7di@gmail.com\n",LOCK_EX);

        Chmod($p,0755);

        chown($p,'www');

        Header('locations:http://127.0.0.1');

        Die();

    }

}

關鍵詞(cí):linux服務(wù)器

閱讀本文後您有什麽感想? 已有(yǒu) 人給出評價!

  • 0 歡迎喜歡
  • 0 白癡
  • 0 拜托
  • 0 哇
  • 0 加油
  • 0 鄙視
免费人欧美成又黄又爽的视频丨一本色道久久88综合日韩精品丨国产专区日韩精品欧美色丨午夜无遮挡男女啪啪视频丨国产欧美日韩综合精品一区二区丨亚洲精品无码不卡在线播HE丨亚洲精品国产精品国自产观看丨日韩国产高清av不卡