Nginx解決Http慢攻擊(Slow HTTP Attack)的方法
什么是慢速連接攻擊
緩慢的HTTP拒絕服務攻擊是一種專門針對于Web的應用層拒絕服務攻擊,攻擊者操縱網(wǎng)絡(luò)上的肉雞,對目標Web服務器進行海量HTTP請求攻擊,直到服務器帶寬被打滿,造成了拒絕服務。(癱瘓目標服務器)
慢速連接攻擊類型
慢速連接攻擊主要有如下幾種:
1.Slow headers攻擊
攻擊者向服務器發(fā)起HTTP請求,而且不停地發(fā)送HTTP頭部。服務器為需要接收完所有HTTP頭部,才能處理請求。由于HTTP頭部不停地被攻擊者發(fā)送,服務器永遠也無法接收完,服務器的web容器很快就會被攻擊者占滿了TCP連接,而不再接收新的請求,最終拒絕服務。
2.Slow body攻擊
攻擊者向目標服務器發(fā)送POST請求,服務器以為要接收大量數(shù)據(jù),一直保持連接狀態(tài),但攻擊者卻以10S-100s一個字節(jié)的速度去發(fā)送數(shù)據(jù),類似的連接被不斷增加后,服務器資源被大量消耗,最終達到極限拒絕服務。
3.Slow read攻擊
攻擊者與服務器建立連接后,會發(fā)送完整的請求給服務器,一直保持連接狀態(tài),然后以極低的速度讀取Response,或者讓服務器覺得客戶端很忙,消耗服務器的連接和內(nèi)存資源。
防護手段
真對http慢速攻擊的特點,防護時可對每秒鐘http并發(fā)連接數(shù)進行檢查。
當每秒種http并發(fā)連接數(shù)超過設(shè)定值時,會觸發(fā)http報文檢查,檢查出一下任意一種情況,都認定受到http慢速連接攻擊。
1.連續(xù)多個httppost報文的總長度都很大,但是其http載荷長度都很小。
2.連續(xù)多個httpget/post報文的報文頭都沒有結(jié)束標識。
將該源ip判定為攻擊源加入黑名單,同時斷開此ip地址與http服務器的連接。
對web服務器的http頭部傳輸?shù)淖畲笤S可時間進行限制,修改成最大許可時間為20秒。
統(tǒng)計每個TCP連接的時長并計算單位時間內(nèi)通過的報文數(shù)量即可做精確識別。一個TCP連接中,HTTP報文太少和報文太多都是不正常的,過少可能是慢速連接攻擊。
過多可能是使用HTTP 1.1協(xié)議進行deHTTP Flood攻擊,在一個TCP連接中發(fā)送多個HTTP請求。
周期內(nèi)統(tǒng)計報文數(shù)量。一個TCP連接,HTTP請求的報文中,報文過多或者報文過少都是有問題的,如果一個周期內(nèi)報文數(shù)量非常少,那么它就可能是慢速攻擊;如果一個周期內(nèi)報文數(shù)量非常多,那么它就可能是一個CC攻擊。
限制HTTP請求頭的最大許可時間。超過最大許可時間,如果數(shù)據(jù)還沒有傳輸完成,那么它就有可能是一個慢速攻擊。
Nginx
1、通過調(diào)整$request_method,配置服務器接受http包的操作限制;
2、在保證業(yè)務不受影響的前提下,調(diào)整client_max_body_size, client_body_buffer_size, client_header_buffer_size,large_client_header_buffersclient_body_timeout, client_header_timeout的值,必要時可以適當?shù)脑黾樱?/p>
3、對于會話或者相同的ip地址,可以使用HttpLimitReqModule and HttpLimitZoneModule參數(shù)去限制請求量或者并發(fā)連接數(shù);
4、根據(jù)CPU和負載的大小,來配置worker_processes 和 worker_connections的值,公式是:max_clients = worker_processes * worker_connections。
具體配置
user deployer; user root; worker_processes 16; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { limit_req_zone $binary_remote_addr zone=req_one:10m rate=10r/s; limit_conn_zone $binary_remote_addr zone=limit_conn:10m; include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; client_max_body_size 2m; client_body_buffer_size 2m; client_header_buffer_size 2k; large_client_header_buffers 2 1k; client_body_timeout 10s; client_header_timeout 5s; #gzip on; server { listen 10056; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { limit_conn limit_conn 10; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://172.17.0.1:10050; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
以上就是Nginx解決Http慢攻擊(Slow HTTP Attack)的方法的詳細內(nèi)容,更多關(guān)于Nginx解決Http慢攻擊的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
windows10 系統(tǒng)配置nginx文件服務器的圖文教程
這篇文章主要介紹了windows10 系統(tǒng)配置nginx文件服務器的圖文教程,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-12-12Windows系統(tǒng)下Nginx服務器的基本安裝和配置方法介紹
這篇文章主要介紹了Windows系統(tǒng)下Nginx服務器的基本安裝和配置方法,文中給出了一個配置文件的實例并作出了些說明,需要的朋友可以參考下2015-12-12