Debian nohup 日志安全审计实践
一 基础与总体思路
nohup ./app.sh > /var/log/myapp/stdout.log 2> /var/log/myapp/stderr.log &,避免散落在用户主目录或 /tmp。随后对日志目录与文件设置最小权限:目录 700、文件 600,并使用 chown/chmod 固定属主属组。为控制体积与保留周期,使用 logrotate 做按大小或按日轮转、压缩与保留;对含敏感信息的日志,优先脱敏,必要时采用 GPG 加密存储并妥善管理密钥。为便于集中审计与告警,建议将关键日志统一接入 rsyslog/syslog-ng 并配置远程集中收集。最后,建立例行检查与告警机制,覆盖异常登录、权限变更、可疑进程与关键业务报错等场景。二 日志采集与存储安全
采集与存储要点如下:
tail -f,系统级日志与结构化分析建议统一走 rsyslog/syslog-ng 再由 ELK/Graylog/Splunk 做聚合与检索。示例:nohup 输出与权限
mkdir -p /var/log/myapp
chown appuser:appgroup /var/log/myapp
chmod 700 /var/log/myapp
nohup ./app.sh > /var/log/myapp/stdout.log 2> /var/log/myapp/stderr.log &
chown appuser:appgroup /var/log/myapp/*.log
chmod 600 /var/log/myapp/*.log
三 轮转与完整性保护
/var/log/myapp/*.log {
daily
size 100M
rotate 14
compress
delaycompress
missingok
notifempty
create 640 appuser appgroup
sharedscripts
postrotate
# 若应用支持reopen信号(如kill -USR1),在此触发
# kill -USR1 $(cat /var/run/myapp.pid 2>/dev/null) || true
endscript
}
auditctl -w /var/log/myapp -p wa -k log_myapp),记录打开、修改、删除等事件,并将审计日志单独落盘与集中转发。四 审计与监控落地
#!/usr/bin/env bash
LOG=/var/log/auth.log
THRESHOLD=5
COUNT=$(grep "Failed password" "$LOG" | tail -n "$THRESHOLD" | wc -l)
if (( COUNT >= THRESHOLD )); then
echo "ALERT: $COUNT failed password attempts detected in $LOG" | mail -s "SSH Brute-force Alert" sec@example.com
fi
grep/awk/sort/uniq -c 做高频错误、异常返回码、可疑关键字(如“password”“secret”“token”)的周期性扫描。五 合规与加固清单