Java日志在Linux下的安全审计实践
一 总体架构与原则
二 系统层审计配置 auditd
sudo yum install auditd -y(RHEL/CentOS 系);启动:sudo systemctl enable --now auditd。sudo auditctl -w /var/log/ -p wa -k log_dir_accesssudo auditctl -w /etc/ -p wa -k etc_config_accesssudo auditctl -w /usr/bin/java -p x -k java_exec-a always,exit -F arch=b64 -S execve -k execve_audit-w /var/log/secure -p wa -k auth_log-a always,exit -F arch=b64 -S execve -F euid=1001 -k app_exec_auditsudo ausearch -k log_dir_accesssudo aureport -a、sudo aureport --login、sudo aureport --file/etc/audit/rules.d/audit.rules 以持久化;关注 max_log_file、space_left_action 等参数,防止磁盘被占满导致审计中断。三 应用层审计落地
appender.audit.type=RollingFile
appender.audit.name=AuditRollingFile
appender.audit.fileName=/var/log/java_audit.log
appender.audit.filePattern=/var/log/java_audit.log.%d{yyyy-MM-dd}
appender.audit.layout.type=JsonLayout
appender.audit.layout.compact=true
appender.audit.layout.eventEol=true
appender.audit.policies.type=Policies
appender.audit.policies.time.type=TimeBasedTriggeringPolicy
appender.audit.policies.time.interval=1
appender.audit.policies.time.modulate=true
appender.audit.strategy.type=DefaultRolloverStrategy
appender.audit.strategy.max=30
rootLogger.level=info
rootLogger.appenderRef.audit.ref=AuditRollingFile
四 集中化存储分析与告警
event.dataset: application AND message: "Login failed" | stats count by source.ip, user.name | where count > 5event.dataset: application AND action: "grant_privilege" AND result: "SUCCESS"message: "jndi:(ldap|rmi)"message: "java.io.ObjectInputStream" OR message: "java.rmi.server.RemoteObject"五 日志保护与运维实践
chown app:app /var/log/java_audit.log; chmod 640 /var/log/java_audit.log);必要时使用 ACL 精细化授权。ausearch 定位时间线;必要时对 JAR/WAR 进行反编译排查后门、对 JVM 做内存与线程取证(如 jmap/jstack、Volatility)。