公司后台突然被监管部门发来整改通知,原因居然是网站访问日志只存了3天,且没加密——这事儿真不是段子。很多小团队做网站、搭后台时,日志随手往/var/log/里一扔,定期用rm -rf清一波,图省事,却不知道《网络安全法》《数据安全法》和《个人信息保护法》早对日志存储划了硬杠杠。
哪些日志必须存?存多久?
不是所有日志都一样。Web服务器(比如Nginx)的access.log、应用层的用户操作日志(如登录、删文件、改权限)、数据库审计日志,只要含IP、时间、账号、操作行为、结果状态(成功/失败),就属于“网络日志”,得按规保存。
基础底线:一般系统日志至少保留6个月;涉及个人信息或关键业务的(比如电商下单、政务平台提交材料),建议存满1年;金融、医疗类系统,部分场景要求不少于5年。
光存够时间还不够,得防三件事
防篡改:日志一旦生成就不能偷偷改。推荐用rsyslog + imfile把日志实时推送到独立日志服务器,本地只留缓存;或者用auditd开启内核级写保护:
sudo auditctl -w /var/log/nginx/access.log -p wa -k nginx_log
防泄露:日志里常带用户手机号、身份证号片段、IP地址。上线前得做脱敏处理。比如用Logstash过滤器抹掉敏感字段:
filter {
mutate {
gsub => ["message", "(\d{3})\d{4}(\d{4})", "\1****\2"]
}
}
防丢弃:别依赖单块硬盘。用logrotate配置自动归档+压缩+异地同步:
/var/log/nginx/*.log {
daily
rotate 365
compress
missingok
postrotate
systemctl reload nginx > /dev/null 2>&1 || true
endscript
# 同步到NAS或对象存储
sharedscripts
}
小团队也能落地的轻量方案
没专职运维?试试这个组合:
• Nginx 日志 → 写入本地文本 + 定时用rsync推到树莓派或旧笔记本(装Debian当日志盒子);
• 每周五凌晨跑个脚本,自动打包上月日志,加密码后上传到腾讯云COS或阿里云OSS(选“低频访问”类型,便宜又合规);
• 在日志目录里放个README.md,写清楚:谁建的、存什么、保留多久、谁有权查——检查组来了,翻一眼就过关。
顺手记两笔避坑点
• 别把日志和业务数据库放同一台服务器,出问题一起挂;
• 不要用echo "xxx" >> log.txt这种裸写方式记录关键操作,没时间戳、没进程ID,出事没法回溯;
• 开发测试环境也得按生产标准存日志——很多漏洞就是在测试机上先暴露的。