Linux审计101

任何人谁是关心他们的Linux服务器的安全性,稳定性,和正常运作需要审核他们的系统。审计可能包括从伐木简单的bash命令如下复杂的系统进程东西。Linux审核可以是一个复杂的过程,但在这里,你可以使用,使任务更简单一些基本的工具和技术。

首先,让我们讨论一些简单的方法,让您了解用户在做哪些事情,而这些事情还没有达到审计的级别。例如,您可以使用Bash的内置命令检查shell命令历史记录历史。它显示当前用户执行的最后命令。要查看日期和处决的时间,用命令重新配置历史的设置出口HISTTIMEFORMAT = '%F%T'

历史命令仅对当前用户起作用。要查看其他用户的活动,如果您有权限,请在他们的主目录中读取名为.bash_history的隐藏文件。但是,需要注意的是:Bash历史记录可能不完整,从而使记录变得毫无意义。如果你看到了./myscript.sh,所有你知道的是,用户执行的脚本;你分不清什么是该脚本或它的所作所为,除非当然剧本仍然可用,并保持不变。

看到的是谁是当前登录的以及每个用户在做什么,使用命令在/ usr / bin中/ W,它提供了完整的信息。

许多服务,包括一些流行的数据库,都提供用于简单审计的日志。为MySQL用户的主目录中有一个名为.mysql_history的隐藏文件,它记录了用户在MySQL控制台中的所有操作。类似的文件PostgreSQL被称为.psql_history。

历史日志经常包含密码或其它敏感数据。举个例子,命令他们可能在创建MySQL或PostgreSQL用户展示。因此,确保历史日志文件只能由每个用户读取(当然书面);他们应该设置为600 CHMOD权限标志如果您更关心的是安全性比审​​核,可以完全删除这些历史文件,然后创建一个软链接到/ dev / null的在自己的位置。例如,对于MySQL和运行命令LN-S的/ dev / null的〜/ .mysql_history

这些基本的做法仅仅是一个开始。他们接触的东西用户只做表面会发生什么,在系统上,这是微不足道的攻击者删除日志显示他的踪迹。因此,你需要一个先进的审计解决方案,不仅揭示了恶意活动也存储在一个安全的,最好是偏远的地方该信息。

高级Linux审计

Linux审计系统是Linux内核实现可用CentOS的和其他分配,使深入和先进的审计。它工作在内核级别,它可以监视系统上的每个流程和活动。它使用auditd守护进程记录其发现。

在大多数Linux发行进程auditd预装,并开始与系统自动停止。在我们对文章中介绍,根据其审计规则它记录信息,且还传达了SELinux的消息Linux服务器硬化

Auditd的配置由不同目录中的几个文件控制。守护进程的配置文件是/etc/audit/auditd.包含审计规则之外的所有设置。当您还在研究审计时,保留默认值。重要的设置包括max_log_file(默认为6),日志文件的最大大小(以兆字节为单位)。一旦日志文件达到此限制,将执行设置中指定的操作max_log_file_action(默认旋转)发生。那个设定num_logs(默认为5)指定的日志文件的数量,从而确定多个日志文件的方式保持。

rules文件/etc/audit .rules包含审计规则,这些规则控制应该审计和记录哪些事件。您可以在此文件中指定三种类型的选项:控制、文件系统和系统调用。

控制选项来管理系统,而不是审计规则。例如,audit.rules文件应该总是以一个指令,任何现有的进程auditd规则被删除启动(-D)。另一个有用的控制选项-e 2,这使得配置不变的,需要重新启动服务器的新更改生效。

涉及到的文件和目录递归,每个规则看起来像这样的文件系统的规则:

-w 路径到文件 -p 许可 -k 关键字

所有文件系统规则都以-w,它代表的手表。权限是读取动作(r),写(w),执行(x),和/或改变属性(一个)文件的。关键字是您选择连接到一个或多个auditd规则的直观选择。同一个关键字可以用于多个规则。

示例应该有助于说明文件系统规则是如何工作的。下面的规则指示auditd监视文件/etc/shadow (Linux密码文件),以便读取、写入或修改它的属性:

-w / etc / shadow的-p RWA -k shadow_watch

当规则被触发,进程auditd写入日志条目其日志文件/var/log/audit/audit.log。

如果您对audit.rules任何更改文件,则必须重新启动(重装)auditd守护进程与命令服务进程auditd重启。如果你输入上面的规则,你可以通过重新启动守护程序,然后尝试读取/ etc / shadow中对其进行测试。接下来,使用搜索当前autitd日志ausearch与有关规则关键字的命令:ausearch -k shadow_watch -i。结果应该是相似的:

类型=路径味精=审计(11/18/2012 16:24:19.963:61):项目= 0的名字= http://www.openlogic.com/etc/shadow inode = 163882 dev = fd: 00模式=文件,000根rdev ouid =根ogid = = 00:00 obj = system_u: object_r: shadow_t: s0类型=慢性消耗病味精=审计(11/18/2012 16:24:19.963:61):慢性消耗病= http://www.openlogic.com/root type =系统调用味精=审计(11/18/2012 16:24:19.963:61):arch=i386 syscall=打开成功=不退出=-13(权限被拒绝)a0=bfde58e9 a1=8000 a2=0 a3=1个项目=1 ppid=2148 pid=2149 auid=根uid=anatoli gid=anatoli euid=anatoli suid=anatoli egid=anatoli sgid=anatoli fsgid=anatoli sgid=anatoli sgid=anatoli fsgid=anatoli sgid=anatoli sgid=anatoli sgid=anatoli sgid=anatoli sgid=anatoli sgid=anatoli sgid=anatoli sgid=anatoli sgid=anatoli sgid=anatoli sgid=anatoli sgid=anatoli sgid=anatoli sgid=anatoli subj= 1 comm=cat exe=http://www.openlogic.com/bin/cat subj= unconfined_r:unconfined_t:s0-s0:c0c1023关键= shadow_watch

ausearch参数-一世告诉命令解释数字;也就是说,503的uid,例如,被翻译成“阿纳托利。”上述日志摘要示出了用户已经阿纳托利试图读取使用可执行文件/ etc /阴影(名称)/bin/cat(可执行程序)。日志显示成功=无时,尝试不成功,退出代码为-13,这意味着被拒绝许可。

ausearch工具可让您筛选结果。要查看所有不成功的尝试,使用-sv没有,其中SV代表成功的价值。与阴影关键字的完整的命令是ausearch -k shadow_watch -sv没有。有关返回值和ausearch的更多信息,请通过运行命令来检查它的手册页男人ausearch

第三种类型的选项,系统调用(系统调用),提供了一个应用程序和Linux内核之间的接口。这些进程auditd规则作用于指定的接口来检测和记录事件。系统调用进程auditd规则具有以下结构:

——< em > < / em >, < em >过滤器< / em > s < em >系统调用< / em > - f字段= < em >值< / em > < / em > - k < em >关键字

首先-一个代表追加 - 也就是追加在规则集结束的规则。您还可以使用-一个将其放在列表的顶部,或-d删除的规则。

可能什么时候总是决不,这意味着总是或从不创建一个事件日志。

对于第三个参数,过滤,两个值经常使用:出口用户。的出口值的装置,以在一个系统调用退出动作,当完成的操作。的用户filter用于用户空间事件,可以进一步筛选为uid,auid,GIDPID

接下来的参数是-S后面是系统调用名称。这里有几百个系统呼叫——想要看到所有的系统呼叫,请去系统调用手册页-通常不止一个可以得到相似的结果。例如,如果想查看某个文件或目录是否已删除,可以使用取消链接,unlinkat,改名,或renameat

之前的最后一个参数-k为关键字-F表示微调过滤器字段。如果你回到ausearch -k shadow_watch因此,您可以看到可用于微调的规则,因此结果众多领域。样本微调规则如下所示:

-a总是,退出-S unlink -S unlinkat -S rename -S renameat -F auid>=500 -F auid!= 4294967295 - k删除

该规则涵盖了系统调用,可能会导致文件消失。这两个微调规则(-F)状态,为了规则被绊倒的用户的ID应高于500(普通用户),但应该是不同的,从4294967295,这是auditd调用系统ID的表示。有关微调领域的进一步信息,请检查audit.rules手册页。

为了让您更快地开始使用auditd规则,CentOS 6在文件/usr/share/doc/audit-2.2/stig.rules中提供了一些示例规则。只使用它们而不进行任何调整就为审计提供了坚实的基础。

Auditd测井解释

一旦你设置你要跟踪的事件,您可以通过在/var/log/audit/audit.log解释auditd调用的日志文件做实际的审计。该文件包含由下式给出相同的信息ausearch但在更多的用户不友好的格式。有一个问题,你可能会遇到的,如果你决定直接读取日志文件,是时间以Unix时间戳格式,这意味着你必须时间戳为可读的日期和时间转换,以判断何时发生事件给出。

许多工具可以更容易阅读和分析进程auditd的日志信息。该aureport工具,例如,可以生成从进程auditd日志文件报告。刚刚运行aureport为您提供了一个易于理解的总结报告。它包括了所有重要的审计事件组计数器,如更改帐户,组或角色的数量。详细的报告也可用,并且它们可以通过式(文件系统或系统调用),字段和时间进行过滤。这里有一些有用的aureport选项:

  • ——身份验证- 节目授权尝试。该aureport命令可以与被进一步扩展--failed参数只显示与失败的尝试- 开始限制报告的时间框架。因此,看到昨天使用命令登录失败aureport --auth --failed --start昨天
  • ——关键- 在进程auditd规则定义的关键字列表事件
  • ——文件- 显示指定的文件和目录事件
  • ——系统调用- 已配置的进程auditd规则进行登录系统调用的事件报告

有关这些报告的详细资料及aureport的详细资料,请参阅其手册页(男人aureport)。

审计硬化

进程auditd报告必须提供真实,可靠的信息。要做到这一点的审核周期必须确保安全和硬化。审计硬化强制执行,以确保可靠性,完整性和审计过程的安全最佳实践。

对于硬化的第一步骤是确保auditd调用的配置是不可变的,通过使用控制选项-e 2。接下来,确保日志存储在一个安全的中央位置。最好的地方是一个专门为接受远程syslog事件服务器。

一个名为audispd (auditd的dispatcher)的实用程序可以帮助完成这个任务,以及它的一个插件audisp-remote。audisk -remote允许将事件发送到远程syslog服务器。它的配置可以在/etc/ audisk / audisk -remote.conf文件中找到。下面是一个示例配置,指定远程rsyslog服务器10.0.0.1监听端口TCP 514:

remote_server的= 10.0.0.1端口= 514运输= TCP

有活动记录,并安全地存储到远程位置有助于提供安心。当然,也不能保证远程服务器不能被破坏或损害,但这样做增加了一步更倾向于更好的系统管理和安全性。这就是为什么可靠的远程日志记录是金融和政府环境的要求。

Linux审计可以像读取简单的历史日志文件一样简单,但如果您决定认真对待它,那么它也可能是一个真正的挑战。要进行可靠的审计,可以使用强大的Linux内核选项和补充服务auditd和audispd。

加入网络世界社区有个足球雷竞技appFacebook的LinkedIn对那些顶级心态的话题发表评论。

版权所有©2012Raybet2

工资调查:结果在