<span id="7ztzv"></span>
<sub id="7ztzv"></sub>

<span id="7ztzv"></span><form id="7ztzv"></form>

<span id="7ztzv"></span>

        <address id="7ztzv"></address>

            原文地址:http://drops.wooyun.org/tips/2457

            0x00 背景


            這兩天一個客戶反映自己的網站經常出現mysql 1040錯誤,他的在線用戶才不到一千,mysql配置也沒問題,vps用的時linode160+刀一個月的。

            沒理由出現這種情況,于是,我進行了一系列的排查。top了一下,mysqld跑到了900%多。

            0x01 解決方案&思路


            我懷疑是CC攻擊,鑒于系統是centos,我運行了下面的這兩行命令。

            netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20 | netstat -ant |awk '/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A[i],i}' |sort -rn|head -n20 
            

            把請求過多的IP記錄下來。

            174.127.94.*
            199.27.128.*
            199.27.133.*
            

            開始封禁IP,具體可以看我下面運行的命令。本文主要是采用iptables進行封禁,iptables使用方法請見:Iptables入門教程

            iptables -I INPUT -s 174.127.94.0/16 -j DROP
            iptables -I INPUT -s 199.27.128.0/16 -j DROP
            iptables -I INPUT -s 199.27.133.0/16 -j DROP
            iptables -I INPUT -s 193.1.0.0/8 -j DROP 【慎用封禁整個段】
            

            運行上面這些命令之后我們已經完成封禁操作了,不過還得保存一下,如果不保存的話重啟系統之后上面設定的規則會消失。

            service iptables save 
            

            運行下面這行命令,來查看誰的訪問量最高(需要服務器安裝tcpdump)

            tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -20 
            
            tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
            listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
            1000 packets captured
            1000 packets received by filter
            0 packets dropped by kernel
            1420 IP 174.7.7.*
            

            然后將packets過多的IP記錄下來,用上面的方法封禁。

            運行

            service iptables save 
            

            保存然后重啟?

            iptables service?iptables restart 
            

            這一步建議多進行幾次,發現異常IP用上面的辦法封禁。如果出現誤封可以參考下面這行解封命令進行解封

            iptables -D INPUT -s 222.142.2.0/16 -j DROP
            

            0x02?常用命令


            封單個IP的命令是:

            iptables -I INPUT -s 211.1.0.0 -j DROP
            

            封IP段的命令是:

            iptables -I INPUT -s 211.1.0.0/16 -j DROP
            iptables -I INPUT -s 211.2.0.0/16 -j DROP
            iptables -I INPUT -s 211.3.0.0/16 -j DROP
            

            封整個B段的命令是:

            iptables -I INPUT -s 211.0.0.0/8 -j DROP
            

            封幾個段的命令是:

            iptables -I INPUT -s 61.37.80.0/24 -j DROP
            iptables -I INPUT -s 61.37.81.0/24 -j DROP
            

            0x03 后續


            進行了上面的操作之后,客戶的網站正常了,幾乎秒開,當然這和他的vps給力也有一定的關系。top了一下,服務器資源也正常了。

            <span id="7ztzv"></span>
            <sub id="7ztzv"></sub>

            <span id="7ztzv"></span><form id="7ztzv"></form>

            <span id="7ztzv"></span>

                  <address id="7ztzv"></address>

                      亚洲欧美在线