事件背景:
公司服務部署框架因redis瓶頸,cc攻擊導致資源全部被佔用,APP幾乎打不開
處理過程
一、因亞馬遜服務就開啓了cloudfront服務,結果因cloudfront是國外的CDN服務在國內不兼用,結果打開翻牆才能用,否則不行
二、在nginx上配置
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
#限制每ip每秒不超過20個請求,漏桶數burst爲5
#brust的意思就是,如果第1秒、2,3,4秒請求爲19個,
#第5秒的請求爲25個是被允許的。
#但是如果你第1秒就25個請求,第2秒超過20的請求返回503錯誤。
#nodelay,如果不設置該選項,嚴格使用平均速率限制請求數,
#第1秒25個請求時,5個請求放到第2秒執行,
#設置nodelay,25個請求將在第1秒執行。
limit_req zone=one burst=1 nodelay;
}
}
上面樣本的配置是什麼意思呢?
- $binary_remote_addr 表示:客戶端IP地址
- zone 表示漏桶的名字
- rate 表示nginx處理請求的速度有多快
- burst 表示峯值
- nodelay 表示是否延遲處理請求,還是直接503返回給客戶端,如果超出rate設置的情況下。
例子如下:
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
limit_req zone=one burst=1 nodelay;
}
}
此時可以人工對規定時間內的訪問次數的用戶進行控制(屏蔽/開放)
三、最終解決的辦法是:通過cloudfare來進行攻防
1、登陸https://www.cloudfare.com然後進行註冊賬號,直接點擊下一步輸入需要處理的域名,然後再下一步
2、當出現DNS的位置時就需要我們將原有的DNS服務改掉,我們用的是萬網,需要將萬網的換成下面的
3、在萬網上更改DNS這個可以在阿里上找到更改方法
4、將萬網上的解析全部遷移到cloudfare
遇到的問題:
更改後後臺管理到數據時報一下錯誤
原因是cloudfare禁用了了cookie,解決辦法
5、可是結果還不理想
我們就在firewall上添加配置
選中firewall
將安全等級調高
最後根據日誌添加應用規則
最後選擇保存
注意:
當攻擊過後我們就要記得將這些配置全部還原,防止繼續傷及無辜,因爲遭受攻擊時我們是犧牲正常用戶以換取安全
6、我們還需要提取日誌,對日誌進行篩選,將IP訪問量達到前幾的幾個IP進行屏蔽