问题背景
新接手一项目,需要对日志清理文件进行修改。开开心心的修改完成之后脚本正常运行,再确认发现脚本内容已经回滚。本以为是被人误修改于是查询/var/log/secure
无果。再次修改后问题复现
执行文件监听
安装audit
yum -y install audit auditd-libs
启动文件监听(临时规则)
auditctl -w /shell/clean_pushd_logs.sh -p rwxa -k clean_log
- 指令解释:
#语法格式:auditctl -w path -p permission -k key_name
# path为需要审计的文件或目录
# permission可以是r,w,x,a(文件或目录的属性发生变化)
# Key_name为可选项,方便识别哪些规则生成特定的日志项
auditctl -w /etc/passwd -p wa -k passwd_change
//设置规则所有对passwd文件的写、属性修改操作都会被记录审计日志
如果需要创建永久审计规则,则需要修改规则配置文件:
vim /etc/audit/rules.d/audit.rules
-w path -p permission -k key_name
查看分析日志
ausearch -k clean_log
ausearch -f /shell/clean_pushd_logs.sh
ausearch -k clean_log -i // 交互式访问
----
time->Fri Apr 17 19:48:20 2020
type=PATH msg=audit(1587124100.716:4226668): item=0 name="/shell/clean_pushd_logs.sh" inode=212305 dev=fd:02 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL
type=CWD msg=audit(1587124100.716:4226668): cwd="/root"
type=SYSCALL msg=audit(1587124100.716:4226668): arch=c000003e syscall=2 success=yes exit=74 a0=4baf830 a1=0 a2=1b6 a3=0 items=1 ppid=30625 pid=30745 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=360316 comm="puppet" exe="/usr/bin/ruby" key="clean_log"
----
内容分析
# type为类型
# msg为(time_stamp:ID),时间是date +%s(1970-1-1至今的秒数)
# arch=c000003e,代表x86_64(16进制)
# success=yes/no,事件是否成功
# a0-a3是程序调用时前4个参数,16进制编码了
# ppid父进程ID,如bash,pid进程ID,如cat命令
# auid是审核用户的id,su - test, 依然可以追踪su前的账户
# uid,gid用户与组
# tty:从哪个终端执行的命令
# comm="puppet" 用户在命令行执行的指令
# exe="/usr/bin/ruby" 实际程序的路径
# key="sshd_config" 管理员定义的策略关键字key
# type=CWD 用来记录当前工作目录
# cwd="/root"
# type=SYSCALL 系统调用
# ouid(owner's user id) 对象所有者id
# guid(owner's groupid) 对象所有者id
退出监听
auditctl -W /shell/clean_pushd_logs.sh
其他指令
- 查看当前系统下规则
auditctl -l