AWS網站主機防護案例分享

流量高、CPU用量高不一定是正常的客戶連線造成的,也不一定是受到DoS或DDoS攻擊,很多時候只是全球各大網路公司的網路爬蟲在爬網站主機的內容而已!!

早上就陸陸續續有收到客戶的網站主機CPU用量過高的警示簡訊(INSTAWATCHER發給我的),有時候客戶若有去參展或花錢廣告等行銷活動時,大多都會有短暫的流量高峰,那時CPU用量也會跟著變高,所以不算特別異常。

客戶放在AWS的網站主機CPU用量突然拉高

下午時我還持續有收到CPU用量過高的警訊,這時我就覺得不太正常了,因為大多數的時間CPU用量只在40~70%左右,而且不會持續太久,所以我決定連進伺服器查看Log!

透過INSTAWATCHER很快就能知道主要是因為mysqld服務造成的

查了幾個Log,找到了問題所在,原來是有惡意攻擊之外,最大的問題是今天的爬蟲程式太活躍了,才半天就有14375次的連線數量,等於平均每小時就有1000次的連線記錄,難怪伺服器資料庫程序的CPU用量會一直那麼高… Orz

從網站的Log中可看到許多攻擊的IP來源
從網站的Log中也能簡單找出一些網路爬蟲程式的IP
網路爬蟲程式雖然有益SEO但連線太瘋狂反而造成問題

先將這些爬蟲的IP封鎖之後(網路爬蟲IP數量超誇張,實際上超過2000個IP),主機的CPU用量很快就降下來了!!!

封鎖一些數量太多的爬蟲和惡意IP後就降下來了

所以別認為主機流量和點擊數高就是好事,也別動不動就認為主機要趕緊升級或擴展,也許只是白白浪費錢滿足了網路爬蟲,這時用Linux系統的Shell程式很快就能設好防護!

這就是我代管雲端主機的日常工作之一。

從雲端廠商的管理平台(例如AWS的CloudWatch)是看不出來這類問題的,不論是AWS、Azure和GCP管理平台都一樣,因為它們只提供VM的運作效能狀態,頂多只能看到CPU用量變高,細節就要靠自己去查各種Log !

若是使用SNMP協定來監看伺服器主機狀態的軟體(例如Nagios、Cacti等)也是一樣只能看到CPU用量變高,細節一樣要靠自己去查各種Log!


因為我是用INSTAWATCHER監看,INSTAWATCHER可以幫我記錄高CPU用量的程序,所以我才能很快找出問題的徵結點,然後去進行處理,真的很好用!

為了協助不同階段的客戶使用雲端,我開發了不同的工具
需要技術專業、服務用心、經驗豐富的顧問時歡迎來找我