server_tokens off;
把全部非法的http請求直接拒絕。由於非法的請求每每就是在攻擊服務器。html
# 只容許 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; }
有一些攻擊都是掃描相似.base_history等。因此除了合法的請求,其餘的都拒絕。使用的是白名單
的思惟方式nginx
# 只接受這些後綴 location ~ (\.(json|html|jsp)|/)${ ... }
上傳的文件只有讀的權限,沒有執行的權限。訪問webshell的產生。web
雖然請求是正常的,可是要控制使用服務的資源。redis
針對於靜態資源,特別是大文件,須要限速。shell
server { server_name xxx.xxx.xxx; #控制下載流量 limit_rate 100k; }
在關鍵業務的地方,須要作更細粒度的控制。
好比說一個ip一天只能免費訪問一百次,超過了就禁止訪問。
具體的實現思路:經過lua,redis更精準的控制訪問粒度。json
經過構架的規劃去增長安全也是頗有必要的。安全
把提供靜態資源和動態資源獨立部署。
更嚴格的控制動態資源的請求類型。
更嚴格的控制靜態資源的權限。
也解決必定的安全問題。服務器
把一旦生成不會變化的動態請求資源,變成靜態的文件。這樣就能夠預防不少的安全問題。
具體的實現思路:經過nginx去實現靜態化。架構
主要是爲了預防ddos和cc。能夠自動經過機制去處理。
主要經過定時分析訪問日誌,根據不一樣的危險等級作不一樣的處理。難點在於危險等級和危險閥值的設定。
好比:jsp
控制訪問的url的頻率和頻次
便可。