如何配置sudo日志 集中审计

配置 sudo 日志集中审计的核心是通过本地记录、日志转发和集中存储实现特权操作的可追溯性。1. 首先配置 sudo 单独日志:使用 visudo 设置 defaults logfile=/var/log/sudo.log 并启用 log_input 和 log_output 以记录输入输出;2. 设置日志文件权限为 0600,确保仅 root 可读写;3. 配置 rsyslog 转发日志:在 /etc/rsyslog.conf 中加载 omfwd 模块,并添加规则如 :msg, contains, “sudo” @@192.168.1.100:514 使用 tcp 协议发送至日志服务器;4. 在远程日志服务器启用 imtcp 模块并监听 514 端口,通过模板按主机或关键字存储日志,如使用 ?hosttemplate 分离不同客户端日志;5. 可选增强审计:结合 auditd 监控 /usr/bin/sudo 执行和 /etc/sudoers 文件访问,记录更细粒度行为;6. 推荐接入 elkgraylog 或 splunk 等平台实现集中分析与告警;7. 安全方面需限制日志服务器访问权限,启用完整性校验,定期备份日志,并配置异常行为告警,确保审计数据不可篡改且具备事后追溯能力。最终通过“本地记录 + syslog 转发 + 集中存储 + 增强审计”形成完整的 sudo 操作审计体系。

如何配置sudo日志 集中审计

配置 sudo 日志集中审计,主要是为了实现对系统中特权操作的统一记录与监控,便于安全审计和事后追溯。以下是实现 sudo 日志集中审计的完整配置思路和步骤,适用于 linux 系统(以 centos/RHEL/ubuntu 为例)。


一、启用本地 sudo 日志记录

默认情况下,sudo 的操作通常记录在

/var/log/secure

(RHEL/CentOS)或

/var/log/auth.log

(Ubuntu/debian)中。但为了更清晰地审计,建议将 sudo 日志单独输出。

1. 修改 sudoers 配置

使用

visudo

编辑 sudoers 文件:

sudo visudo

添加或确认以下行:

Defaults    logfile = /var/log/sudo.log Defaults    log_input, log_output
  • logfile

    :指定 sudo 操作单独记录到

    /var/log/sudo.log
  • log_input, log_output

    :记录用户输入和命令输出(需配合

    sudo

    tty_tickets

    使用)

注意:log_input 和 log_output 会记录终端交互内容,可能涉及敏感信息,请评估安全策略。

2. 设置日志文件权限

确保日志文件权限安全:

sudo touch /var/log/sudo.log sudo chown root:root /var/log/sudo.log sudo chmod 0600 /var/log/sudo.log

二、配置 rsyslog 将日志发送到远程日志服务器

要实现集中审计,需将本地的 sudo 日志通过 syslog 协议发送到远程日志服务器(如 syslog-ng、rsyslog server、ELK、Splunk 等)。

1. 修改 rsyslog 配置(本地客户端)

编辑 rsyslog 配置文件:

sudo vim /etc/rsyslog.conf

确保启用以下模块(取消注释):

module(load="imuxsock") # 接收本地日志 module(load="imklog")   # 内核日志 module(load="omfwd")    # 支持转发

添加规则,将 sudo 日志转发到远程服务器(假设日志服务器 IP 为 192.168.1.100,端口 514):

# 转发所有包含 sudo 的日志 :msg, contains, "sudo" @@192.168.1.100:514  # 或者转发整个 authpriv 日志(sudo 默认属于 authpriv.*) authpriv.* @@192.168.1.100:514

使用

@@

表示 TCP(可靠传输),

@

表示 udp(不推荐用于审计)

2. 重启 rsyslog 服务

sudo systemctl restart rsyslog

三、配置远程日志服务器(集中收集端)

在日志服务器上配置 rsyslog 接收来自客户端的日志。

1. 启用网络接收功能

编辑

/etc/rsyslog.conf

module(load="imtcp") input(type="imtcp" port="514")

2. 定义日志存储路径(可选按主机分离)

# 按主机名保存日志 $template HostTemplate,"/var/log/remote/%HOSTNAME%/auth.log" authpriv.* ?HostTemplate

或专门保存 sudo 日志:

:msg, contains, "sudo", ?File,"/var/log/audit/sudo.log" & stop

3. 创建目录并重启服务

sudo mkdir -p /var/log/remote /var/log/audit sudo systemctl restart rsyslog

四、增强审计能力(可选但推荐)

1. 结合 auditd 进行更细粒度审计

sudo 日志只记录“谁执行了什么命令”,而

auditd

可以记录系统调用、文件访问等。

/etc/audit/rules.d/audit.rules

中添加:

# 监控 sudo 命令执行 -a always,exit -F path=/usr/bin/sudo -F perm=x -k sudo_exec  # 监控关键配置文件 -w /etc/sudoers -p wa -k sudoers_Access

重启 auditd:

sudo systemctl restart auditd

日志将记录在

/var/log/audit/audit.log

,可通过

ausearch -k sudo_exec

查询。

2. 使用集中式日志平台(如 ELK、Graylog)

将 rsyslog 输出接入:

  • ELK:通过 Filebeat 收集日志,Logstash 过滤,Kibana 展示
  • Graylog:直接接收 syslog,支持告警和搜索
  • Splunk:部署 Universal Forwarder 或接收 syslog

五、安全建议

  • 所有日志服务器应设置访问控制,仅允许授权人员查看。
  • 启用日志完整性校验(如 auditd 的 log_file_integrity)。
  • 定期归档和备份日志,防止被篡改或删除。
  • 配置日志告警,如频繁 sudo 失败、root 登录等异常行为。

基本上就这些。通过“本地记录 + syslog 转发 + 集中存储 + 增强审计”,可以实现完整的 sudo 操作集中审计体系。关键是确保日志不被本地用户篡改,因此远程集中存储是核心。

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享