linux服务——auditd

审计(audit)是linux安全体系的重要组成部分,他是一种“被动”的防护体系。php

在内核里有内核审计模块,核外有核外的审计后台进程auditd。
应用程序给内核发送审计消息,内核的审计模块再把消息转发给用户空间的后台进程auditd处理。html

大概就是这么回事,我不是太深刻,若是须要更多的内容,本身去查阅相关资料。若是没有好的资料,我推荐一本,《linux安全体系分析与编程》做者倪继利 。linux

审计说穿了就是把和系统安全有关的事件记录下来:谁谁谁在何时作了什么事,结果是啥。编程

审计的消息来源主要有两方面:小程序

1.内核(我不太肯定)、应用程序(audit-libs-devel包里面有编程接口)产生的。安全

2.系统管理员添加的审计规则,匹配规则的事件都将被记录下来。函数

规则添加:
学习

1 添加文件监视:
该规则能监视文件被读、写、执行、修改文件属性的操做,并记录
auditctl -w /etc/passwd -p rwax
上述命令记录/etc/passwd 被读、写、执行修改属性的操做
ui

2 系统调用入口监视(entry链表)
该规则在进入系统调用的时候触发,记录此时的执行上下文
auditctl -a entry,always -F UID=root -S mkdir
上述命令记录uid为root的用户调用mkdir系统调用的状况
url

3 系统调用出口(exit链表)
同系统调用入口规则,不一样的是在退出系统调用的时候被触发

4 任务规则(task表)
该规则在调用fork() 或者clone()产生新进程的时候触发,所以,该规则适用的“域”仅仅是此时可见的,例如uid gid pid 等等。(参见man auditctl和这里
auditctl -a task,always -F uid=root

5 可信应用程序规则(user表)
按照各类资料上的说法,这里的user表是用来过滤消息的,内核传递给审计后台进程以前先查询这个表。
可是,无论怎么设置规则都达不到这个效果。以下:
auditctl -a user,always -F uid=root
添加上述规则,发现root的行为被记录。这样添加规则仍是被记录:
auditctl -a user,never -F uid=root
后来发现个人CentOS里面system-config-audit上面,该链表被命名为“可信应用程序”。受此启发写了个小程序,向审计内核里写消息,发现这样的消息被过滤了。
这点须要进一步验证。

6 过滤规则(exclude表)
这个表是用来过滤消息的,也就是不想看到的消息能够在这里写规则进行过滤。
例如:不想看到用户登录类型的消息,能够以下添加规则:
auditctl -a exclude,always -F msgtype=USER_LOGIN
这里过滤是以“消息类型”为对象的。

 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

下面的图片说明了Linux Audit的各个组成之间是如何

相互做用的:

linux的审计功能(audit)(转) - llei - llei的学习笔记linux的审计功能(audit)(转) - llei - llei的学习笔记

图片上实线表明数据流,虚线表明组件关之间的控制系

auditd

Audit 守护进程负负责把内核产生的信息写入到硬盘上,这些信息是由应用程序和系统活动所触发产生的。Audit守护进程如何启动取决于它的配置文件,/etc /sysconfig/auditd。Audit系统函数的启动受文件/etc/audit/auditd.conf的控制。有关auditd更多的信息参照第三节:配置Audit守护进程。

auditctl

auditctl功能用来控制Audit系统,它控制着生成日志的各类变量,以及内核审计的各类接口,还有决定跟踪哪些事件的规则。关于auditctl的更多信息参照第四节:用auditctl控制Audit系统。

audit rules

在/etc/audit/audit.rules中包含了一连串auditctl命令,这些命令在audit系统被启用的时候被当即加载。更所关于审计规则的信息请参看第五节:给audit系统传递变量

aureport

aureport的功能是可以从审计日志里面提取并产生一个个性化的报告,这些日志报告很容易被脚本化,并能应用于各类应用程序之中,如去描述结果,更多信息参看第六节:理解审计日志和生成审计报告

ausearch

这个功能能让咱们从审计日志之中经过关键词或者是格式化录入日志中的其它特征变量查询咱们想要看到的信息。详细信息请参看第七节:用ausearch查询audit守护进程的的日志。

audispd

这是一个审计调度进程,它能够为将审计的信息转发给其它应用程序,而不是只能将审计日志写入硬盘上的审计日志文件之中。

autrace

这个功能更总相似于strace,跟踪某一个进程,并将跟踪的结果写入日志文件之中。更多详细信息请参看第八节:用autrace分析进程