Nginx解決Http慢攻擊(Slow HTTP Attack)的方法
什么是慢速連接攻擊
緩慢的HTTP拒絕服務(wù)攻擊是一種專門針對(duì)于Web的應(yīng)用層拒絕服務(wù)攻擊,攻擊者操縱網(wǎng)絡(luò)上的肉雞,對(duì)目標(biāo)Web服務(wù)器進(jìn)行海量HTTP請(qǐng)求攻擊,直到服務(wù)器帶寬被打滿,造成了拒絕服務(wù)。(癱瘓目標(biāo)服務(wù)器)
慢速連接攻擊類型
慢速連接攻擊主要有如下幾種:
1.Slow headers攻擊
攻擊者向服務(wù)器發(fā)起HTTP請(qǐng)求,而且不停地發(fā)送HTTP頭部。服務(wù)器為需要接收完所有HTTP頭部,才能處理請(qǐng)求。由于HTTP頭部不停地被攻擊者發(fā)送,服務(wù)器永遠(yuǎn)也無法接收完,服務(wù)器的web容器很快就會(huì)被攻擊者占滿了TCP連接,而不再接收新的請(qǐng)求,最終拒絕服務(wù)。
2.Slow body攻擊
攻擊者向目標(biāo)服務(wù)器發(fā)送POST請(qǐng)求,服務(wù)器以為要接收大量數(shù)據(jù),一直保持連接狀態(tài),但攻擊者卻以10S-100s一個(gè)字節(jié)的速度去發(fā)送數(shù)據(jù),類似的連接被不斷增加后,服務(wù)器資源被大量消耗,最終達(dá)到極限拒絕服務(wù)。
3.Slow read攻擊
攻擊者與服務(wù)器建立連接后,會(huì)發(fā)送完整的請(qǐng)求給服務(wù)器,一直保持連接狀態(tài),然后以極低的速度讀取Response,或者讓服務(wù)器覺得客戶端很忙,消耗服務(wù)器的連接和內(nèi)存資源。
防護(hù)手段
真對(duì)http慢速攻擊的特點(diǎn),防護(hù)時(shí)可對(duì)每秒鐘http并發(fā)連接數(shù)進(jìn)行檢查。
當(dāng)每秒種http并發(fā)連接數(shù)超過設(shè)定值時(shí),會(huì)觸發(fā)http報(bào)文檢查,檢查出一下任意一種情況,都認(rèn)定受到http慢速連接攻擊。
1.連續(xù)多個(gè)httppost報(bào)文的總長(zhǎng)度都很大,但是其http載荷長(zhǎng)度都很小。
2.連續(xù)多個(gè)httpget/post報(bào)文的報(bào)文頭都沒有結(jié)束標(biāo)識(shí)。
將該源ip判定為攻擊源加入黑名單,同時(shí)斷開此ip地址與http服務(wù)器的連接。
對(duì)web服務(wù)器的http頭部傳輸?shù)淖畲笤S可時(shí)間進(jìn)行限制,修改成最大許可時(shí)間為20秒。
統(tǒng)計(jì)每個(gè)TCP連接的時(shí)長(zhǎng)并計(jì)算單位時(shí)間內(nèi)通過的報(bào)文數(shù)量即可做精確識(shí)別。一個(gè)TCP連接中,HTTP報(bào)文太少和報(bào)文太多都是不正常的,過少可能是慢速連接攻擊。
過多可能是使用HTTP 1.1協(xié)議進(jìn)行deHTTP Flood攻擊,在一個(gè)TCP連接中發(fā)送多個(gè)HTTP請(qǐng)求。
周期內(nèi)統(tǒng)計(jì)報(bào)文數(shù)量。一個(gè)TCP連接,HTTP請(qǐng)求的報(bào)文中,報(bào)文過多或者報(bào)文過少都是有問題的,如果一個(gè)周期內(nèi)報(bào)文數(shù)量非常少,那么它就可能是慢速攻擊;如果一個(gè)周期內(nèi)報(bào)文數(shù)量非常多,那么它就可能是一個(gè)CC攻擊。
限制HTTP請(qǐng)求頭的最大許可時(shí)間。超過最大許可時(shí)間,如果數(shù)據(jù)還沒有傳輸完成,那么它就有可能是一個(gè)慢速攻擊。
Nginx
1、通過調(diào)整$request_method,配置服務(wù)器接受http包的操作限制;
2、在保證業(yè)務(wù)不受影響的前提下,調(diào)整client_max_body_size, client_body_buffer_size, client_header_buffer_size,large_client_header_buffersclient_body_timeout, client_header_timeout的值,必要時(shí)可以適當(dāng)?shù)脑黾樱?/p>
3、對(duì)于會(huì)話或者相同的ip地址,可以使用HttpLimitReqModule and HttpLimitZoneModule參數(shù)去限制請(qǐng)求量或者并發(fā)連接數(shù);
4、根據(jù)CPU和負(fù)載的大小,來配置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)的方法的詳細(xì)內(nèi)容,更多關(guān)于Nginx解決Http慢攻擊的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
nginx主動(dòng)健康檢查功能實(shí)現(xiàn)
nginx_upstream_check_module是一個(gè)Nginx的第三方模塊,它可以實(shí)現(xiàn) Nginx的主動(dòng)健康檢查功能,本文將介紹一個(gè)基于 Nginx 的第三方模塊 nginx_upstream_check_module,它可以實(shí)現(xiàn) Nginx 的主動(dòng)健康檢查功能,可以幫助我們更加有效地管理后端服務(wù)器,需要的朋友可以參考下2023-05-05nginx的請(qǐng)求轉(zhuǎn)發(fā)配置過程
Nginx在Windows和Linux環(huán)境下的安裝、啟動(dòng)、停止、配置和請(qǐng)求轉(zhuǎn)發(fā)過程,配置文件語(yǔ)法檢測(cè)、優(yōu)雅關(guān)閉、熱部署和日志文件重新打開,配置多個(gè)服務(wù)的請(qǐng)求轉(zhuǎn)發(fā)規(guī)則,修改前端API地址,設(shè)置最大上傳文件大小2024-12-12nginx服務(wù)器實(shí)現(xiàn)上傳下載文件的實(shí)例代碼
這篇文章主要介紹了nginx服務(wù)器實(shí)現(xiàn)上傳下載文件的實(shí)例代碼,本文通過代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-02-02windows10 系統(tǒng)配置nginx文件服務(wù)器的圖文教程
這篇文章主要介紹了windows10 系統(tǒng)配置nginx文件服務(wù)器的圖文教程,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12Nginx之正向代理與反向代理進(jìn)階方式(支持https)
文章介紹了如何在Nginx中實(shí)現(xiàn)正向代理和反向代理對(duì)HTTP和HTTPS協(xié)議的支持,通過使用第三方模塊`ngx_http_proxy_connect_module`和Nginx內(nèi)置的`ngx_http_ssl_module`,可以實(shí)現(xiàn)Nginx對(duì)HTTPS的正向和反向代理2025-03-03Windows系統(tǒng)下Nginx服務(wù)器的基本安裝和配置方法介紹
這篇文章主要介紹了Windows系統(tǒng)下Nginx服務(wù)器的基本安裝和配置方法,文中給出了一個(gè)配置文件的實(shí)例并作出了些說明,需要的朋友可以參考下2015-12-12CentOS7安裝Nginx并配置自動(dòng)啟動(dòng)的方法步驟
這篇文章主要介紹了CentOS7安裝Nginx并配置自動(dòng)啟動(dòng)的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-10-10