先森的1M帶寬小服務器老是收到帶寬超限告警,而且告警時間非常不規律,有時候在上班,有時候又在半夜,加上先森不怎么在意,就沒怎么管。但是上周末先森在家的時候收到了告警,而且還是持續告警,正好有時間,又復現了,先森就想著把這問題解決一下。

服務器帶寬超限告警
排查根因
剛打開破電腦,就收到告警恢復的短信,但是來都來了,先森還是想著看能不能找到蛛絲馬跡。打開iftop一籌莫展的時候,發現出流量又增加了,這不是讓先森逮了個正著么。
但是iftop不顯示進程信息啊,先森也不知道流量是哪里來的,然后搜了一下,發現可以使用`iftop -P`來顯示端口,然后根據端口,使用lsof或ss、netstat等命令來查這個端口,進而找到pid。
找了一圈,先森發現持續產生流量的竟然是Nginx服務,看來是網站被人攻擊了,導致帶寬超限。先森域名用的有點多,還好日志都放在一個目錄,直接通過一個cat *.log |grep IP找到了被攻擊的網站,就是本站域名。
進而分析網站日志,發現都和xmlrpc.php有關,當時網站日志一直在刷如下圖的請求。

網站請求日志
開始先森還以為是直接請求的這個文件,但是仔細看了一下,好像還不是。這里請求的是網站根目錄,xmlrpc.php這個位置是請求referer。
解決問題
先森去搜了一下,看來受到xmlrpc.php影響的不在少數。而且這玩意好像影響還挺大,除了可以拿來做DDoS攻擊以外,竟然還能繞開CDN來獲取服務器真實IP?!這還得了。另外還可以突破登錄密碼嘗試限制,著實恐怖如斯。
先森搜到的文章中給出了關閉xmlrpc.php的辦法,但是這些都是在WordPress或者Nginx或Apache這些web服務器上做限制,先森就不想讓這些服務請求到先森的服務器。

xmlrpc.php攻擊
另外先森對攻擊者能通過xmlrpc.php能拿到服務器真實IP也很在意,但是通過Nginx記錄的客戶端IP去查了一下,發現都是EO的回源IP,那就還好。

IP歸屬查詢
之前EO有活動,可以兌換EO免費版,號稱永久免費。但是貌似限制也在逐步加碼,不過總比先森之前買CDN流量包好多了,反正先森也只是保證博客活著,也沒怎么管理了。
言歸正傳,EO全程是邊緣安全加速平臺,在CDN的基礎上強調了安全,也就是類似CDN+WAF的一個產品。那么用了EO,就把安全這塊也用起來。
之前也說了,先森開始以為是直接訪問的是/xmlrpc.php這個文件,然后先森在安全防護->web防護->自定義規則這里禁止訪問xmlrpc.php這個文件,但是發現請求日志依舊框框的刷,開始還以為是像CDN一樣,改一個配置就要部署5~10分鐘,結果發現沒效果就是沒效果。
然后發現是通過“http://capjsj.cn/xmlrpc.php”這個referer來請求網站根目錄,特征非常明顯了,直接在自定義規則禁止該referer的請求即可,真的是配置上的那一刻,世界都安靜了,日志像是按了暫停鍵一樣。這一刻,大贊EO。

EO自定義規則配置
防護效果
目前距離配置上這個EO自定義規則已經過去一周了,12月14日先森配置的規則,當天xmlrpc.php這個referer的請求數量高達1.5萬條,之前就都是0了,防護效果還是非常OK的。

防護效果
今天又是周末,閑著也是閑著,記錄一下。
轉載請注明出處來自http://www.cnidcc.cn/server_bandwidth_alert.html

川公網安備 51011202000104號