国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

linux服務器并webbench攻擊解決方案

2020-05-27 13:44:30
字體:
來源:轉載
供稿:網友

 首先我來說一下這個被攻擊的網站的大概部署狀況.這個網站主要是nginx+mysql+php,有兩臺服務器分別放了web和數據庫,web只對外開啟了80端口操作系統是centos,而數據庫服務器則在內網,攻擊者的手段其實很簡單,用webbench網站壓力測試工具發送大量的請求到服務器,之前的時候發送每一個請求之后數據庫就會相應,然后讀取內容最終顯示,造成數據庫和web之間大量的交換數據,甚至導致mysql達到連接數上限,請求被拒絕,而且攻擊者時間挺多的,他不停地換浮動ip,因此直接用防火墻封鎖ip沒意義.

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

然后再用chmod函數修改一下這個文件讓其可執行,再用cron服務讀取這個文件執行,把ip封鎖掉,整個過程全部自動化完成不需要人為干預,另外在封鎖的時候給我發一封email通知我有個倒霉蛋被干掉了,這樣就行了.

具體實現代碼如下:

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/bashniptables -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如果在一行開頭發現一個句號則會被刪掉,要避免此問題將單個句號替換成兩個句號

            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(Location:http://127.0.0.1);

        Die();

    }

}

后來我又做了一次調整,把發email的部份寫入了shell文件內,不再用php發email,因為那會灌爆你的信箱,把上邊的代碼修改成:

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/bashniptables -I INPUT -s {$_SERVER[REMOTE_ADDR]} -j DROP;necho "{$_SERVER[REMOTE_ADDR]} - `date`" | mail -s "WebBench-www.downcc.com" see7di@gmail.comn",LOCK_EX);

        Chmod($p,0755);

        chown($p,www);

        Header(Location:http://127.0.0.1);

        Die();

    }

}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 固镇县| 教育| 聂拉木县| 宿州市| 霍城县| 高州市| 武宣县| 呼伦贝尔市| 丹巴县| 长子县| 和龙市| 县级市| 陵水| 读书| 高台县| 疏附县| 丰县| 曲沃县| 南京市| 长子县| 石泉县| 大悟县| 南京市| 鹿邑县| 揭东县| 澄江县| 甘肃省| 浮山县| 秦皇岛市| 绵竹市| 旅游| 旬阳县| 内丘县| 四子王旗| 铜陵市| 奇台县| 涿州市| 芦山县| 峨边| 苗栗市| 财经|