三二互联专业提供速度最快最稳定的美国服务器、香港服务器。中美直连,亚洲优化![ 代理登陆 ] [ 付款方式 ] [ 找回密码 ][ 电子协议责任书 ]
硬件资源保障

采用高配品牌服务器

主流强悍CPU配置

确保服务高速稳定运行

中美直连线路

中美直连亚洲优化

采用中国CN2骨干网络

保证速度飞快稳定高效

如何通过Nginx日志定位XSS攻击的恶意IP?

美国、香港服务器

如何通过Nginx日志定位XSS攻击的恶意IP?

01-30   来源:

 通过 Nginx 日志定位 XSS 攻击恶意 IP 的核心是筛选日志中含 XSS 攻击特征的请求内容(如恶意脚本标签、JS 执行语句、特殊编码的攻击载荷),结合 Linux 文本命令提取发起请求的客户端 IP 并统计,精准锁定攻击源。以下是可直接落地的实战方案,适配宝塔 / 原生 Nginx,覆盖反射型、存储型 XSS的日志排查,包含核心特征筛选、实战命令、结果解读、快速封禁,同时兼顾 CDN / 反向代理场景的真实 IP 提取。

一、先明确核心前提
XSS 攻击日志特征:XSS 攻击的核心是向服务器提交包含恶意 HTML/JS 脚本的请求(如、javascript:、),这些特征会直接出现在 Nginx 日志的$request字段(请求行)或请求参数中,这是排查的关键;
Nginx 日志路径(同之前一致,快速回顾):
宝塔:/www/wwwlogs/你的域名.com.log
原生 Nginx(yum/apt):/var/log/nginx/access.log
原生 Nginx(源码编译):/usr/local/nginx/logs/access.log
日志字段要求:确保 Nginx 日志开启$request字段(默认开启),该字段记录完整的请求行(含请求路径、参数),是筛选 XSS 特征的核心。
二、XSS 攻击核心特征库(筛选依据)
整理了最常见的 XSS 攻击载荷特征,涵盖普通脚本、事件触发、伪协议、编码绕过等类型,排查时直接基于这些特征筛选日志,覆盖 99% 的 XSS 攻击场景,可按需扩展:
攻击类型 核心特征关键词(正则匹配)
基础脚本注入 、、
JS 伪协议 javascript:、vbscript:
事件触发 XSS onload=、onclick=、onerror=、onmouseover=
标签注入
编码绕过 XSS <、<、%3C、%20、+(空格替换)
其他危险标签
三、核心实战:定位 XSS 攻击恶意 IP(命令直接复制)
所有命令遵循 **「筛选 XSS 特征 → 提取客户端 IP → 去重统计 → 按攻击次数降序」的逻辑,结果中请求含 XSS 特征的 IP 即为恶意 IP**(正常用户不会提交此类请求),宝塔 / 原生仅替换日志路径即可。
场景 1:通用 XSS 攻击 IP 定位(优先执行,覆盖绝大多数场景)
整合基础 XSS 特征,一键筛选所有含恶意脚本的请求,定位攻击 IP:
bash
运行
# 宝塔版(替换为你的站点日志路径)
cat /www/wwwlogs/你的域名.com.log | grep -E "||javascript:|onload=|onclick=|onerror=|%3Cscript%3E|<script>" | awk "{print $1}" | sort | uniq -c | sort -nr | head -20
 
# 原生Nginx版(yum/apt安装)
cat /var/log/nginx/access.log | grep -E "||javascript:|onload=|onclick=|onerror=|%3Cscript%3E|<script>" | awk "{print $1}" | sort | uniq -c | sort -nr | head -20
场景 2:进阶绕过型 XSS 攻击 IP 定位(针对编码 / 变形攻击)
若攻击方用URL 编码、HTML 实体编码绕过防护(如%3Cscript%3E、<script>),用以下命令筛选,覆盖变形攻击:
bash
运行
# 宝塔版
cat /www/wwwlogs/你的域名.com.log | grep -E "%3C|%3E|<|>|<|>||
 
# 原生版
cat /var/log/nginx/access.log | grep -E "%3C|%3E|<|>|<|>||
场景 3:实时监控 XSS 攻击(定位正在发起的攻击 IP)
若服务器正在遭受 XSS 攻击,通过实时跟踪 Nginx 日志,动态查看含 XSS 特征的请求,即时锁定攻击源:
bash
运行
# 宝塔版:实时打印含XSS特征的日志,按Ctrl+C停止
tail -f /www/wwwlogs/你的域名.com.log | grep -E "|javascript:|onerror=|%3Cscript%3E"
 
# 原生版
tail -f /var/log/nginx/access.log | grep -E "|javascript:|onerror=|%3Cscript%3E"
实时判定:日志中出现同一 IP 连续提交含 XSS 特征的请求,直接判定为正在发起的 XSS 攻击,立即封禁。
场景 4:精准定位指定接口的 XSS 攻击 IP(如评论 / 留言 / 提交接口)
若 XSS 攻击集中在业务提交接口(如/api/comment、/submit、/login),结合「接口路径 + XSS 特征」筛选,精准定位:
bash
运行
# 宝塔版:示例筛选/api/comment接口的XSS攻击IP,可替换为你的业务接口
cat /www/wwwlogs/你的域名.com.log | grep -E "/api/comment.*|/api/comment.*javascript:|/submit.*onerror=" | awk "{print $1}" | sort | uniq -c | sort -nr | head -20
四、命令核心解读(灵活扩展)
掌握以下核心参数,可根据新的 XSS 攻击特征快速修改命令,无需死记:
grep -E "特征1|特征2":开启正则匹配,支持多 XSS 特征同时筛选,|表示「或」;
\:转义特殊字符(如.、(、)),避免 grep 识别错误(如document\.cookie);
awk "{print $1}":提取日志第一列的客户端 IP(Nginx 默认日志格式);
sort | uniq -c:对 IP 去重,统计每个 IP 的 XSS 攻击次数;
sort -nr | head -20:按攻击次数从高到低排序,取前 20 个攻击最频繁的 IP。
五、结果解读与误封规避(100% 精准定位)
XSS 攻击的特征具有极强的唯一性,正常用户的合法请求绝不会包含、javascript:等恶意特征,因此排查结果几乎无正常 IP 干扰,判定标准简单粗暴:
典型结果示例
plaintext
36  112.xx.xx.xx  # 该IP发起36次XSS攻击,核心恶意IP
18  203.xx.xx.xx  # 次高频XSS攻击IP
2   192.168.1.100 # 运维测试IP(手动测试防护效果,可忽略)
1   45.xx.xx.xx   # 单次XSS探测IP,仍判定为恶意
核心判定依据
只要 IP 的请求日志中包含任意 XSS 攻击特征,无论次数多少,均判定为恶意 IP(即使 1 次也是主动探测);
仅需排除自己的测试 IP / 运维 IP(如内网 IP、办公 IP),其余含特征的 IP 一律为攻击源。
六、关键保障:提取客户端真实 IP(CDN / 反向代理场景)
若你的站点接入了 CDN、云 WAF 或反向代理,Nginx 默认日志会记录CDN 节点 IP而非攻击方真实 IP,需先配置 Nginx接收真实 IP,否则排查结果无效,配置步骤如下(可直接复制):
步骤 1:Nginx 配置真实 IP 透传(添加在http{}或server{}段)
nginx
# 信任CDN/反向代理的IP段(添加云厂商CDN节点IP,如阿里云/腾讯云/百度云,可留空仅信任127.0.0.1)
set_real_ip_from 127.0.0.1;
set_real_ip_from 106.0.0.0/8;  # 示例:阿里云CDN段,可按需添加
set_real_ip_from 123.0.0.0/8;  # 示例:腾讯云CDN段,可按需添加
# 从XFF(X-Forwarded-For)请求头中提取客户端真实IP
real_ip_header X-Forwarded-For;
# 递归取XFF头中的真实IP(防止攻击者伪造XFF头)
real_ip_recursive on;
步骤 2:验证配置并重启 Nginx
bash
运行
# 验证语法正确性
nginx -t
# 重启Nginx生效(宝塔)
bt restart nginx
# 重启Nginx生效(原生)
systemctl restart nginx
配置后,Nginx 日志会准确记录攻击方的真实公网 IP,排查结果有效。
七、定位后快速处理:封禁 XSS 攻击恶意 IP(2 种方法)
XSS 攻击多为自动化工具扫描 + 批量注入,锁定恶意 IP 后需立即封禁,阻断后续攻击,云服务器优先用安全组封禁(云端拦截,不消耗服务器资源),物理机 / 本地服务器用 iptables。
方法 1:云服务器安全组封禁(推荐,永久生效)
阿里云 / 腾讯云 / 华为云等云服务器,在控制台 - 安全组 - 入方向添加黑名单规则:
协议类型:全部;
源地址:填写 XSS 攻击恶意 IP(可单个 IP/IP 段);
动作:拒绝;
优先级:设为最高(如 1),确保优先匹配拦截。
优势:流量在云端直接被拦截,不会到达你的服务器,从根源上阻断 XSS 攻击请求。
方法 2:iptables 临时封禁(服务器本地,快速生效)
bash
运行
# 封禁单个XSS攻击IP(禁止所有访问)
iptables -A INPUT -s 112.xx.xx.xx -j DROP
 
# 批量封禁多个恶意IP(一行一个)
iptables -A INPUT -s 203.xx.xx.xx -j DROP
iptables -A INPUT -s 45.xx.xx.xx -j DROP
 
# 查看已封禁的规则,确认无误封
iptables -L -n --line-numbers
 
# 误封解封(替换数字为规则行号,从上面命令结果获取)
iptables -D INPUT 1
说明:iptables 封禁为临时生效,服务器重启后规则消失,若需永久生效,需将规则写入 iptables 配置文件(如/etc/sysconfig/iptables)。
方法 3:批量提取 XSS 攻击 IP 并自动封禁(高效处理大量攻击 IP)
若统计出数十 / 上百个 XSS 攻击恶意 IP,通过以下命令批量提取 IP 并自动写入 iptables,无需手动逐个添加:
bash
运行
# 宝塔版:批量提取TOP20 XSS攻击IP并封禁
cat /www/wwwlogs/你的域名.com.log | grep -E "|javascript:|onerror=" | awk "{print $1}" | sort | uniq -c | sort -nr | head -20 | awk "{print $2}" | while read ip; do iptables -A INPUT -s $ip -j DROP; done
 
# 原生版:批量提取TOP20 XSS攻击IP并封禁
cat /var/log/nginx/access.log | grep -E "|javascript:|onerror=" | awk "{print $1}" | sort | uniq -c | sort -nr | head -20 | awk "{print $2}" | while read ip; do iptables -A INPUT -s $ip -j DROP; done
注意:执行前务必确认统计结果中无正常运维 / 测试 IP,避免批量误封!
八、进阶:结合 WAF 实现 XSS 攻击的「拦截 + 溯源」双重防护
Nginx 日志定位是事后溯源,要从根本上防御 XSS 攻击,需配合Web 应用防火墙(WAF) 实现事前拦截,二者结合形成「拦截 + 溯源」的完整防护体系:
开启云 WAF / 自建 WAF:阿里云盾、腾讯云大禹、百度云 WAF 等均会自动识别并拦截 XSS 攻击载荷,阻止恶意请求到达服务器,同时 WAF 日志会记录详细的攻击 IP、攻击特征、攻击时间;
Nginx 配合 WAF:在 Nginx 中配置 WAF 规则(如 ngx_waf 模块),本地拦截漏网的 XSS 攻击,日志同步记录,方便后续溯源;
日志审计:定期执行上述 XSS 排查命令,审计是否有漏网的攻击 IP,及时补充封禁,形成防护闭环。

三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快

上一篇:如何解读通过Nginx日志定位XSS攻击恶意IP的结果? 下一篇:如何通过Nginx日志定位恶意IP?

美国GIA服务器三二互联版权所有 WWW.250.cc 2008-2015 All Rights Reserved
三二互联 - 专业的美国C3服务器香港vps、抗DOOS流量清洗、云备份系统、网站加速系统、美国GIA服务器和香港云服务器产品提供商
三二互联24小时在线工单系统为您提供全面、专业、周到的技术支持与服务
咨询热线:400-679-9994(免长话费)