谁动了我的代码

问题背景

新接手一项目,需要对日志清理文件进行修改。开开心心的修改完成之后脚本正常运行,再确认发现脚本内容已经回滚。本以为是被人误修改于是查询/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

你可能感兴趣的:(谁动了我的代码)