Linux审计系统(auditd)是内核级的日志记录机制,能够跟踪系统上发生的安全相关事件,包括: - 文件访问 - 系统调用 - 用户命令执行 - 身份验证事件 - 网络访问等
[多台Linux服务器] --> [本地auditd] --> [Logstash/Fluentd] --> [中央ES集群] --> [Kibana展示]
|--> [本地备份存储]
# RedHat/CentOS
sudo yum install audit audit-libs
# Debian/Ubuntu
sudo apt-get install auditd audispd-plugins
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
## 监控关键文件访问
-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
# 安装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
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}"
}
}
# /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
}
审计日志保护
chmod 600 /var/log/audit/audit.log
chown root:root /var/log/audit/audit.log
防止审计进程被杀死
echo "-e 2" >> /etc/audit/rules.d/audit.rules
监控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
实时监控工具
# 使用aureport查看摘要
aureport --summary
# 使用ausearch查询特定事件
ausearch -k exec-cmd -i
与SIEM系统集成
自定义告警规则示例
# 监控特权命令执行
ausearch -k privilege-escalation -ts today | mail -s "Privilege Escalation Alert" admin@example.com
规则优化
磁盘I/O优化
# 在auditd.conf中
flush = INCREMENTAL_ASYNC
freq = 50
内核参数调整
# 增加审计队列大小
echo "net.unix.max_dgram_qlen=512" >> /etc/sysctl.conf
sysctl -p
通过以上配置,您可以建立一个高可用的Linux系统安全审计框架,确保安全事件的可追溯性和系统的高可用性。