在 Debian 上,Nginx 日志中发现恶意请求是很常见的情况(扫描器、爆破、Exploit 尝试等)。下面给你一套排查 + 防护的实用方案。
Debian 默认路径:
/var/log/nginx/access.log
/var/log/nginx/error.log
虚拟主机日志可能在:
/var/log/nginx/example.com.access.log
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head
grep -E "(wp-login|phpmyadmin|admin| shell|/api/|../|%00|cmd=|exec=)" /var/log/nginx/access.log
awk '$9 == 404 {print $1, $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head
/wp-login.php → WordPress 爆破/phpmyadmin → 数据库后台扫描/.env、.git/config → 信息泄露/cgi-bin/ → 老漏洞利用iptables -A INPUT -s 1.2.3.4 -j DROP
或使用 fail2ban(强烈推荐):
apt install fail2ban
location ~* (wp-login|phpmyadmin|/.git|/.env) {
return 444;
}
if ($request_method !~ ^(GET|POST|HEAD)$ ) {
return 444;
}
if ($query_string ~* "union.*select|base64|%27|%3B") {
return 403;
}
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;
server {
limit_req zone=req_limit burst=20 nodelay;
}
server_tokens off;
apt update && apt upgrade -y
你可以:
我可以直接帮你写 精准的 Nginx 防护规则。