zoukankan      html  css  js  c++  java
  • 使用Nginx的配置对cc攻击进行简单防御

    ddos攻击:分布式拒绝服务攻击,就是利用大量肉鸡或伪造IP,发起大量的服务器请求,最后导致服务器瘫痪的攻击。

    cc攻击:类似于ddos攻击,不过它的特点是主要是发起大量页面请求,所以流量不大,但是却能导致页面访问不了。


    使用Nginx的配置对cc攻击进行简单防御
    ===================================================================
    主要是通过nginx和lua来配合,达到防御的目的。


    一、Nginx编译支持lua
    ------------------------------
    1. 下载lua-nginx-module
    wget https://github.com/openresty/lua-nginx-module/archive/master.zip
    unzip master.zip

    2. 编译
    #./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

    二、配置
    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
    ';

    }
    }


    三、详细原理参考:http://www.92csz.com/30/1255.html


    四、如果要防止扫描,可以使用ngx_lua_waf模块

    五、攻击类型:https://www.cnblogs.com/sochishun/p/7081739.html

  • 相关阅读:
    3dmax安装、破解与插件安装--以2014为例
    两数求和java(字符串强转int型)
    《大道至简》第一章伪代码(四个小部分)
    咳咳,软工新手读《大道至简》读后感
    一:requests爬虫基础
    爬虫
    Django中ORM系统多表数据操作
    Django中ORM简介与单表数据操作
    Django初识
    jQuery基础
  • 原文地址:https://www.cnblogs.com/zhaojonjon/p/8454845.html
Copyright © 2011-2022 走看看