Ubuntu JS日志中识别潜在安全威胁的实用指南
一 日志来源与定位
- 前端与 Node.js 应用日志:检查应用自身输出的 console.error/info、未捕获异常、启动与关闭日志,以及 Node.js 运行日志(如 PM2 日志、Docker 容器日志)。
- Web 服务器访问与错误日志:
- Nginx:/var/log/nginx/access.log、/var/log/nginx/error.log
- Apache:/var/log/apache2/access.log、/var/log/apache2/error.log
- 系统与认证日志(用于交叉验证 JS 层异常):/var/log/auth.log、/var/log/syslog、/var/log/kern.log
- 数据库与应用后端日志:如 /var/log/mysql/error.log 等。
- 建议统一接入 rsyslog 或使用 logrotate 做日志轮转,避免磁盘被占满并便于集中分析。
二 快速排查命令与示例
- 高频错误与可疑关键字:
- grep -i “error|failed|unauthorized|attack” /var/log/syslog
- 在 Web 错误日志中排查异常:grep -E “404|500|403” /var/log/nginx/error.log
- 认证异常(与 JS 层 401/403 相互印证):
- grep “Failed password” /var/log/auth.log
- grep “Accepted” /var/log/auth.log
- 暴力破解与扫描特征:
- 统计失败来源 IP:cat /var/log/auth.log | grep ‘Invalid’ | awk ‘{print $8}’ | sort | uniq -c | sort -nr | head
- 可疑 URL 与参数(SQL 注入、路径遍历、XSS 线索):
- grep -E “.php?.*(union|select|insert|update|delete|drop|alter|create|exec|script|alert|onerror|onload)” /var/log/nginx/access.log
- grep -E “../|..\|%2e%2e|%252e%252e” /var/log/nginx/access.log
- 异常 UA 与爬虫:
- grep -i “curl|wget|python-requests|scanner|bot” /var/log/nginx/access.log | sort | uniq -c | sort -nr
- 突发流量与 DoS 迹象:
- 统计某 IP 的请求数:awk ‘{print $1}’ /var/log/nginx/access.log | sort | uniq -c | sort -nr | head
- 将 JS 应用日志与系统日志关联:
- 例如用 grep/awk/sed 或 ELK/Splunk 按 requestId/traceId 跨日志串联,验证异常是否从前端到后端一致出现。
三 常见攻击特征与日志表现
| 攻击类型 |
常见日志特征 |
排查要点 |
| 暴力破解 SSH |
/var/log/auth.log 出现大量 “Failed password”,随后出现 “Accepted” |
关注来源 IP、用户名、时间窗口与频率 |
| Web 扫描与探测 |
大量 404/403,URL 含 /admin、/wp-login.php、/.env、/phpmyadmin 等 |
结合 UA 与 referer 判断自动化工具 |
| SQL 注入 |
参数含 union select、sleep、benchmark、’ or 1=1 等 |
查看后端错误日志是否出现语法错误或延时 |
| XSS 与恶意载荷 |
参数或 UA 含
|