web安全——代理(nginx)

場景

  1. 過濾非正經常使用戶使用的http請求。
  2. 限制正經常使用戶使用的範圍(下載速度、訪問頻率等)。
  3. 經過架構規劃來提高安全。
  4. 能自動解決http請求問題。

解決方案

代理自身的安全

  1. 千萬不要使用root啓動!!!
  2. 關閉服務器的信息。server_tokens off;
  3. 關閉掉不使用的模塊。

過濾http

把全部非法的http請求直接拒絕。由於非法的請求每每就是在攻擊服務器。html

過濾非法的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等。因此除了合法的請求,其餘的都拒絕。使用的是白名單的思惟方式nginx

# 只接受這些後綴
location ~ (\.(json|html|jsp)|/)${
    ...
}

控制文件上傳

上傳的文件只有讀的權限,沒有執行的權限。訪問webshell的產生。web

控制使用

雖然請求是正常的,可是要控制使用服務的資源。redis

下載限速

針對於靜態資源,特別是大文件,須要限速。shell

server {
    server_name  xxx.xxx.xxx;
    #控制下載流量
    limit_rate 100k;
}

控制訪問的url的頻率和頻次

在關鍵業務的地方,須要作更細粒度的控制。
好比說一個ip一天只能免費訪問一百次,超過了就禁止訪問。
具體的實現思路:經過lua,redis更精準的控制訪問粒度。json

構架規劃

經過構架的規劃去增長安全也是頗有必要的。安全

動靜分離

把提供靜態資源和動態資源獨立部署。
更嚴格的控制動態資源的請求類型。
更嚴格的控制靜態資源的權限。
也解決必定的安全問題。服務器

靜態化

把一旦生成不會變化的動態請求資源,變成靜態的文件。這樣就能夠預防不少的安全問題。
具體的實現思路:經過nginx去實現靜態化。架構

自動解決http請求問題

主要是爲了預防ddos和cc。能夠自動經過機制去處理。
主要經過定時分析訪問日誌,根據不一樣的危險等級作不一樣的處理。難點在於危險等級和危險閥值的設定。
好比:jsp

  1. 低危的限制一段時間便可以繼續使用。經過控制使用裏的控制訪問的url的頻率和頻次便可。
  2. 中危的經過nginx直接返回403。能夠經過nginx的deny,geo來實現。
  3. 高危的經過防火牆直接拒絕服務。結合防火牆來實現。

驗證方法

  1. postman。能夠模擬各類http請求
相關文章
相關標籤/搜索