LINUX安全体系分析与编程.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《LINUX安全体系分析与编程.doc》由会员分享,可在线阅读,更多相关《LINUX安全体系分析与编程.doc(108页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流LINUX安全体系分析与编程.精品文档.Linux 安全体系分析与编程2.2 审计系统2.2 审计系统Linux提供了用来记录系统安全信息的审计系统,审计系统分为用户空间和内核空间审计系统,用户空间审计系统用来设置规则和审计系统状态、将内核审计系统传来的审计消息写入log文件。内核审计系统用于产生和过滤内核的各种审计消息。本节重点分析内核审计系统产生和过滤审计消息的机制。2.2.1 审计系统构架审计系统提供了一种记录系统安全信息的方法,为系统管理员在用户违反系统安全法则时提供及时的警告信息。审计系统的审计信息包括:可被审计的事件名称、事件状态
2、(成功或失败)和安全信息等。审计系统可以将记录系统内部发生的事件的信息根据用户的需求,提供不同的报表功能,从而实现对系统信息的追踪、审查、统计和报告等功能。Linux审计系统子系统之间通信如图2-3所示。应用程序auditctl用来设置审计消息过滤规则、查询内核审计系统状态等,它通过netlink机制与内核审计系统的socket线程进行双向通信。内核其他线程的审计信息通过内核审计API写入套接字缓冲区队列audit_skb_queue中,内核线程kauditd通过netlink机制将审计消息定向发送给用户空间的审计后台auditd的主线程,auditd主线程再通过事件队列将审计消息传给审计后台
3、的写log文件线程,由写log文件线程将审计消息写入log文件。另一方面,审计后台还通过一个与套接字绑定的管道将审计消息发送给dispatcher应用程序。2.2.2 用户空间审计系统应用程序在用户空间,审计系统由auditd、audispd、auditctl、autrace、ausearch和aureport等应用程序组成。审计后台auditd应用程序通过netlink机制从内核中接收审计消息,然后,通过一个工作线程将审计消息写入到审计日志文件中,其中,还有一部分消息通过消息分发后台进程dispatcher调用syslog写入日志系统。下面分别说明这些应用程序的功能。1审计后台auditd在
4、用户空间,审计系统通过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审计系统
5、的用户空间部件,它负责将审计记录写入到硬盘中。ausearch或aureport工具用来查看写在文件中的审计记录,auditctl工具用来设置审计规则。系统启动时,auditctl读取/etc/audit.rules中的规则,审计后台可以通过auditd.conf文件定制配置。运行auditd后台的命令如下:auditd -f 其中,选项-f表示让auditctl在前台运行,以方便调试,消息可以直接输出到stderr,而不是输出到log系统。用于配置auditd后台的文件说明如下:/etc/auditd.conf用于auditd后台的配置文件。/etc/audit.rules启动时装载的审计规
6、则。2auditctl工具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系统调用a
7、uditctl -a exit,always -S open -F success!=0设置规则和显示规则的命令样例列出如下:-$ auditctl -a entry,always -S all -F pid=1005-$ auditctl -lLIST_RULES: entry,always pid=1005 (0x3ed) syscall=all工具auditctl的选项说明如表2-1所示。表2-1 工具auditctl的选项说明选 项 名选项的值说 明-b 设置内核允许的缓冲区数,默认值为64-e 0|1关闭或启动内核审计系统-f 0.2设置失败标识0=silent 1=printk 2
8、=panic,默认值为1。设置内核如何处理临界错误,如:backlog限制超出、内存错误等-h 帮助信息-i当从文件中读取规则时忽略错误-l列出所有的规则,每行一条规则-k 设置审计规则上的过滤关键词key,key是不超过32字节长的任意字符串,它能唯一鉴别由watch产生的审计记录-m text仅由root用户发送用户空间消息到审计系统。为文件系统watch设置许可过滤器。r=read,w=write,x=execute,a=attribute change。这些许可不是文件的标准许可,而是系统调用使用的,read和write系统调用将忽略这种设置,否则它们将淹没log-r 设置每秒传输的消
9、息数限制,默认值为0,表示无限制-R 从file文件中读取规则-s报告状态-a 追加规则到l链表,a表示规则的动作有效链表名ltask追加规则到每个任务链表AUDIT_FILTER_TASK 。域应用任务创建时的uid、gid等entry追加规则到系统调用进入链表AUDIT_FILTER_ENTRY,用于决定进入到系统调用时是否创建审计事件exit追加规则到系统调用退出链表AUDIT_FILTER_EXIT 。用于决定退出系统调用时是否创建审计事件user追加规则到用户消息过滤链表AUDIT_FILTER_USER ,内核在转播用户空间产生的事件到审计后台之前,用这个链表过滤这些事件。仅域为u
10、id、auid、gid和pid时有效exclude用于过滤不想看到的事件,对应内核消息过滤链表AUDIT_FILTER_TYPE 规则的有效动作anever不产生审计记录always分配一个审计上下文,在系统调用退出时填充-A 添加规则到l链表头,动作为a-d 从带有a动作的l链表删除规则-D删除所有的规则和watch-S 系统调用名或号|all如果程序使用指定的系统调用,则它启动一项审计记录。如果给出域规则而没有指定系统调用,它将默认为所有系统调用续表 选 项 名选项的值说 明-F n=v | n!=v | nv | n=v创建一个规则域:名字、操作、值。可以单个命令行传递最多64个域。每个
11、域必须启动一个审计记录。可支持6种操作:等于、不等于、小于、大于、小于或等于和大于或等于有效的规则域na0, a1, a2, a3对应系统调用的前4个参数。不支持字符串参数。常用于复合的套接字或IPC操作arch系统调用的CPU构架auidaudit uid,是用户注册的最初的IDb32用于32位系统调用表的archb64用于64位系统调用表的archdevmajor主设备号(Device Major Number)devminor次设备号(Device Minor Number)egid有效组IDeuid有效用户IDexit从一个系统调用退出时的值fsgid文件系统组IDgid组IDinod
12、e节点号key设置过滤关键字,与-k选项一样msgtype用于匹配消息类型编号,仅用于排除(exclude)过滤链表obj_user资源的SELinux用户obj_role资源的SELinux角色obj_type资源的SELinux类型obj_lev_low资源的SELinux低级别obj_lev_high资源的SELinux高级别path监视的文件的全路径,仅用于exit链表pers操作系统(OS)个人特征序列号pid进程IDppid父进程IDsubj_user程序的SELinux用户subj_role程序的SELinux角色subj_type程序的SELinux类型subj_sen程序的S
13、ELinux敏感度(Sensitivity)subj_clr程序的SELinux的间隔(Clearance)sgid设置组IDsuccess如果退出值大于或等于0,这个值为true/yes,否则为false/no。当写规则时,用1表示true/yes,用0表示false/nosuid设置用户ID(Set User ID)uid用户ID(User ID)-w 为文件系统对象插入一个watch(监视)。不支持匹配符-W 移去文件系统对象path上的watch3autraceautrace是一个程序,它将添加审计规则、类似于strace跟踪一个进程,审计信息的结果将记录在审计log文件中。在目标程序
14、执行的前后,它都将删除审计规则。autrace用于模拟strace工具。语法列出如下:autrace program 一个使用sutrace程序的典型样例列出如下:-$ auditd -$ autrace /bin/ls /tmpWaiting to execute: /bin/lsgconfd-rootvirtual-root.SReCx6Cleaning up.No rulesTrace complete. You can locate the records with ausearch -i -p 5722-$ vi /var/log/audit/audit.logtype=DAEMON
15、_START msg=audit(1174214581.293:1962) auditd start, ver=1.2.8, format=raw, auid=4294967295 pid=5477 res=success, auditd pid=54type=CONFIG_CHANGE msg=audit(1174214581.514:38): audit_enabled=1 old=1 by auid=4294967295 subj=user_u:system_r:unconfined_t:s04ausearch工具ausearch用于查询审计后台的日志,它能基于不同搜索规则的事件查询审计
16、后台日志。每个系统调用进入内核空间运行时有个唯一的事件ID,系统调用在进入内核后的运行过程的审计事件共享这个ID。内核可以添加各种审计记录,例如:系统调用“open”的审计事件将引起内核发送一个带有文件名的PATH记录。ausearch的语法列出如下:ausearch options 其中,options表示选项值,如:-a 、-f 等。基于用户ID的搜索样例列出如下:-$ ausearch -ui 4294967295time-Sun Mar 18 18:43:01 2007type=DAEMON_START msg=audit(1174214581.293:1962) auditd sta
17、rt, ver=1.2.8, format=raw, auid=4294967295 pid=5477 res=success, auditd pid=54time-Sun Mar 18 18:43:01 2007type=CONFIG_CHANGE msg=audit(1174214581.514:38): audit_enabled=1 old=1 by auid=4294967295 subj=user_u: system_r:unconfined_t:s05aureport工具aureport用于产生审计后台日志的总结报告,语法列出如下:aureport options 其中,opti
18、ons表示选项,如:-a报告所有的AVC(Access Vector Cache)消息;-c报告配置改变的消息;-e报告事件消息。工具aureport运行后结果列出如下:-$ aureportSummary ReportRange of time: 03/18/2007 18:43:01.293 - 03/18/2007 18:43:01.514Number of changes in configuration: 1Number of changes to accounts or groups: 0Number of logins: 0Number of failed logins: 0Nu
19、mber of users: 0Number of terminals: 0Number of host names: 0Number of executables: 0Number of files: 0Number of avc denials: 0Number of failed syscalls: 0Number of anomaly events: 0Number of responses to anomaly events: 0Number of process IDs: 1Number of events: 26audispdaudispd是消息分发的后台进程,用于将auditd
20、后台发过来的一些消息通过syslog写入日志系统。2.2.3 内核审计缓冲区管理机制内核审计系统将审计消息写入审计用的缓冲区(称为审计缓冲区)。由于审计信息是通过netlink机制发往用户空间后台进程的,因此,审计缓冲区包括了结构sk_buff描述的套接字缓冲区,套接字缓冲区用来存储用于发送的审计消息记录。审计缓冲区的结构定义如下(在linux26/kernle/audit.c中):struct audit_buffer struct list_head list; struct sk_buff *skb; /*格式化的套接字缓冲区,准备用于发送审计消息 */ /*每个进程的审计上下文,包括进
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LINUX 安全 体系 分析 编程
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内