- 工信部备案号 滇ICP备05000110号-1
- 滇公网安备53011102001527号
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
- CN域名投诉举报处理平台:电话:010-58813000、邮箱:service@cnnic.cn
线上业务最怕两件事: 一种是被扫目录,另一种是日志爆炸。
很多服务器并不是 CPU 或带宽先扛不住,而是 /var/log/nginx/access.log 先被刷到几十 GB,磁盘 IO 飙升,最终影响正常业务。
传统做法通常是:
if ($http_user_agent ~* "curl|python") {
return 403;
}
或者:
deny 1.1.1.1;
问题在于:
· if 滥用容易产生副作用
· IP 黑名单维护困难
· 大量 location 判断性能差
· 无法灵活组合条件
生产环境更推荐使用:
· geo
· map
· 条件日志
· 限流联动
组合实现精准拦截。
先看一类常见扫描:
GET /.env
GET /wp-admin
GET /vendor/phpunit
GET /boaform/admin/formLogin
特点:
· 高频
· UA 混乱
· 来源 IP 分散
· 目标路径固定
如果直接全部记录日志:
access.log
磁盘很快被刷满。
编辑 nginx 配置:
geo $bad_ip {
default 0;
45.134.26.0/24 1;
192.168.1.100 1;
}
说明:
· 0 表示正常
· 1 表示恶意
这里比 deny 更灵活。
因为:
if ($bad_ip) {
return 403;
}
只是其中一种玩法。
你还可以:
· 不记录日志
· 单独记录
· 限速
· 转发风控系统
继续增加:
map $request_uri $bad_uri {
default 0;
~*\\.env 1;
~*wp-admin 1;
~*phpunit 1;
~*boaform 1;
}
这里使用正则匹配危险路径。
相比 location:
location ~* \\.env {
}
map 性能更高。
因为它发生在请求处理前期。
现在可以组合:
map "$bad_ip$bad_uri" $block_request {
default 0;
"11" 1;
"01" 1;
}
含义:
bad_ip | bad_uri | 是否封禁 |
1 | 1 | 封禁 |
0 | 1 | 封禁 |
1 | 0 | 放行 |
即:
· 只要访问危险 URI
· 或危险 IP
直接封禁。
server 中:
server {
listen 80;
server_name test.com;
if ($block_request) {
return 403;
}
location / {
proxy_pass http://www.landui.com;
}
}
效果非常直接。
很多时候:
真正拖垮机器的不是请求。
而是日志。
配置:
map $block_request $loggable {
default 1;
1 0;
}
然后:
access_log /var/log/nginx/access.log main if=$loggable;
效果:
· 正常请求记录
· 恶意请求不写日志
日志量会瞬间下降。
继续增加:
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=5r/s;
location:
location / {
limit_req zone=req_limit burst=20 nodelay;
proxy_pass http://www.landui.com;
}
说明:
· 单 IP 每秒 5 请求
· 突发允许 20
· 超出直接限制
配合前面的恶意 URI 判断,效果非常好。
推荐直接分析:
awk '{print $7}' access.log | sort | uniq -c | sort -nr | head
输出类似:
15231 /.env
12011 /wp-login.php
9831 /vendor/phpunit
这样可以持续更新:
map
规则库。
生产环境不要依赖:
if + deny
硬拦截。
更推荐:
· geo 标记 IP
· map 标记行为
· 条件日志
· limit_req 限流
· fail2ban 联动
核心思想是:
“不要让恶意请求消耗日志、IO、CPU。”
这比单纯 403 更重要。
售前咨询
售后咨询
备案咨询
二维码

TOP