这是一篇记录贴,希望可以帮到各位
前几天,网站受到大规模CC攻击,搞得我很头疼 网站接入了360网站卫士,BT面板开启了 WAF功能,还是受不住大规模的攻击 差点宕机。之后查看Nginx/WAF日志的时候 发现日志记录
的IP全是CDN节点IP。
好了废话不多说,再BB下去 天都要黑了。
Nginx
用XFF头获取访客真实ip;一般cdn厂商都是用这个转发的。
首先打开 Nginx.conf 文件用 log_format 在http{}自定义一条新的日志格式。这个不用多说,各位 dalao 都懂,以下配置 仅供小白参考 dalao绕道
- log_format main '$remote_addr - $http_x_forwarded_for - $remote_user [$time_local] "$request" '
- '$status $body_bytes_sent "$http_referer" '
- '"$http_user_agent"';
复制代码
然后 打开网站配置项,在 access_log /www/wwwlogs/网站名.log; 后面 加上main; 例如:access_log /www/wwwlogs/www.xxx.com.log main;
waf
打开 /www/server/nginx/waf/init.lua 文件 找到 17行 代码如下,这个文件我找的时候 找了好久才找到。。。
- function getClientIp()
- IP = ngx.var.http_x_forwarded_for
- if IP == nil then
- IP = ngx.var.remote_addr
- end
- return IP
- end
复制代码
之前 BT定义的 getClientIp() 函数内容 给变量 IP赋的值是 ngx.var.remote_addr 然后判断IP值为空的情况下 返回 “Unknown”
正常情况下来说 是不会无值的,所以:
在此 强烈建议 BT官方人员 修改 以上内容。省的每次 更新面板 或者更新规则的时候 都要重新修改代码 @河妖 @良哥
|
|