Linux系统日志审计实战:rsyslog集中采集与auditd规则定制部署方案

Linux系统日志审计是服务器运维中安全加固与故障排查的基础环节。rsyslog作为syslog的增强替代方案,支持高并发日志处理、多目标转发和结构化输出;auditd则提供内核级别的系统调用审计能力,能够精确记录文件访问、权限变更和用户行为。两者配合使用,可以构建覆盖系统层和应用层的完整日志审计体系,满足服务器安全加固的合规要求。

rsyslog服务配置与远程日志集中采集

rsyslog默认配置文件位于/etc/rsyslog.conf,同时支持/etc/rsyslog.d/目录下的独立配置片段。生产环境中推荐将日志集中到专用日志服务器,便于跨主机关联分析和长期归档。rsyslog支持TCP和UDP两种传输协议,TCP模式提供可靠传输,适合对日志完整性要求高的场景。

# /etc/rsyslog.conf 关键配置项

# 加载必要模块
module(load="imuxsock")    # 本地系统日志
module(load="imklog")      # 内核日志
module(load="imtcp")       # TCP监听
module(load="imudp")       # UDP监听

# 日志服务器端:接收远程日志
input(type="imtcp" port="514")
input(type="imudp" port="514")

# 按客户端主机分目录存储
$template("RemoteLogs", "/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log")
*.* -?RemoteLogs

# 本地日志规则
auth,authpriv.*           /var/log/auth.log
*.info;mail.none;authpriv.none;cron.none  /var/log/messages
cron.*                    /var/log/cron
mail.*                    /var/log/maillog

# 发送到远程日志服务器(客户端配置)
*.* @@log-server.example.com:514    # TCP
# 或使用非对称加密传输
*.* action(type="omfwd"
    target="log-server.example.com"
    port="6514"
    protocol="tcp"
    StreamDriver="gtls"
    StreamDriverMode="1"
    StreamDriverAuthMode="x509/name"
    StreamDriverPermittedPeers="log-server.example.com")

高并发场景下rsyslog可能成为性能瓶颈。通过调整队列参数可以提升吞吐量:主队列设置为磁盘辅助队列(DA queue),避免内存耗尽时日志丢失;工作线程数根据CPU核心数调整。以下配置在每秒10万条日志的写入压力下仍能稳定运行。

# 队列与性能调优
main_queue(
    queue.type="LinkedList"
    queue.size="100000"
    queue.discardMark="80000"
    queue.discardSeverity="0"
    queue.filename="rsyslog_main"
    queue.maxDiskSpace="10G"
    queue.saveOnShutdown="on"
)

# 工作线程配置
$WorkDirectory /var/spool/rsyslog
$MaxOpenFiles 4096

auditd审计规则定制与系统调用监控

auditd是Linux审计子系统的用户空间守护进程,通过内核audit框架记录系统调用事件。与rsyslog记录应用日志不同,auditd可以监控到文件级别的访问行为,包括读取、写入、属性变更和权限修改。在等保2.0和ISO27001合规审计中,auditd规则是关键的技术控制手段。

# 安装与启用auditd
yum install audit -y      # RHEL/CentOS
apt install auditd -y     # Debian/Ubuntu

systemctl enable auditd
systemctl start auditd

# /etc/audit/audit.rules 核心规则

# 监控用户和组操作
-w /etc/passwd -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/gshadow -p wa -k identity
-w /etc/security/opasswd -p wa -k identity

# 监控sudo和su使用
-w /etc/sudoers -p wa -k sudoers
-w /etc/sudoers.d/ -p wa -k sudoers

# 监控SSH配置变更
-w /etc/ssh/sshd_config -p wa -k ssh_config
-w /etc/ssh/sshd_config.d/ -p wa -k ssh_config

# 监控登录相关文件
-w /var/log/lastlog -p wa -k logins
-w /var/log/faillog -p wa -k logins
-w /var/run/utmp -p wa -k session

# 监控系统时间变更
-a always,exit -F arch=b64 -S adjtimex,settimeofday,clock_settime -k time-change
-w /etc/localtime -p wa -k time-change

# 监控网络环境变更
-a always,exit -F arch=b64 -S sethostname,setdomainname -k system-config
-w /etc/hosts -p wa -k system-config
-w /etc/sysconfig/network -p wa -k system-config

# 监控SELinux变更
-w /etc/selinux/ -p wa -k selinux
-w /etc/selinux/targeted/policy/ -p wa -k selinux

# 监控关键目录的文件创建和删除
-a always,exit -F arch=b64 -S mkdir,rmdir -F dir=/etc -k etc-change
-a always,exit -F arch=b64 -S unlink,unlinkat,rename,renameat -F dir=/etc -k etc-change

# 监控特权命令执行
-a always,exit -F arch=b64 -S execve -C uid!=0 -F euid=0 -k privileged-cmd
-a always,exit -F arch=b64 -S execve -C uid!=0 -F egid=0 -k privileged-cmd

通过ausearch和aureport工具可以快速检索审计日志。在生产环境中,建议将审计日志发送到集中化的SIEM平台进行关联分析。

# 按关键词搜索审计日志
ausearch -k identity --start today
ausearch -k ssh_config --start "this week"

# 生成审计报告
aureport --summary                # 汇总报告
aureport --failed                 # 失败事件报告
aureport --user                   # 用户活动报告
aureport --file                   # 文件访问报告
aureport --key --summary          # 按关键词汇总

# 实时监控特权命令执行
ausearch -k privileged-cmd -ts recent | audit2why

# 导出审计日志到JSON格式(便于SIEM消费)
ausearch -k identity --start today --raw | aureport --node --json

日志轮转与存储策略配置

日志文件持续增长会耗尽磁盘空间,需要通过logrotate进行自动轮转和压缩。生产环境中建议保留90天日志,审计日志根据合规要求可能需要保留180天或更久。

# /etc/logrotate.d/audit

/var/log/audit/audit.log {
    daily
    rotate 90
    missingok
    notifempty
    compress
    delaycompress
    postrotate
        /sbin/service auditd restart >/dev/null 2>&1 || true
    endscript
}

# /etc/logrotate.d/rsyslog-remote

/var/log/remote/*/*.log {
    daily
    rotate 180
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/rsyslogd.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

# 通过脚本自动清理过期归档
# crontab -e
0 2 * * * find /var/log/remote -name "*.log.*.gz" -mtime +180 -delete

集中化日志分析ELK集成方案

对于多主机环境,将rsyslog和auditd日志统一导入Elasticsearch进行分析是主流方案。Filebeat作为轻量级日志采集器部署在各服务器上,将日志转发到Logstash进行解析和过滤后写入Elasticsearch。

# /etc/filebeat/filebeat.yml

filebeat.inputs:
- type: filestream
  id: syslog
  paths:
    - /var/log/messages
    - /var/log/secure
  fields:
    log_type: syslog

- type: filestream
  id: audit
  paths:
    - /var/log/audit/audit.log
  fields:
    log_type: audit
  processors:
    - decode_json_fields:
        fields: ["message"]
        process_array: true
        max_depth: 3

output.logstash:
  hosts: ["logstash-server:5044"]
  loadbalance: true
  bulk_max_size: 2048

# Logstash配置:解析auditd日志
# /etc/logstash/conf.d/audit.conf
input {
  beats {
    port => 5044
  }
}
filter {
  if [fields][log_type] == "audit" {
    grok {
      match => {
        "message" => "type=%{WORD:audit_type} msg=audit\(%{NUMBER:audit_epoch}:%{NUMBER:audit_id}\): %{GREEDYDATA:audit_data}"
      }
    }
    date {
      match => ["audit_epoch", "UNIX"]
      target => "@timestamp"
    }
    kv {
      source => "audit_data"
      field_split => " "
      value_split => "="
      trim_value => """
    }
  }
}
output {
  elasticsearch {
    hosts => ["es-cluster:9200"]
    index => "audit-%{+YYYY.MM.dd}"
  }
}

服务器故障排查中,完整的日志链路可以快速定位问题根因。rsyslog记录的系统和应用日志提供时间线,auditd的审计记录补充了操作行为的细节,两者时间戳对齐后可以完整还原事件过程。在安全事件响应中,这种组合审计能力是追踪攻击路径的关键工具。

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/linux-xi-tong-ri-zhi-shen-ji-shi-zhan-rsyslog-ji-zhong-cai/

(0)
小编小编
上一篇 6小时前
下一篇 6小时前

相关推荐

Linux系统日志审计实战:rsyslog集中采集与auditd规则定制部署方案

Linux系统日志审计是服务器运维中安全加固与故障排查的基础环节。rsyslog作为syslog的增强替代方案,支持高并发日志处理、多目标转发和结构化输出;auditd则提供内核级别的系统调用审计能力,能够精确记录文件访问、权限变更和用户行为。两者配合使用,可以构建覆盖系统层和应用层的完整日志审计体系,满足服务器安全加固的合规要求。

rsyslog服务配置与远程日志集中采集

rsyslog默认配置文件位于/etc/rsyslog.conf,同时支持/etc/rsyslog.d/目录下的独立配置片段。生产环境中推荐将日志集中到专用日志服务器,便于跨主机关联分析和长期归档。rsyslog支持TCP和UDP两种传输协议,TCP模式提供可靠传输,适合对日志完整性要求高的场景。

# /etc/rsyslog.conf 关键配置项

# 加载必要模块
module(load="imuxsock")    # 本地系统日志
module(load="imklog")      # 内核日志
module(load="imtcp")       # TCP监听
module(load="imudp")       # UDP监听

# 日志服务器端:接收远程日志
input(type="imtcp" port="514")
input(type="imudp" port="514")

# 按客户端主机分目录存储
$template("RemoteLogs", "/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log")
*.* -?RemoteLogs

# 本地日志规则
auth,authpriv.*           /var/log/auth.log
*.info;mail.none;authpriv.none;cron.none  /var/log/messages
cron.*                    /var/log/cron
mail.*                    /var/log/maillog

# 发送到远程日志服务器(客户端配置)
*.* @@log-server.example.com:514    # TCP
# 或使用非对称加密传输
*.* action(type="omfwd"
    target="log-server.example.com"
    port="6514"
    protocol="tcp"
    StreamDriver="gtls"
    StreamDriverMode="1"
    StreamDriverAuthMode="x509/name"
    StreamDriverPermittedPeers="log-server.example.com")

高并发场景下rsyslog可能成为性能瓶颈。通过调整队列参数可以提升吞吐量:主队列设置为磁盘辅助队列(DA queue),避免内存耗尽时日志丢失;工作线程数根据CPU核心数调整。以下配置在每秒10万条日志的写入压力下仍能稳定运行。

# 队列与性能调优
main_queue(
    queue.type="LinkedList"
    queue.size="100000"
    queue.discardMark="80000"
    queue.discardSeverity="0"
    queue.filename="rsyslog_main"
    queue.maxDiskSpace="10G"
    queue.saveOnShutdown="on"
)

# 工作线程配置
$WorkDirectory /var/spool/rsyslog
$MaxOpenFiles 4096

auditd审计规则定制与系统调用监控

auditd是Linux审计子系统的用户空间守护进程,通过内核audit框架记录系统调用事件。与rsyslog记录应用日志不同,auditd可以监控到文件级别的访问行为,包括读取、写入、属性变更和权限修改。在等保2.0和ISO27001合规审计中,auditd规则是关键的技术控制手段。

# 安装与启用auditd
yum install audit -y      # RHEL/CentOS
apt install auditd -y     # Debian/Ubuntu

systemctl enable auditd
systemctl start auditd

# /etc/audit/audit.rules 核心规则

# 监控用户和组操作
-w /etc/passwd -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/gshadow -p wa -k identity
-w /etc/security/opasswd -p wa -k identity

# 监控sudo和su使用
-w /etc/sudoers -p wa -k sudoers
-w /etc/sudoers.d/ -p wa -k sudoers

# 监控SSH配置变更
-w /etc/ssh/sshd_config -p wa -k ssh_config
-w /etc/ssh/sshd_config.d/ -p wa -k ssh_config

# 监控登录相关文件
-w /var/log/lastlog -p wa -k logins
-w /var/log/faillog -p wa -k logins
-w /var/run/utmp -p wa -k session

# 监控系统时间变更
-a always,exit -F arch=b64 -S adjtimex,settimeofday,clock_settime -k time-change
-w /etc/localtime -p wa -k time-change

# 监控网络环境变更
-a always,exit -F arch=b64 -S sethostname,setdomainname -k system-config
-w /etc/hosts -p wa -k system-config
-w /etc/sysconfig/network -p wa -k system-config

# 监控SELinux变更
-w /etc/selinux/ -p wa -k selinux
-w /etc/selinux/targeted/policy/ -p wa -k selinux

# 监控关键目录的文件创建和删除
-a always,exit -F arch=b64 -S mkdir,rmdir -F dir=/etc -k etc-change
-a always,exit -F arch=b64 -S unlink,unlinkat,rename,renameat -F dir=/etc -k etc-change

# 监控特权命令执行
-a always,exit -F arch=b64 -S execve -C uid!=0 -F euid=0 -k privileged-cmd
-a always,exit -F arch=b64 -S execve -C uid!=0 -F egid=0 -k privileged-cmd

通过ausearch和aureport工具可以快速检索审计日志。在生产环境中,建议将审计日志发送到集中化的SIEM平台进行关联分析。

# 按关键词搜索审计日志
ausearch -k identity --start today
ausearch -k ssh_config --start "this week"

# 生成审计报告
aureport --summary                # 汇总报告
aureport --failed                 # 失败事件报告
aureport --user                   # 用户活动报告
aureport --file                   # 文件访问报告
aureport --key --summary          # 按关键词汇总

# 实时监控特权命令执行
ausearch -k privileged-cmd -ts recent | audit2why

# 导出审计日志到JSON格式(便于SIEM消费)
ausearch -k identity --start today --raw | aureport --node --json

日志轮转与存储策略配置

日志文件持续增长会耗尽磁盘空间,需要通过logrotate进行自动轮转和压缩。生产环境中建议保留90天日志,审计日志根据合规要求可能需要保留180天或更久。

# /etc/logrotate.d/audit

/var/log/audit/audit.log {
    daily
    rotate 90
    missingok
    notifempty
    compress
    delaycompress
    postrotate
        /sbin/service auditd restart >/dev/null 2>&1 || true
    endscript
}

# /etc/logrotate.d/rsyslog-remote

/var/log/remote/*/*.log {
    daily
    rotate 180
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/rsyslogd.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

# 通过脚本自动清理过期归档
# crontab -e
0 2 * * * find /var/log/remote -name "*.log.*.gz" -mtime +180 -delete

集中化日志分析ELK集成方案

对于多主机环境,将rsyslog和auditd日志统一导入Elasticsearch进行分析是主流方案。Filebeat作为轻量级日志采集器部署在各服务器上,将日志转发到Logstash进行解析和过滤后写入Elasticsearch。

# /etc/filebeat/filebeat.yml

filebeat.inputs:
- type: filestream
  id: syslog
  paths:
    - /var/log/messages
    - /var/log/secure
  fields:
    log_type: syslog

- type: filestream
  id: audit
  paths:
    - /var/log/audit/audit.log
  fields:
    log_type: audit
  processors:
    - decode_json_fields:
        fields: ["message"]
        process_array: true
        max_depth: 3

output.logstash:
  hosts: ["logstash-server:5044"]
  loadbalance: true
  bulk_max_size: 2048

# Logstash配置:解析auditd日志
# /etc/logstash/conf.d/audit.conf
input {
  beats {
    port => 5044
  }
}
filter {
  if [fields][log_type] == "audit" {
    grok {
      match => {
        "message" => "type=%{WORD:audit_type} msg=audit\(%{NUMBER:audit_epoch}:%{NUMBER:audit_id}\): %{GREEDYDATA:audit_data}"
      }
    }
    date {
      match => ["audit_epoch", "UNIX"]
      target => "@timestamp"
    }
    kv {
      source => "audit_data"
      field_split => " "
      value_split => "="
      trim_value => """
    }
  }
}
output {
  elasticsearch {
    hosts => ["es-cluster:9200"]
    index => "audit-%{+YYYY.MM.dd}"
  }
}

服务器故障排查中,完整的日志链路可以快速定位问题根因。rsyslog记录的系统和应用日志提供时间线,auditd的审计记录补充了操作行为的细节,两者时间戳对齐后可以完整还原事件过程。在安全事件响应中,这种组合审计能力是追踪攻击路径的关键工具。

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/linux-xi-tong-ri-zhi-shen-ji-shi-zhan-rsyslog-ji-zhong-cai/

(0)
小编小编
上一篇 6小时前
下一篇 6小时前

相关推荐

Linux系统日志审计实战:rsyslog集中采集与auditd规则定制部署方案

Linux系统日志审计是服务器运维中安全加固与故障排查的基础环节。rsyslog作为syslog的增强替代方案,支持高并发日志处理、多目标转发和结构化输出;auditd则提供内核级别的系统调用审计能力,能够精确记录文件访问、权限变更和用户行为。两者配合使用,可以构建覆盖系统层和应用层的完整日志审计体系,满足服务器安全加固的合规要求。

rsyslog服务配置与远程日志集中采集

rsyslog默认配置文件位于/etc/rsyslog.conf,同时支持/etc/rsyslog.d/目录下的独立配置片段。生产环境中推荐将日志集中到专用日志服务器,便于跨主机关联分析和长期归档。rsyslog支持TCP和UDP两种传输协议,TCP模式提供可靠传输,适合对日志完整性要求高的场景。

# /etc/rsyslog.conf 关键配置项

# 加载必要模块
module(load="imuxsock")    # 本地系统日志
module(load="imklog")      # 内核日志
module(load="imtcp")       # TCP监听
module(load="imudp")       # UDP监听

# 日志服务器端:接收远程日志
input(type="imtcp" port="514")
input(type="imudp" port="514")

# 按客户端主机分目录存储
$template("RemoteLogs", "/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log")
*.* -?RemoteLogs

# 本地日志规则
auth,authpriv.*           /var/log/auth.log
*.info;mail.none;authpriv.none;cron.none  /var/log/messages
cron.*                    /var/log/cron
mail.*                    /var/log/maillog

# 发送到远程日志服务器(客户端配置)
*.* @@log-server.example.com:514    # TCP
# 或使用非对称加密传输
*.* action(type="omfwd"
    target="log-server.example.com"
    port="6514"
    protocol="tcp"
    StreamDriver="gtls"
    StreamDriverMode="1"
    StreamDriverAuthMode="x509/name"
    StreamDriverPermittedPeers="log-server.example.com")

高并发场景下rsyslog可能成为性能瓶颈。通过调整队列参数可以提升吞吐量:主队列设置为磁盘辅助队列(DA queue),避免内存耗尽时日志丢失;工作线程数根据CPU核心数调整。以下配置在每秒10万条日志的写入压力下仍能稳定运行。

# 队列与性能调优
main_queue(
    queue.type="LinkedList"
    queue.size="100000"
    queue.discardMark="80000"
    queue.discardSeverity="0"
    queue.filename="rsyslog_main"
    queue.maxDiskSpace="10G"
    queue.saveOnShutdown="on"
)

# 工作线程配置
$WorkDirectory /var/spool/rsyslog
$MaxOpenFiles 4096

auditd审计规则定制与系统调用监控

auditd是Linux审计子系统的用户空间守护进程,通过内核audit框架记录系统调用事件。与rsyslog记录应用日志不同,auditd可以监控到文件级别的访问行为,包括读取、写入、属性变更和权限修改。在等保2.0和ISO27001合规审计中,auditd规则是关键的技术控制手段。

# 安装与启用auditd
yum install audit -y      # RHEL/CentOS
apt install auditd -y     # Debian/Ubuntu

systemctl enable auditd
systemctl start auditd

# /etc/audit/audit.rules 核心规则

# 监控用户和组操作
-w /etc/passwd -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/gshadow -p wa -k identity
-w /etc/security/opasswd -p wa -k identity

# 监控sudo和su使用
-w /etc/sudoers -p wa -k sudoers
-w /etc/sudoers.d/ -p wa -k sudoers

# 监控SSH配置变更
-w /etc/ssh/sshd_config -p wa -k ssh_config
-w /etc/ssh/sshd_config.d/ -p wa -k ssh_config

# 监控登录相关文件
-w /var/log/lastlog -p wa -k logins
-w /var/log/faillog -p wa -k logins
-w /var/run/utmp -p wa -k session

# 监控系统时间变更
-a always,exit -F arch=b64 -S adjtimex,settimeofday,clock_settime -k time-change
-w /etc/localtime -p wa -k time-change

# 监控网络环境变更
-a always,exit -F arch=b64 -S sethostname,setdomainname -k system-config
-w /etc/hosts -p wa -k system-config
-w /etc/sysconfig/network -p wa -k system-config

# 监控SELinux变更
-w /etc/selinux/ -p wa -k selinux
-w /etc/selinux/targeted/policy/ -p wa -k selinux

# 监控关键目录的文件创建和删除
-a always,exit -F arch=b64 -S mkdir,rmdir -F dir=/etc -k etc-change
-a always,exit -F arch=b64 -S unlink,unlinkat,rename,renameat -F dir=/etc -k etc-change

# 监控特权命令执行
-a always,exit -F arch=b64 -S execve -C uid!=0 -F euid=0 -k privileged-cmd
-a always,exit -F arch=b64 -S execve -C uid!=0 -F egid=0 -k privileged-cmd

通过ausearch和aureport工具可以快速检索审计日志。在生产环境中,建议将审计日志发送到集中化的SIEM平台进行关联分析。

# 按关键词搜索审计日志
ausearch -k identity --start today
ausearch -k ssh_config --start "this week"

# 生成审计报告
aureport --summary                # 汇总报告
aureport --failed                 # 失败事件报告
aureport --user                   # 用户活动报告
aureport --file                   # 文件访问报告
aureport --key --summary          # 按关键词汇总

# 实时监控特权命令执行
ausearch -k privileged-cmd -ts recent | audit2why

# 导出审计日志到JSON格式(便于SIEM消费)
ausearch -k identity --start today --raw | aureport --node --json

日志轮转与存储策略配置

日志文件持续增长会耗尽磁盘空间,需要通过logrotate进行自动轮转和压缩。生产环境中建议保留90天日志,审计日志根据合规要求可能需要保留180天或更久。

# /etc/logrotate.d/audit

/var/log/audit/audit.log {
    daily
    rotate 90
    missingok
    notifempty
    compress
    delaycompress
    postrotate
        /sbin/service auditd restart >/dev/null 2>&1 || true
    endscript
}

# /etc/logrotate.d/rsyslog-remote

/var/log/remote/*/*.log {
    daily
    rotate 180
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/rsyslogd.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

# 通过脚本自动清理过期归档
# crontab -e
0 2 * * * find /var/log/remote -name "*.log.*.gz" -mtime +180 -delete

集中化日志分析ELK集成方案

对于多主机环境,将rsyslog和auditd日志统一导入Elasticsearch进行分析是主流方案。Filebeat作为轻量级日志采集器部署在各服务器上,将日志转发到Logstash进行解析和过滤后写入Elasticsearch。

# /etc/filebeat/filebeat.yml

filebeat.inputs:
- type: filestream
  id: syslog
  paths:
    - /var/log/messages
    - /var/log/secure
  fields:
    log_type: syslog

- type: filestream
  id: audit
  paths:
    - /var/log/audit/audit.log
  fields:
    log_type: audit
  processors:
    - decode_json_fields:
        fields: ["message"]
        process_array: true
        max_depth: 3

output.logstash:
  hosts: ["logstash-server:5044"]
  loadbalance: true
  bulk_max_size: 2048

# Logstash配置:解析auditd日志
# /etc/logstash/conf.d/audit.conf
input {
  beats {
    port => 5044
  }
}
filter {
  if [fields][log_type] == "audit" {
    grok {
      match => {
        "message" => "type=%{WORD:audit_type} msg=audit\(%{NUMBER:audit_epoch}:%{NUMBER:audit_id}\): %{GREEDYDATA:audit_data}"
      }
    }
    date {
      match => ["audit_epoch", "UNIX"]
      target => "@timestamp"
    }
    kv {
      source => "audit_data"
      field_split => " "
      value_split => "="
      trim_value => """
    }
  }
}
output {
  elasticsearch {
    hosts => ["es-cluster:9200"]
    index => "audit-%{+YYYY.MM.dd}"
  }
}

服务器故障排查中,完整的日志链路可以快速定位问题根因。rsyslog记录的系统和应用日志提供时间线,auditd的审计记录补充了操作行为的细节,两者时间戳对齐后可以完整还原事件过程。在安全事件响应中,这种组合审计能力是追踪攻击路径的关键工具。

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/linux-xi-tong-ri-zhi-shen-ji-shi-zhan-rsyslog-ji-zhong-cai/

(0)
小编小编
上一篇 6小时前
下一篇 6小时前

相关推荐

Linux系统日志审计实战:rsyslog集中采集与auditd规则定制部署方案

Linux系统日志审计是服务器运维中安全加固与故障排查的基础环节。rsyslog作为syslog的增强替代方案,支持高并发日志处理、多目标转发和结构化输出;auditd则提供内核级别的系统调用审计能力,能够精确记录文件访问、权限变更和用户行为。两者配合使用,可以构建覆盖系统层和应用层的完整日志审计体系,满足服务器安全加固的合规要求。

rsyslog服务配置与远程日志集中采集

rsyslog默认配置文件位于/etc/rsyslog.conf,同时支持/etc/rsyslog.d/目录下的独立配置片段。生产环境中推荐将日志集中到专用日志服务器,便于跨主机关联分析和长期归档。rsyslog支持TCP和UDP两种传输协议,TCP模式提供可靠传输,适合对日志完整性要求高的场景。

# /etc/rsyslog.conf 关键配置项

# 加载必要模块
module(load="imuxsock")    # 本地系统日志
module(load="imklog")      # 内核日志
module(load="imtcp")       # TCP监听
module(load="imudp")       # UDP监听

# 日志服务器端:接收远程日志
input(type="imtcp" port="514")
input(type="imudp" port="514")

# 按客户端主机分目录存储
$template("RemoteLogs", "/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log")
*.* -?RemoteLogs

# 本地日志规则
auth,authpriv.*           /var/log/auth.log
*.info;mail.none;authpriv.none;cron.none  /var/log/messages
cron.*                    /var/log/cron
mail.*                    /var/log/maillog

# 发送到远程日志服务器(客户端配置)
*.* @@log-server.example.com:514    # TCP
# 或使用非对称加密传输
*.* action(type="omfwd"
    target="log-server.example.com"
    port="6514"
    protocol="tcp"
    StreamDriver="gtls"
    StreamDriverMode="1"
    StreamDriverAuthMode="x509/name"
    StreamDriverPermittedPeers="log-server.example.com")

高并发场景下rsyslog可能成为性能瓶颈。通过调整队列参数可以提升吞吐量:主队列设置为磁盘辅助队列(DA queue),避免内存耗尽时日志丢失;工作线程数根据CPU核心数调整。以下配置在每秒10万条日志的写入压力下仍能稳定运行。

# 队列与性能调优
main_queue(
    queue.type="LinkedList"
    queue.size="100000"
    queue.discardMark="80000"
    queue.discardSeverity="0"
    queue.filename="rsyslog_main"
    queue.maxDiskSpace="10G"
    queue.saveOnShutdown="on"
)

# 工作线程配置
$WorkDirectory /var/spool/rsyslog
$MaxOpenFiles 4096

auditd审计规则定制与系统调用监控

auditd是Linux审计子系统的用户空间守护进程,通过内核audit框架记录系统调用事件。与rsyslog记录应用日志不同,auditd可以监控到文件级别的访问行为,包括读取、写入、属性变更和权限修改。在等保2.0和ISO27001合规审计中,auditd规则是关键的技术控制手段。

# 安装与启用auditd
yum install audit -y      # RHEL/CentOS
apt install auditd -y     # Debian/Ubuntu

systemctl enable auditd
systemctl start auditd

# /etc/audit/audit.rules 核心规则

# 监控用户和组操作
-w /etc/passwd -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/gshadow -p wa -k identity
-w /etc/security/opasswd -p wa -k identity

# 监控sudo和su使用
-w /etc/sudoers -p wa -k sudoers
-w /etc/sudoers.d/ -p wa -k sudoers

# 监控SSH配置变更
-w /etc/ssh/sshd_config -p wa -k ssh_config
-w /etc/ssh/sshd_config.d/ -p wa -k ssh_config

# 监控登录相关文件
-w /var/log/lastlog -p wa -k logins
-w /var/log/faillog -p wa -k logins
-w /var/run/utmp -p wa -k session

# 监控系统时间变更
-a always,exit -F arch=b64 -S adjtimex,settimeofday,clock_settime -k time-change
-w /etc/localtime -p wa -k time-change

# 监控网络环境变更
-a always,exit -F arch=b64 -S sethostname,setdomainname -k system-config
-w /etc/hosts -p wa -k system-config
-w /etc/sysconfig/network -p wa -k system-config

# 监控SELinux变更
-w /etc/selinux/ -p wa -k selinux
-w /etc/selinux/targeted/policy/ -p wa -k selinux

# 监控关键目录的文件创建和删除
-a always,exit -F arch=b64 -S mkdir,rmdir -F dir=/etc -k etc-change
-a always,exit -F arch=b64 -S unlink,unlinkat,rename,renameat -F dir=/etc -k etc-change

# 监控特权命令执行
-a always,exit -F arch=b64 -S execve -C uid!=0 -F euid=0 -k privileged-cmd
-a always,exit -F arch=b64 -S execve -C uid!=0 -F egid=0 -k privileged-cmd

通过ausearch和aureport工具可以快速检索审计日志。在生产环境中,建议将审计日志发送到集中化的SIEM平台进行关联分析。

# 按关键词搜索审计日志
ausearch -k identity --start today
ausearch -k ssh_config --start "this week"

# 生成审计报告
aureport --summary                # 汇总报告
aureport --failed                 # 失败事件报告
aureport --user                   # 用户活动报告
aureport --file                   # 文件访问报告
aureport --key --summary          # 按关键词汇总

# 实时监控特权命令执行
ausearch -k privileged-cmd -ts recent | audit2why

# 导出审计日志到JSON格式(便于SIEM消费)
ausearch -k identity --start today --raw | aureport --node --json

日志轮转与存储策略配置

日志文件持续增长会耗尽磁盘空间,需要通过logrotate进行自动轮转和压缩。生产环境中建议保留90天日志,审计日志根据合规要求可能需要保留180天或更久。

# /etc/logrotate.d/audit

/var/log/audit/audit.log {
    daily
    rotate 90
    missingok
    notifempty
    compress
    delaycompress
    postrotate
        /sbin/service auditd restart >/dev/null 2>&1 || true
    endscript
}

# /etc/logrotate.d/rsyslog-remote

/var/log/remote/*/*.log {
    daily
    rotate 180
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/rsyslogd.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

# 通过脚本自动清理过期归档
# crontab -e
0 2 * * * find /var/log/remote -name "*.log.*.gz" -mtime +180 -delete

集中化日志分析ELK集成方案

对于多主机环境,将rsyslog和auditd日志统一导入Elasticsearch进行分析是主流方案。Filebeat作为轻量级日志采集器部署在各服务器上,将日志转发到Logstash进行解析和过滤后写入Elasticsearch。

# /etc/filebeat/filebeat.yml

filebeat.inputs:
- type: filestream
  id: syslog
  paths:
    - /var/log/messages
    - /var/log/secure
  fields:
    log_type: syslog

- type: filestream
  id: audit
  paths:
    - /var/log/audit/audit.log
  fields:
    log_type: audit
  processors:
    - decode_json_fields:
        fields: ["message"]
        process_array: true
        max_depth: 3

output.logstash:
  hosts: ["logstash-server:5044"]
  loadbalance: true
  bulk_max_size: 2048

# Logstash配置:解析auditd日志
# /etc/logstash/conf.d/audit.conf
input {
  beats {
    port => 5044
  }
}
filter {
  if [fields][log_type] == "audit" {
    grok {
      match => {
        "message" => "type=%{WORD:audit_type} msg=audit\(%{NUMBER:audit_epoch}:%{NUMBER:audit_id}\): %{GREEDYDATA:audit_data}"
      }
    }
    date {
      match => ["audit_epoch", "UNIX"]
      target => "@timestamp"
    }
    kv {
      source => "audit_data"
      field_split => " "
      value_split => "="
      trim_value => """
    }
  }
}
output {
  elasticsearch {
    hosts => ["es-cluster:9200"]
    index => "audit-%{+YYYY.MM.dd}"
  }
}

服务器故障排查中,完整的日志链路可以快速定位问题根因。rsyslog记录的系统和应用日志提供时间线,auditd的审计记录补充了操作行为的细节,两者时间戳对齐后可以完整还原事件过程。在安全事件响应中,这种组合审计能力是追踪攻击路径的关键工具。

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/linux-xi-tong-ri-zhi-shen-ji-shi-zhan-rsyslog-ji-zhong-cai/

(0)
小编小编
上一篇 6小时前
下一篇 6小时前

相关推荐