Centos7的访问日志记录

1,055 阅读2分钟

使用auditd并结合rsyslogsudo日志记录的更全面的解决方案:

1. 使用 auditd 配置详细的审计规则

安装 auditd

sudo yum install audit -y
sudo systemctl start auditd
sudo systemctl enable auditd

配置 auditd 规则

编辑 /etc/audit/rules.d/audit.rules 文件,添加以下规则:

# 记录所有登录事件
-w /var/log/secure -p wa -k auth

# 记录用户执行的命令
-a always,exit -F arch=b64 -S execve -k exec_commands
-a always,exit -F arch=b32 -S execve -k exec_commands

# 记录重要文件的访问,如/etc/passwd
-w /etc/passwd -p rwa -k passwd_changes

# 记录所有使用sudo的命令
-w /var/log/sudo.log -p wa -k sudo_commands

重启 auditd 以应用新规则

sudo systemctl restart auditd

2. 配置 sudo 日志记录

确保 sudo 的日志记录到 /var/log/sudo.log

编辑 /etc/sudoers 文件,确保包含以下行:

Defaults        logfile="/var/log/sudo.log"

3. 配置 rsyslog 以集中日志

安装 rsyslog(如果还没有安装)

sudo yum install rsyslog -y
sudo systemctl start rsyslog
sudo systemctl enable rsyslog

配置 rsyslog 将审计日志发送到远程服务器

编辑 /etc/rsyslog.conf 文件,添加以下行来发送日志到远程日志服务器(假设远程日志服务器IP为 192.168.1.100):

# Load the necessary modules
module(load="imfile")

# Define input file for audit log
input(type="imfile"
      File="/var/log/audit/audit.log"
      Tag="audit"
      Severity="info"
      Facility="local6")

# Send logs to remote server
local6.* @@192.168.1.100:514

重启 rsyslog 以应用新配置

sudo systemctl restart rsyslog

4. 解析和分析日志

你可以使用 ausearchaureport 命令来分析 auditd 日志。这里是一个自动化的示例脚本,用于解析和记录关键信息:

#!/bin/bash

OUTPUT_FILE="/var/log/parsed_audit_log.txt"

# 获取登录事件
ausearch -k auth -i > $OUTPUT_FILE

# 获取执行的命令
ausearch -k exec_commands -i >> $OUTPUT_FILE

# 获取访问的文件
ausearch -k passwd_changes -i >> $OUTPUT_FILE

# 获取sudo命令
ausearch -k sudo_commands -i >> $OUTPUT_FILE

echo "日志已解析并保存到 $OUTPUT_FILE"

保存为 parse_audit_log.sh 并设置为可执行:

chmod +x parse_audit_log.sh

运行脚本:

./parse_audit_log.sh

5. 使用安全措施

限制日志文件访问权限

确保只有授权用户可以读取审计日志和其他重要日志文件:

sudo chown root:root /var/log/audit/audit.log
sudo chmod 600 /var/log/audit/audit.log
sudo chown root:root /var/log/parsed_audit_log.txt
sudo chmod 600 /var/log/parsed_audit_log.txt

配置日志轮转

使用 logrotate 来管理日志文件,避免日志文件过大:

编辑 /etc/logrotate.d/audit 文件,添加以下内容:

/var/log/audit/audit.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    create 0600 root root
    postrotate
        /sbin/service auditd reload > /dev/null 2>/dev/null || true
    endscript
}

通过这种方法,你可以在CentOS上更安全地记录和管理用户的IP、时间、角色、访问的文件和操作的命令,同时确保日志的安全性和完整性。