1 Centos7审计配置
通过auditd
,系统审核允许系统管理员监视其系统这样他们就可以检测到未经授权的数据访问或修改。
默认情况下,auditd
将审核SELinux AVC
拒绝、系统登录、帐户修改和身份验证事件。事件将记录到 /var/log/audit/audit.log
2 audit使用
2.1 配置文件
auditctl
: 即时控制审计守护进程的行为的工具,比如如添加规则等等
aureport
: 查看和生成审计报告的工具
ausearch
: 查找审计事件的工具
auditspd
: 转发事件通知给其他应用程序,而不是写入到审计日志文件中
autrace
: 一个用于跟踪进程的命令
- /etc/audit/auditd.conf
- /etc/audit/rules.d/audit.rules
- /etc/audit/audit.rules # 根据/etc/audit/rules.d/audit.rules自动生成
2.1.1 auditd.conf
1 | # 是否记录本地事件,如果设为no,只记录来自网络的事件 |
2.2 常用命令
1 | /*查看规则*/ |
1 | auditctl -w /data -p rwxa |
永久保存审计规则
1 | vi /etc/audit/rules.d/audit.rules |
3 配置开机启动
1 | systemctl enable auditd |
4 配置规则
规则类型可分为:
- 控制规则:控制audit系统的规则;
- 文件系统规则:也可以认为是文件监控,可以监控一个特定文件或者一个路径。
- 系统调用规则:可以记录特定程序的系统调用。
4.1 控制规则
-b
设置在内核中audit缓冲空间的最大值。
-f
这个选项来决定内核如何处理critical erros:0=silent 1=printk 2=panic
.默认值为1。
-e
设置使能标志,设置为0,为关闭了audit,设置为1,则开启audit;当设置为2时,表示锁定,一般在设置完其他规则后最后设置,防止其他人修改规则;任何修改规则的行为都会被拒绝,并且记录审计日志,只有当重启系统后,这个使能标志才可以被修改。
4.2 文件系统规则
1 | auditctl -w path -p permissions -k key_name |
-w
: 目录或者文件路径-p
: 描述文件系统监视将触发的权限访问类型,r=读取,w=写入,x=执行,a=属性更改。-k
: 设置审核规则的筛选关键字
4.3 系统调用规则
1 | auditctl -a [list,action|action,list] -S [Syscall name or number|all] -F field=value -k key_name |
-a
: action和list 明确一个事件被记录。action可以为always或者never,list明确出对应的匹配过滤,list可以为:task,exit,user,exclude,filesystem。-S
: system_call 明确出系统调用的名字,几个系统调用可以写在一个规则里,如-S xxx -S xxx。系统调用的名字可以在/usr/include/asm/unistd_64.h文件中找到。-F
: field=value 作为附加选项,修改规则以匹配特定架构、GroupID,ProcessID等的事件。具体有哪些字段,可以参考man linux https://linux.die.net/man/8/auditctl
5 配置实例
5.1 记录系统的日期和时间的修改
vim /etc/audit/rules.d/audit.rules
1 | -a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time-change |
5.2 记录用户和组的修改事件
1 | -w /etc/group -p wa -k identity |
5.3 记录网络环境修改时间
1 | -a always,exit -F arch=b64 -S sethostname -S setdomainname -k system-locale |
5.4 记录登录和登出事件
1 | -w /var/log/lastlog -p wa -k logins |
5.5 记录会话启动事件
1 | -w /var/run/utmp -p wa -k session |
文件/var/run/utmp
跟踪当前登录的所有用户。所有审计记录都将用标识符“session
”标记, 可以用who
命令读取
/var/log/wtmp
文件跟踪登录、注销、关机和重新启动事件。
文件/var/log/btmp
跟踪失败的登录尝试,可以通过输入命令 ‘/usr/bin/last-f /var/log/btmp’
读取。所有审核记录都将被标记为标识符“logins”
5.6 监视对文件权限、属性、所有权和组的更改
1 | -a always,exit -F arch=b64 -S chmod -S fchmod -S fchmodat -F auid>=1000 -F auid!=4294967295 -k perm_mod |
在所有情况下,审核记录将只为非系统用户id(auid>=1000
)并将忽略守护进程事件(auid=4294967295
)。
所有审计记录用标识符“perm_mod”标记
5.7 记录未授权文件访问尝试
1 | -a always,exit -F arch=b64 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access |
5.8 确保收集使用特权命令
监视特权程序(那些在执行时设置了setuid和/或setgid位的程序)以确定没有权限的用户是否正在运行这些命令。
通过下面命令
1 | find / -xdev \( -perm -4000 -o -perm -2000 \) -type f | awk |
得到记录
1 | -a always,exit -F path=/usr/bin/wall -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged |
5.9 收集成功挂载磁盘事件
1 | -a always,exit -F arch=b64 -S mount -F auid>=1000 -F auid!=4294967295 -k mounts |
在所有情况下,审核记录将只为非系统用户id(auid>=1000
)并将忽略守护进程事件(auid=4294967295
)。
所有审计记录用标识符“mount”和“mounts”标记
5.10 确保收集用户的文件删除事件
1 | -a always,exit -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete |
在所有情况下,审核记录将只为非系统用户id(auid>=1000
)并将忽略守护进程事件(auid=4294967295
)。
所有审计记录用标识符“delete”标记
5.11 确保收集对系统管理范围(sudoers)的更改
1 | -w /etc/sudoers -p wa -k scope |
5.12 监视sudo日志文件
如果系统已正确配置为禁用su命令并强制所有管理员必须先登录,然后使用sudo执行特权命令,
然后所有管理员命令将被记录到/var/log/sudo.log文件.
每当执行命令时,审核事件将被触发为/var/log/sudo.log文件将打开文件进行写入,并执行管理命令将写入日志。
1 | -w /var/log/sudo.log -p wa -k actions |
5.13 确保收集内核模块加载和卸载
1 | -w /sbin/insmod -p x -k modules |
5.14 确保审核配置是不可变的
审核规则不能使用auditctl修改。设置标志“-e2“强制将审核置于不可变模式。进行审核更改只能对系统重新启动。
1 | -e 2 |
6 参考
https://cloud.tencent.com/developer/article/1653503