Nginx解決Http慢攻擊(Slow HTTP Attack)的方法
什么是慢速連接攻擊
緩慢的HTTP拒絕服務(wù)攻擊是一種專門針對于Web的應(yīng)用層拒絕服務(wù)攻擊,攻擊者操縱網(wǎng)絡(luò)上的肉雞,對目標(biāo)Web服務(wù)器進(jìn)行海量HTTP請求攻擊,直到服務(wù)器帶寬被打滿,造成了拒絕服務(wù)。(癱瘓目標(biāo)服務(wù)器)
慢速連接攻擊類型
慢速連接攻擊主要有如下幾種:
1.Slow headers攻擊
攻擊者向服務(wù)器發(fā)起HTTP請求,而且不停地發(fā)送HTTP頭部。服務(wù)器為需要接收完所有HTTP頭部,才能處理請求。由于HTTP頭部不停地被攻擊者發(fā)送,服務(wù)器永遠(yuǎn)也無法接收完,服務(wù)器的web容器很快就會(huì)被攻擊者占滿了TCP連接,而不再接收新的請求,最終拒絕服務(wù)。
2.Slow body攻擊
攻擊者向目標(biāo)服務(wù)器發(fā)送POST請求,服務(wù)器以為要接收大量數(shù)據(jù),一直保持連接狀態(tài),但攻擊者卻以10S-100s一個(gè)字節(jié)的速度去發(fā)送數(shù)據(jù),類似的連接被不斷增加后,服務(wù)器資源被大量消耗,最終達(dá)到極限拒絕服務(wù)。
3.Slow read攻擊
攻擊者與服務(wù)器建立連接后,會(huì)發(fā)送完整的請求給服務(wù)器,一直保持連接狀態(tài),然后以極低的速度讀取Response,或者讓服務(wù)器覺得客戶端很忙,消耗服務(wù)器的連接和內(nèi)存資源。
防護(hù)手段
真對http慢速攻擊的特點(diǎn),防護(hù)時(shí)可對每秒鐘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)文的總長度都很大,但是其http載荷長度都很小。
2.連續(xù)多個(gè)httpget/post報(bào)文的報(bào)文頭都沒有結(jié)束標(biāo)識(shí)。
將該源ip判定為攻擊源加入黑名單,同時(shí)斷開此ip地址與http服務(wù)器的連接。
對web服務(wù)器的http頭部傳輸?shù)淖畲笤S可時(shí)間進(jìn)行限制,修改成最大許可時(shí)間為20秒。
統(tǒng)計(jì)每個(gè)TCP連接的時(shí)長并計(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請求。
周期內(nèi)統(tǒng)計(jì)報(bào)文數(shù)量。一個(gè)TCP連接,HTTP請求的報(bào)文中,報(bào)文過多或者報(bào)文過少都是有問題的,如果一個(gè)周期內(nèi)報(bào)文數(shù)量非常少,那么它就可能是慢速攻擊;如果一個(gè)周期內(nèi)報(bào)文數(shù)量非常多,那么它就可能是一個(gè)CC攻擊。
限制HTTP請求頭的最大許可時(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、對于會(huì)話或者相同的ip地址,可以使用HttpLimitReqModule and HttpLimitZoneModule參數(shù)去限制請求量或者并發(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慢攻擊的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Nginx代理Vue項(xiàng)目出現(xiàn)Invalid Host header問題及解決
在使用Nginx的upstream對Vue項(xiàng)目進(jìn)行負(fù)載均衡時(shí),如果代理地址無法訪問目標(biāo)地址且頁面報(bào)錯(cuò)InvalidHostheader(無效主機(jī)頭),可能是由于Vue項(xiàng)目的主機(jī)檢查配置導(dǎo)致的,解決方法是在Vue項(xiàng)目的webpack.dev.js文件中的devServer下添加disableHostCheck:true,跳過主機(jī)檢查2024-12-12
nginx+redis實(shí)現(xiàn)session共享
這篇文章主要為大家詳細(xì)介紹了nginx+redis實(shí)現(xiàn)session的共享,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
服務(wù)器部署之虛擬機(jī)安裝nginx并部署web網(wǎng)頁
本文提供了一個(gè)關(guān)于Nginx的安裝與配置的簡單入門教程,涵蓋從安裝所需插件(如gcc、zlib、pcre、openssl等),到下載、解壓、編譯安裝Nginx的完整過程,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-10-10
Logrotate如何實(shí)現(xiàn)每小時(shí)切割日志文件
這篇文章主要介紹了Logrotate如何實(shí)現(xiàn)每小時(shí)切割日志文件問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
Nginx中反向代理+負(fù)載均衡+服務(wù)器宕機(jī)解決辦法詳解
這篇文章主要介紹了Nginx中反向代理+負(fù)載均衡+服務(wù)器宕機(jī)解決辦法詳解,反向代理保證系統(tǒng)安全,不暴露服務(wù)器IP,利用nginx服務(wù)器,利用內(nèi)網(wǎng)ip進(jìn)行訪問,避免出現(xiàn)攻擊服務(wù)器的情況,需要的朋友可以參考下2024-01-01
Nginx如何實(shí)現(xiàn)對城市以及指定IP的訪問限制
本文介紹了如何使用Nginx代理MySQL連接并限制可訪問IP,以及如何通過第三方模塊ngx_http_geoip2_module實(shí)現(xiàn)基于國家/城市訪問限制2025-03-03

