【经验分享】网站天天有人扫 /admin,我是这么防的

天维之骁 7月前 843

最近我自己的网站后台日志里,发现几乎每天都有人在扫 /admin,八成是想爆破后台。
一开始挺烦的,后来想了想,反正躲不开,不如搞点简单实用的防护,把对方的动作都记录下来。
这里整理了一套思路,分享给大家:


1. 直接把 /admin 封死
如果你的后台根本不是 /admin,那就干脆在 Nginx 里直接 404/403。
这样扫描器扫一圈,啥都拿不到。

location = /admin {
    return 404;
}


2. 后台换个路径 + 加一层密码
不要用 /admin 这种大众路径,改成随机一点的,比如 /admin-9a7f3c
然后再加一层 Nginx 的基础认证,就算别人猜到路径,也还要过一关。

location = /admin-9a7f3c {
    auth_basic "Restricted Area";
    auth_basic_user_file /www/wwwroot/your.site/.htpasswd;
    try_files $uri /index.php?$args;
}


生成 .htpasswd

htpasswd -c /www/wwwroot/your.site/.htpasswd admin


3. 给他们限速
很多扫描器是暴力请求的,你可以设置个限速策略,让它们“卡”得不行,自动放弃。

limit_req_zone $binary_remote_addr zone=req_per_ip:10m rate=5r/s;
server {
    location = /admin {
        limit_req zone=req_per_ip burst=5 nodelay;
        return 404;
    }
}


4. 自动拉黑 IP
配合 Fail2ban,可以把反复访问 /admin 的 IP 自动丢进黑名单。
Nginx 日志加一条:

log_format badadmin '$remote_addr - [$time_local] "$request" $status "$http_user_agent"';
access_log /var/log/nginx/badadmin.log badadmin;


5. 留点“蜜罐”当证据
还可以在 /admin 上放个假页面,啥功能都没有,就用来收集 IP、UA、来源。
最后还是返回 404,看起来像真的不存在,但你这边已经把信息记下来了。

location = /admin {
    access_log /var/log/nginx/badadmin.log badadmin;
    try_files /fake-admin.html =404;
}


6. 借助防火墙 / WAF
如果你用宝塔防火墙或者 Cloudflare,直接拉条规则:
访问 /admin → 挑战 / 拦截
新手脚本一秒就被挡掉了。



最新回复 (0)
返回
发新帖