3天前網站遭遇DDoS攻擊,持續時間10分鐘左右,時間較短最後不了了之,然而,昨天下午出現了持續較久的攻擊,對此不得不作出反擊,本文第一次嘗試將以小說的形式來分享一下被攻擊經歷。nginx
分享一篇我基友同事的一篇文章,採用搞笑幽默的寫法,閱讀起來挺有意思的,感興趣的童鞋能夠關注他的公衆號web
文章來源:yq.aliyun.com/articles/65…編程
人在公司坐,鍋從天上來。昨天下午剛從門派會議結束出來,網站客服小妹就匆忙過來講:網站出現問題了,很卡,有時還訪問不了。我打開網站訪問一下,訪問不了,再看了一下預警系統,也給釘釘發送了多條預警信息,果然出問題了。結合着2天前也出現了這種狀況,知道這是黑客經過第一次試探以後,如今正式發起猛烈攻擊了。瀏覽器
因爲是公司的一個社區網站,訪問量也不高,高層的意見是再也不增長人手去開發拓展新功能,維持網站正常運行便可,因此網站是擱淺了一年多,指派了我來維護,對於以往的一些配置並無過多的瞭解。按照道理,一個小網站並無什麼攻擊價值,可是卻出現了屢次相同的攻擊事件。也許是公司對手的搞事情,由於之前出現過挖人才事件。我知道對於此次攻擊,並不能再像之前那樣聽任無論了,否則之後還會出現相同的事情,是時候迎接挑戰了。緩存
對方攻擊在持續進行中。對於這樣的狀況,首先到了服務器的雲監控控制檯中觀看總體狀況。發現網絡流出率與網絡流量還有TCP鏈接數均很高。 用神器XShell鏈接到該服務器 使出free -m命令安全
free -m
複製代碼
top -c
複製代碼
這時發現鏈接控制檯就很是卡了,沒有完整展現出來服務器
對於這樣的狀況再使出一招ps -ef | grep nginx查看nginx的進程號微信
ps -ef | grep nginx
複製代碼
kill -9 8625 25610
複製代碼
這時再往雲監控控制檯觀察發現全部的指標都開始恢復正常了網絡
再次啓動nginx併發
./nginx -c /usr/local/nginx/conf/nginx.conf
複製代碼
發現各項指標又開始飆升,對方是不願收手啊
對此再使出一招 tail -f access.log查看nginx日誌(該圖是剛截的,當時沒有截圖)
tail -f access.log
複製代碼
終現敵蹤 經過日誌發現有幾個地址被大量訪問 GET /sw_db_pics/5bbe05a9e4b087bd13ca362c 經過分析,知道這是一個圖片連接,是早期其餘開發人員配置的圖片訪問地址,知道了這個就好辦了,對方居然根據圖片沒設防盜鏈進行攻擊致使TCP訪問量大增。
再次出擊 經過 vi nginx.conf命令
vi /usr/local/nginx/conf/nginx.conf
複製代碼
找到了如下代碼:
location /sw_db_pics/ {
……
}
複製代碼
使出一招過濾防盜鏈,增長代碼以下:
location /sw_db_pics/ {
valid_referers xxx.com;
if ($invalid_referer) {
return 403;
}
……
}
複製代碼
過濾掉了非指定網站進來的鏈接統一返回403錯誤,這時再重啓一下nginx
./nginx -t
./nginx -s reload
複製代碼
再次查看日誌
本覺得剛纔的操做可以解決問題了,我也能夠到茶水間去喝杯82年的咖啡壓壓驚,叫了網站客服小妹再試一下網站是否正常。發現PC端網站沒有問題,可是微信公衆號端卻出現圖片沒法訪問的狀況。公司的網站作了PC版跟微信版的。 在次到nginx上查看日誌發現微信端進入的網站在日誌裏的UA居然沒有帶域名,再把微信端的網址在PC瀏覽器上訪問一下發現是能夠正常顯示圖片的,難道微信內置瀏覽器是使用了代理的嗎?referer居然是空的,固然本身也沒去研究過微信的內置是怎麼實現的,有空能夠去研究一下。這樣對於剛纔的一頓操做算是失敗了。
既然不能經過這樣的設置,只能再找別的辦法了。經過日誌分析,該攻擊方式頗有特色,瀏覽器的內核居然都是 Dalvik/2.1.0(谷歌的Android虛擬機) 或者 WeChat/6.7.2.34(微信的)
這樣就能夠經過過濾特定的瀏覽器來達到攔截效果 接下來使出一招查看UA攻擊的狀況
tail -n 10000 /usr/local/nginx/logs/access.log | awk -F\" '{A[$(NF-1)]++}END{for(k in A)print A[k],k}' | sort -n | tail
複製代碼
nginx對應位置修改以下:
location /sw_db_pics/ {
valid_referers none blocked xxx.com;
if ($invalid_referer) {
return 403;
}
if ($http_user_agent ~* (Dalvik/*|\-|WeChat/*|Alexa\ Toolbar|Sogou\ web|Semrushbot|Scrapy|Curl|HttpClient)) { return 403; } …… } 複製代碼
再次重啓nginx,發現PC端網站與微信端網站都能正常訪問了,這算是短暫的勝利了吧!
經過此次攻擊經歷,其實網絡並非想象中那樣安全,看似平靜,實質上波濤洶涌。對於DDoS攻擊,儘可能多作一些安全性設置,好比:雲監控設置報警閾值,nginx隱藏版本防止已知漏洞被利用,設置IP白名單、設置緩存、設置IP鏈接數、併發量等等
對於此次短暫的交鋒,自身對安全意識有必定的提高,接下來可能還會有各類各樣的攻擊出現,但願本身可以接住考驗哈~
第一次這樣寫文章,也算是緩解一下情緒吧,好了下班了,喝杯82年的雪碧壓壓驚~~~~~~~~