Maison >développement back-end >tutoriel php >Configurer Nginx pour mettre en œuvre une défense simple contre les attaques cc

Configurer Nginx pour mettre en œuvre une défense simple contre les attaques cc

小云云
小云云original
2018-02-22 10:40:453752parcourir

Attaque DDoS : l'attaque par déni de service distribué est une attaque qui utilise un grand nombre de poulets de chair ou de fausses adresses IP pour lancer un grand nombre de requêtes du serveur, provoquant finalement la paralysie du serveur. Attaque CC : similaire à l'attaque DDoS, mais sa caractéristique est qu'elle initie principalement un grand nombre de requêtes de pages, donc le trafic n'est pas important, mais cela peut rendre la page inaccessible.

Cet article présente principalement comment se défendre rapidement et efficacement contre les attaques CC sous lua+Nginx. Quant à la façon d’installer Nginx, je n’entrerai pas dans les détails. Sans plus tarder, jetez un œil à l’exemple, j’espère que cela pourra vous aider.

Utilisez la configuration Nginx pour vous défendre simplement contre les attaques cc
============================== = ========================================

Principalement Grâce à la coopération de nginx et lua, l'objectif de défense est atteint.

1. La compilation Nginx prend en charge Lua
---------------------------------

1. Téléchargez le module lua-nginx


wget https://github.com/openresty/lua-nginx-module/archive/master.zip
unzip master.zip

2. >

2. Configuration

#./configure \
--user=nginx \
--group=nginx \
--prefix=/usr/local/gacp/nginx \
--error-log-path=/data/logs/nginx/error/error.log \
--http-log-path=/data/logs/nginx/access/access.log \
--pid-path=/usr/local/gacp/nginx/conf/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--with-http_flv_module \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-pcre \
--with-http_realip_module \
--with-http_gzip_static_module \
--with-google_perftools_module \
--with-file-aio \
--add-module=../ngx_cache_purge-2.3 \
--add-module=../lua-nginx-module-master

# make && make install


N'est-ce pas très simple.

http {
.....
limit_req_zone $cookie_token zone=session_limit:3m rate=1r/s;
limit_req_zone $binary_remote_addr $uri zone=auth_limit:3m rate=1r/m;


}

server {
listen 80;
server_name localhost;
access_log /data/logs/nginx/access/localhost.access.log main;
error_log /data/logs/nginx/error/localhost.error.log;
charset utf-8;
client_max_body_size 75M;
root /data/www;

location / {

limit_req zone=session_limit burst=5;

rewrite_by_lua '
local random = ngx.var.cookie_random
if(random == nil) then
return ngx.redirect("/auth?url=" .. ngx.var.request_uri)
end

local token = ngx.md5("opencdn" .. ngx.var.remote_addr .. random)
if(ngx.var.cookie_token ~= token) then
return ngx.redirect("/auth?url=" .. ngx.var.request_uri)
end
';
}

location /auth {
limit_req zone=auth_limit burst=1;

if ($arg_url = "") {
return 403;
}

access_by_lua '
local random = math.random(9999)
local token = ngx.md5("opencdn" .. ngx.var.remote_addr .. random)
if(ngx.var.cookie_token ~= token) then
ngx.header["Set-Cookie"] = {"token=" .. token, "random=" .. random}
return ngx.redirect(ngx.var.arg_url)
end
';

}
}

Recommandations associées :


Attaque anti-cc Code d'implémentation d'attaque anti-CC PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn