Skip to content

Latest commit

 

History

History
106 lines (75 loc) · 2.46 KB

15 安全.md

File metadata and controls

106 lines (75 loc) · 2.46 KB

安全

WAF

IDS

ESAPI

JVM Java Agent

Network

功能权限、数据权限

应用层

  • Nginx

    • 主动防御

    NginxHttpLimitZoneModule和NginxHttpLimitReqModule模块

    http {
      	limit_req_zone  $binary_remote_addr  zone=my_req_zone:10m   rate=1r/s; #平均请求速率为1个每秒
    	limit_zone   my_zone  $binary_remote_addr  10m;
      
      	limit_req_zone $cookie_token zone=session_limit:3m rate=1r/s; 
      	
    	server {
    		location /somedir/ {
    			limit_conn   my_zone  1; #somedir 下 每个IP 只能有一个连接
          		limit_req_zone   zone= my_req_zone  burst=2; #最高2个每秒的突发请求速率
          		limit_req zone=session_limit burst=5;
    		}
    	}
    }
    • 被动防御

      • IP黑名单
      • iptables
    • 特征码

    • Cookie

      • 特征Cookie 重定向302

            if ($cookie_say != "hbnl$remote_addr"){
                 add_header Set-Cookie "say=hbnl$remote_addr";
                 rewrite .* "$scheme://$host$uri" redirect;
            } 
      • 完美版

        • 借助nginx_lua

              rewrite_by_lua '
                   local say = ngx.md5("opencdn" .. ngx.var.remote_addr)
                   if (ngx.var.cookie_say ~= say) then
                       ngx.header["Set-Cookie"] = "say=" .. say
                       return ngx.redirect(ngx.var.scheme .. "://" .. ngx.var.host .. ngx.var.uri)
                   end
              '; 
      • 超级版

        • 解决同一IP下 获取得到不同token
        ewrite_by_lua '
             local random = ngx.var.cookie_random
             if(random == nil) then
                 random = math.random(999999)
             end
             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.scheme .. "://" .. ngx.var.host .. ngx.var.uri)
             end
        '; 

  • JVM

  • RSAP