Java日志在CentOS上的安全措施
Filter或Converter组件拦截敏感字段,替换为*****或加密后的字符串。INFO或WARN,避免DEBUG级别记录过多敏感细节(如请求参数、用户会话ID)。chown将日志文件属主设置为专用用户(如java-app),属组设置为应用所属组(如java-app-group);用chmod设置权限为640(属主可读写,属组可读,其他用户无权限)。例如:sudo mkdir -p /var/log/java-app
sudo chown -R java-app:java-app /var/log/java-app
sudo chmod -R 750 /var/log/java-app
java-app-log.te策略文件,允许java-app用户访问var_log_t类型的日志文件,然后使用semodule -i加载策略。firewalld或iptables)限制访问源IP。例如,仅允许运维服务器IP访问日志端口(如514/UDP):sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="udp" port="514" accept'
sudo firewall-cmd --reload
logrotate工具定期分割、压缩、删除旧日志,避免单个文件过大导致存储溢出或难以分析。创建/etc/logrotate.d/java配置文件,示例内容:/var/log/java-app/*.log {
daily # 每天轮转
rotate 7 # 保留7天日志
compress # 压缩旧日志(.gz格式)
missingok # 日志不存在时不报错
notifempty # 日志为空时不轮转
create 0640 java-app java-app # 新日志文件权限
sharedscripts # 所有日志轮转完成后执行postrotate脚本
}
rsync或tar命令实现。例如,每日凌晨将日志备份到/backup/java-logs目录,并保留30天:find /var/log/java-app -name "*.log*" -mtime +30 -exec rm -f {} \;
auditd工具监控日志文件的访问和修改,记录操作用户、时间、类型(如open、write、delete)。例如,添加监控规则:sudo auditctl -w /var/log/java-app/application.log -p wa -k java-app-log-access
查看审计日志:ausearch -k java-app-log-access。ERROR日志、频繁的日志删除操作或非授权访问时,及时通知运维人员(如邮件、短信)。log4j-core),修复已知安全漏洞(如CVE-2021-44228)。chattr +i)防止篡改,或使用数字签名验证日志完整性。例如,使用Java的java.security包对日志文件进行签名,验证时检查签名有效性。PatternLayout或Filter隐藏敏感字段。例如,Log4j 2.x的Filter配置:<Filters>
<RegexFilter regex="(?i)(password|ssn)=.*?" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
admin可查看所有日志,viewer仅能查看自己操作的日志),防止未授权访问敏感日志。