
1. 網(wǎng)站是放在阿里云 ECS 上的, DDoS 攻擊后網(wǎng)站不能訪問(wèn)。從阿里云的后臺(tái)看到流量在 15G 左右,網(wǎng)站服務(wù)器進(jìn)入了阿里云的黑洞。
40 分鐘后網(wǎng)站從黑洞里出來(lái),瞬間又遭受攻擊并打入黑洞。接下來(lái)的 3 個(gè)小時(shí)一直重復(fù)這個(gè)過(guò)程…
2. 因?yàn)橐呀?jīng)嚴(yán)重影響業(yè)務(wù)了,所以購(gòu)買了阿里云的高防 IP 。 DNS 解析到高防 IP 后,通知客服更換源 IP 。本以為高枕無(wú)憂,結(jié)果剛過(guò)了 10 分鐘,網(wǎng)站又被打入黑洞。
攻擊者應(yīng)該是找到了新的源 IP ,直接攻擊源服務(wù)器。因?yàn)楦叻?IP 到源 IP 走的是外網(wǎng),所以源服務(wù)器進(jìn)入黑洞后,高防 IP 無(wú)法連接源 IP ,導(dǎo)致網(wǎng)站又不能訪問(wèn)。
3. 發(fā)工單咨詢了阿里云客服,答復(fù)是 使用負(fù)載均衡 ELB ,即 高防 IP->負(fù)載均衡->源 IP 。負(fù)載均衡作為橋梁,與高防 IP 走外網(wǎng),與源 IP 走內(nèi)網(wǎng),這樣即便源服務(wù)在黑洞中也可以訪問(wèn)了。
4. 對(duì)方發(fā)現(xiàn) DDos 無(wú)效后,開(kāi)始了 CC 攻擊,網(wǎng)站又陷入了癱瘓中。檢查以后發(fā)現(xiàn) Mysql 連接數(shù)過(guò)多,而且連接狀態(tài)絕大多數(shù)是 Sleep 。查看 php 的 slowlog ,找到了原因:源服務(wù)器某些頁(yè)面需要對(duì)外請(qǐng)求微信服務(wù)器,因?yàn)椴荒茉L問(wèn)外網(wǎng), php 程序阻塞住了,對(duì) Mysql 的連接不能釋放。
5. 修改代碼將微信和 QQ 相關(guān)的連接做了一個(gè)代理,對(duì)方是無(wú)法找到這個(gè)代理并打入黑洞的。
6. 攻擊者開(kāi)始變本加厲,最高時(shí)流量在 30G , QPS 有 2 萬(wàn)多,網(wǎng)站大量出現(xiàn) 502 錯(cuò)誤,看來(lái)我蹩腳的 PHP 代碼已經(jīng)扛不住了。 nginx 日志顯示其請(qǐng)求的網(wǎng)址比較固定,于是將這些頁(yè)面做了靜態(tài)化處理,并將非法的 POST 請(qǐng)求 ban 掉。哈哈!網(wǎng)站正常了。
有一些經(jīng)驗(yàn)教訓(xùn),供大家參考:
黑洞有一個(gè)觸發(fā)值,默認(rèn)是 5G ( 5GB 的閾值可以根據(jù)安全信用增加)。因?yàn)橹熬W(wǎng)站的安全信用很好,以經(jīng)提高到 12G 了。黑洞的時(shí)間最短 40 分鐘,最長(zhǎng) 2 個(gè)半小時(shí)。整個(gè)攻防過(guò)程中,網(wǎng)站的信用評(píng)級(jí)直線下降,閾值降到 5G ,黑洞時(shí)間也延長(zhǎng)到兩個(gè)小時(shí)。
阿里云 ECS 是不能更換 IP 地址的,除非購(gòu)買他們的高防 IP ,可以免費(fèi)更換一次(后來(lái)發(fā)現(xiàn)實(shí)際可以更換多次)。
DDoS 在自己的服務(wù)器端是無(wú)法防御的,無(wú)論是設(shè)置安全組還是防火墻,只能去購(gòu)買高防 IP 或者 CDN 。不過(guò)根據(jù)這兩天的攻擊來(lái)看,無(wú)論是阿里云高防還是 CDN ,在大流量的攻擊下,源 IP 還是會(huì)暴露的。
DDoS 確定是競(jìng)爭(zhēng)對(duì)手所為,但不想 DDoS 回去。不能助長(zhǎng)這些黑產(chǎn),也不能像別人一樣 Low 。
作者: vimrus
來(lái)源:V2EX