- 1、本文档共118页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LINUX安全體系分析与编程
Linux 安全体系分析与编程
2.2 审计系统?2.2 ?审计系统
Linux提供了用来记录系统安全信息的审计系统,审计系统分为用户空间和内核空间审计系统,用户空间审计系统用来设置规则和审计系统状态、将内核审计系统传来的审计消息写入log文件。内核审计系统用于产生和过滤内核的各种审计消息。本节重点分析内核审计系统产生和过滤审计消息的机制。
2.2.1? 审计系统构架
审计系统提供了一种记录系统安全信息的方法,为系统管理员在用户违反系统安全法则时提供及时的警告信息。审计系统的审计信息包括:可被审计的事件名称、事件状态(成功或失败)和安全信息等。
审计系统可以将记录系统内部发生的事件的信息根据用户的需求,提供不同的报表功能,从而实现对系统信息的追踪、审查、统计和报告等功能。
Linux审计系统子系统之间通信如图2-3所示。应用程序auditctl用来设置审计消息过滤规则、查询内核审计系统状态等,它通过netlink机制与内核审计系统的socket线程进行双向通信。内核其他线程的审计信息通过内核审计API写入套接字缓冲区队列audit_skb_queue中,内核线程kauditd通过netlink机制将审计消息定向发送给用户空间的审计后台auditd的主线程,auditd主线程再通过事件队列将审计消息传给审计后台的写log文件线程,由写log文件线程将审计消息写入log文件。另一方面,审计后台还通过一个与套接字绑定的管道将审计消息发送给dispatcher应用程序。
2.2.2? 用户空间审计系统应用程序
在用户空间,审计系统由auditd、audispd、auditctl、autrace、ausearch和aureport等应用程序组成。
审计后台auditd应用程序通过netlink机制从内核中接收审计消息,然后,通过一个工作线程将审计消息写入到审计日志文件中,其中,还有一部分消息通过消息分发后台进程dispatcher调用syslog写入日志系统。
下面分别说明这些应用程序的功能。
1.审计后台auditd
在用户空间,审计系统通过auditd后台进程接收内核审计系统传送来的审计信息,将信息写入到/var/log/audit/audit.log 中,audit.log的路径可在/etc/auditd.conf 中指定。
?
图2-3? Linux审计系统子系统之间通信
当auditd没有运行时,内核将审计信息传送给 syslog,这些消息通常保存在/var/log/messages文件中,可以用dmesg命令查看。
如果要启用内核中的审计功能,必须在系统启动时将audit=1传递给内核。也可以在运行时,使用下列命令来启用内核审计功能:
auditctl -e 1
审计系统后台应用程序auditd是Linux审计系统的用户空间部件,它负责将审计记录写入到硬盘中。ausearch或aureport工具用来查看写在文件中的审计记录,auditctl工具用来设置审计规则。系统启动时,auditctl读取/etc/audit.rules中的规则,审计后台可以通过auditd.conf文件定制配置。
运行auditd后台的命令如下:
auditd [ -f ]
其中,选项-f表示让auditctl在前台运行,以方便调试,消息可以直接输出到stderr,而不是输出到log系统。
用于配置auditd后台的文件说明如下:
/etc/auditd.conf用于auditd后台的配置文件。
/etc/audit.rules启动时装载的审计规则。
2.auditctl
工具auditctl控制行为、得到状态、从内核审计系统增加或删除规则。命令格式如下:
auditctl [options]
工具auditctl的命令行选项(options)很多,例如:-e [0|1]表示停止或启动内核审计功能;-a表示将规则追加到链表;-S表示系统调用号或名字;-F表示规则域。
工具auditctl设置规则的样例如下:
//查看程序所有的系统调用
auditctl -a entry,always -S all -F pid=1005
//查看指定用户打开的文件
auditctl -a exit,always -S open -F auid=510
//查看不成功的open系统调用
auditctl -a exit,always -S open -F success!=0
设置规则和显示规则的命令样例列出如下:
^-^$ auditctl -a entry,always -S all -F pid=1005
^-^$ auditctl -l
LIST_RULES: entry,always pid=1005 (0x3ed) syscall=all
工具auditc
文档评论(0)