插件窝 干货文章 如何在Linux上设置高可用的系统安全审计

如何在Linux上设置高可用的系统安全审计

audit 监控 auditd 审计 302    来源:    2025-04-16

Linux高可用系统安全审计配置指南

一、审计系统概述

Linux审计系统(auditd)是内核级的日志记录机制,能够跟踪系统上发生的安全相关事件,包括: - 文件访问 - 系统调用 - 用户命令执行 - 身份验证事件 - 网络访问等

二、高可用审计架构设计

1. 集中式日志收集架构

[多台Linux服务器] --> [本地auditd] --> [Logstash/Fluentd] --> [中央ES集群] --> [Kibana展示]
                     |--> [本地备份存储]

2. 高可用关键组件

  • 审计日志本地存储
  • 实时日志转发
  • 中央日志存储集群
  • 日志备份机制
  • 监控告警系统

三、auditd核心配置

1. 安装auditd

# RedHat/CentOS
sudo yum install audit audit-libs

# Debian/Ubuntu
sudo apt-get install auditd audispd-plugins

2. 主配置文件(/etc/audit/auditd.conf)优化

log_file = /var/log/audit/audit.log
log_format = RAW
log_group = root
priority_boost = 4
flush = INCREMENTAL_ASYNC
freq = 50
max_log_file = 50
num_logs = 5
disp_qos = lossy
dispatcher = /sbin/audispd
name_format = NONE
## 高可用相关配置
max_log_file_action = keep_logs
space_left = 100
space_left_action = email
action_mail_acct = root
admin_space_left = 50
admin_space_left_action = suspend
disk_full_action = SUSPEND
disk_error_action = SUSPEND

3. 审计规则配置(/etc/audit/rules.d/audit.rules)

基本监控规则

## 监控关键文件访问
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/sudoers -p wa -k privilege-escalation

## 监控系统管理操作
-w /usr/bin/sudo -p x -k privilege-escalation
-w /usr/bin/su -p x -k privilege-escalation

## 监控系统时间修改
-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time-change

高级监控规则

## 监控所有用户执行的命令
-a exit,always -F arch=b64 -S execve -k exec-cmd
-a exit,always -F arch=b32 -S execve -k exec-cmd

## 监控网络配置变更
-w /etc/hosts -p wa -k network-modifications
-w /etc/sysconfig/network-scripts/ -p wa -k network-modifications

## 监控内核模块加载/卸载
-w /sbin/insmod -p x -k module-load
-w /sbin/rmmod -p x -k module-load
-w /sbin/modprobe -p x -k module-load
-a always,exit -F arch=b64 -S init_module -S delete_module -k module-change

四、高可用实现方案

1. 实时日志转发配置

# 安装audisp插件
sudo apt-get install audispd-plugins

# 配置syslog转发(/etc/audisp/plugins.d/syslog.conf)
active = yes
direction = out
path = builtin_syslog
type = builtin
args = LOG_INFO
format = string

2. 使用Logstash收集审计日志

input {
  file {
    path => "/var/log/audit/audit.log"
    start_position => "beginning"
    sincedb_path => "/dev/null"
    type => "audit"
  }
}

filter {
  if [type] == "audit" {
    grok {
      match => { "message" => "type=%{WORD:audit_type} msg=audit\(%{NUMBER:timestamp}:%{NUMBER:id}\): %{GREEDYDATA:audit_message}" }
    }
  }
}

output {
  elasticsearch {
    hosts => ["es01:9200", "es02:9200"]
    index => "audit-%{+YYYY.MM.dd}"
  }
}

3. 日志轮转与归档

# /etc/logrotate.d/audit
/var/log/audit/audit.log {
    weekly
    rotate 12
    compress
    delaycompress
    notifempty
    create 0600 root root
    postrotate
        /usr/bin/systemctl kill -s USR1 auditd.service >/dev/null 2>&1 || true
    endscript
}

五、安全加固建议

  1. 审计日志保护

    chmod 600 /var/log/audit/audit.log
    chown root:root /var/log/audit/audit.log
    
  2. 防止审计进程被杀死

    echo "-e 2" >> /etc/audit/rules.d/audit.rules
    
  3. 监控auditd服务状态

    # 使用systemd监控
    systemctl enable auditd
    systemctl start auditd
    
    # 设置监控告警
    if ! systemctl is-active --quiet auditd; then
     echo "Auditd is not running!" | mail -s "Auditd Alert" admin@example.com
    fi
    

六、监控与分析工具

  1. 实时监控工具

    # 使用aureport查看摘要
    aureport --summary
    
    # 使用ausearch查询特定事件
    ausearch -k exec-cmd -i
    
  2. 与SIEM系统集成

    • Splunk
    • IBM QRadar
    • ArcSight
    • ELK Stack
  3. 自定义告警规则示例

    # 监控特权命令执行
    ausearch -k privilege-escalation -ts today | mail -s "Privilege Escalation Alert" admin@example.com
    

七、性能优化建议

  1. 规则优化

    • 避免过于宽泛的规则
    • 对高频事件使用节流
  2. 磁盘I/O优化

    # 在auditd.conf中
    flush = INCREMENTAL_ASYNC
    freq = 50
    
  3. 内核参数调整

    # 增加审计队列大小
    echo "net.unix.max_dgram_qlen=512" >> /etc/sysctl.conf
    sysctl -p
    

通过以上配置,您可以建立一个高可用的Linux系统安全审计框架,确保安全事件的可追溯性和系统的高可用性。