場景 1. 過濾非正常用戶使用的http請求。 2. 限制正常用戶使用的範圍(下載速度、訪問頻率等)。 3. 通過架構規劃來提升安全。 4. 能自動解決http請求問題。 解決方案 代理自身的安全 1. 千萬不要使用root啟動!!! 2. 關閉伺服器的信息。 3. 關閉掉不使用的模塊。 過濾htt ...
場景
- 過濾非正常用戶使用的http請求。
- 限制正常用戶使用的範圍(下載速度、訪問頻率等)。
- 通過架構規劃來提升安全。
- 能自動解決http請求問題。
解決方案
代理自身的安全
- 千萬不要使用root啟動!!!
- 關閉伺服器的信息。
server_tokens off;
- 關閉掉不使用的模塊。
過濾http
把所有非法的http請求直接拒絕。因為非法的請求往往就是在攻擊伺服器。
過濾非法的http method
# 只允許 get,post,head方式的請求,其他的不安全也沒有用到,不接受
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 404;
}
過濾非法用戶代理
# 非法代理直接拒絕
# 有一些是爬蟲工具,有一些是搜索外國的搜索引擎,有一些是壓力工具
if ( $http_user_agent ~* "ApacheBench|WebBench|HttpClient|Curl|Wget|^$|AhrefsBot|BLEXBot|^-$|WordPress" ) {
return 444;
}
控制http請求尾碼
有一些攻擊都是掃描類似.base_history等。所以除了合法的請求,其他的都拒絕。使用的是白名單
的思維方式
# 只接受這些尾碼
location ~ (\.(json|html|jsp)|/)${
...
}
控制文件上傳
上傳的文件只有讀的許可權,沒有執行的許可權。訪問webshell的產生。
控制使用
雖然請求是正常的,但是要控制使用服務的資源。
下載限速
針對於靜態資源,特別是大文件,需要限速。
server {
server_name xxx.xxx.xxx;
#控制下載流量
limit_rate 100k;
}
控制訪問的url的頻率和頻次
在關鍵業務的地方,需要做更細粒度的控制。
比如說一個ip一天只能免費訪問一百次,超過了就禁止訪問。
具體的實現思路:通過lua,redis更精準的控制訪問粒度。
構架規劃
通過構架的規划去增加安全也是很有必要的。
動靜分離
把提供靜態資源和動態資源獨立部署。
更嚴格的控制動態資源的請求類型。
更嚴格的控制靜態資源的許可權。
也解決一定的安全問題。
靜態化
把一旦生成不會變化的動態請求資源,變成靜態的文件。這樣就可以預防很多的安全問題。
具體的實現思路:通過nginx去實現靜態化。
自動解決http請求問題
主要是為了預防ddos和cc。可以自動通過機制去處理。
主要通過定時分析訪問日誌,根據不同的危險等級做不同的處理。難點在於危險等級和危險閥值的設定。
比如:
- 低危的限制一段時間即可以繼續使用。通過控制使用里的
控制訪問的url的頻率和頻次
即可。 - 中危的通過nginx直接返回403。可以通過nginx的deny,geo來實現。
- 高危的通過防火牆直接拒絕服務。結合防火牆來實現。
驗證方法
- postman。可以模擬各種http請求