如何配置Web日志审计的存储和分析?
美国、香港服务器
如何配置Web日志审计的存储和分析?
06-30 来源:
一、基础:本地安全存储(必做,所有方案前置)
1. 日志权限加固(防止攻击者删日志销毁证据)
bash
运行
# 日志目录权限
chown root:nginx /var/log/nginx
chmod 700 /var/log/nginx
# 日志文件仅root、nginx可读,不可写
chmod 640 /var/log/nginx/*.log
# 锁定文件禁止删除/覆盖(扩展加固)
chattr +a /var/log/nginx/*.log
chattr +a:只能追加写入,不能删除、修改、覆盖,入侵后无法清理访问日志。
2. Logrotate 日志轮转(本地长期存储)
编辑 /etc/logrotate.d/nginx
conf
/var/log/nginx/*.log {
daily
rotate 180
missingok
compress
delaycompress
notifempty
create 640 root nginx
sharedscripts
postrotate
kill -USR1 $(cat /run/nginx.pid 2>/dev/null)
endscript
}
按天切割,压缩保存 180 天(满足等保最低 6 个月留存要求)
归档日志存放:/var/log/nginx/xxx-20260630.log.gz
3. 本地备份存储(异地备份防单点丢失)
定期把压缩日志同步到对象存储 / 备用服务器:
阿里云 OSS、腾讯云 COS、MinIO 自建对象存储
Rsync 推送到备用审计服务器
示例 rsync 定时备份:
bash
运行
# crontab 每天凌晨2点同步
0 2 * * * rsync -avz /var/log/nginx/*.gz backup@备份服务器IP:/data/web_log/
二、方案 1:轻量级本地日志存储 + 分析(推荐个人 / 小站点)
无需部署 ELK 重型组件,用 JSON 格式 Nginx 日志 + JQ + Shell 脚本分析
1. Nginx 输出 JSON 日志(前面配置的 json_audit 格式)
2. 安装 jq 解析 JSON 结构化日志
bash
运行
# CentOS
dnf install jq -y
# Ubuntu
apt install jq -y
常用分析命令示例
bash
运行
# 统计访问TOP20 IP
cat www_access.log | jq -r .client_ip | sort | uniq -c | sort -nr | head -20
# 筛选所有POST请求
cat www_access.log | jq "select(.request | startswith("POST"))"
# 筛选404/403异常访问
cat www_access.log | jq "select(.status==404 or .status==403)"
# 检索webshell恶意特征
cat www_access.log | jq "select(.request | contains("eval") or contains("base64"))"
3. 可视化简易方案:GoAccess(网页实时日志面板)
安装
bash
运行
# CentOS
dnf install goaccess -y
# Ubuntu
apt install goaccess -y
启动 Web 可视化分析面板
bash
运行
goaccess /var/log/nginx/www_xxx_access.log \
--log-format=JSON \
--real-time-html \
--output=/usr/share/nginx/html/log.html \
--daemonize
访问 http://域名/log.html,可查看:
IP 排行、请求接口、状态码分布、爬虫、访问时段、UA 分析,适合攻击快速溯源。
三、方案 2:集中式日志存储 + 分析 ELK Stack(企业 / 等保首选)
架构:
Nginx(日志源) → Filebeat(采集) → Elasticsearch(存储索引) → Kibana(可视化分析告警)
1. Filebeat:日志采集(部署在 Web 服务器)
安装 filebeat,配置采集 Nginx 日志:
yaml
# /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: filestream
paths:
- /var/log/nginx/*.log
parsers:
- ndjson:
overwrite_keys: true
add_error_key: true
output.elasticsearch:
hosts: ["ES服务IP:9200"]
setup.kibana:
host: "Kibana服务IP:5601"
开启模块自动解析 Nginx 日志:
bash
运行
filebeat modules enable nginx
systemctl enable --now filebeat
2. Elasticsearch:分布式海量日志存储
自动按天创建索引,存储所有结构化 Web 日志
支持全文检索、时间段过滤、IP、URL、状态码多条件筛选
可设置索引生命周期:日志存储 180 天后自动删除 / 归档到冷存储,防止磁盘爆满
3. Kibana:可视化安全审计分析能力
配置索引模式,导入 Nginx 日志字段
常用安全审计仪表盘:
异常状态码监控(403、404、5xx 突增告警)
单 IP 高频访问 TOP 排行(CC、扫描攻击识别)
POST 请求异常接口监控(WebShell、注入攻击)
恶意 UA、扫描器特征请求统计
配置告警:访问突增、大量暴力扫描、异常路径访问时邮件 / 钉钉告警
4. 长期归档方案
ES 热节点存储近 90 天日志,超过 90 天自动迁移至:
MinIO 对象存储(S3)压缩归档保存 180 天以上,满足等保审计留存。
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快