Linux管理员需要了解的SELinux命令

日期: 2014-02-16 作者:Sander van Vugt翻译:唐琼瑶 来源:TechTarget中国 英文

SELinux经常给Linux管理员带来麻烦。通常,管理员的解决方法是放弃并关闭服务器上的SELinux。其实,不必完全关闭,SELinux审计信息不是那么难以理解。 有两种方法解决并增强Linux的安全:可基于/var/log/messages里的解释信息,以及/var/log/audit/audit.log里的审计信息来进行。

解释信息的目的是帮助管理员明白/var/log/audit/audit.log里的一些困难的信息。 但在/var/log/messages里的解释信息很容易理解,很多系统管理员在这一步就停止,他们冒着错失审计日志里重要信息的风险。 /var/log/messages的……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

SELinux经常给Linux管理员带来麻烦。通常,管理员的解决方法是放弃并关闭服务器上的SELinux。其实,不必完全关闭,SELinux审计信息不是那么难以理解。

有两种方法解决并增强Linux的安全:可基于/var/log/messages里的解释信息,以及/var/log/audit/audit.log里的审计信息来进行。解释信息的目的是帮助管理员明白/var/log/audit/audit.log里的一些困难的信息。

但在/var/log/messages里的解释信息很容易理解,很多系统管理员在这一步就停止,他们冒着错失审计日志里重要信息的风险。

/var/log/messages的缺点在于审计日志的解释。有时没有适当的解释,使得与/var/log/messages里的sealert信息一起工作很困难。通常,也没必要这么做,因为/var/log/audit/audit.log里的信息并不是难以理解。

例如,考虑到来自/var/log/audit/audit.log的行,如果想在该日志文件里查找SELinux信息,查看包含AVC信息类型的行:

Type=AVC msg=audit(1367976112.939:17): avc: denied { getattr } for pid=2642 comm="httpd" path="/web/index.html" dev=dm-0 ino=533696 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:default_t:s0 tclass=file

该行中首先隐含的是一个{ getattr }系统呼叫已被pid 2642否决,它是用于httpd进程的,意味着你的Web服务器尝试获取某物的属性。

其次,揭示了尝试访问的是什么:文件/web/index.html。其位于设备dm-0上,节点编码是533969,因此Web服务器已经尝试读index.html文件,但没有取得适当的权限。

接下来,审计日志行显示导致此次否决的被容。过程的源内容设置成unconfined_u、system_r与httpd_t。文件的目标内容尝试访问的设置是unconfined_u、object_r与default_t。

在分析SELinux否决信息的内容时,通常是最后一部分才有趣。否决行可理解成:源内容的进程类型httpd_t尝试访问内容类型为default_t的文件。这是禁止的。

如果你明白了SELinux是如何工作的,就知道为何访问会被禁止。SELinux设计用于允许进程只访问所需的文件。意思就是只能访问标志为httpd_t的文件,如httpd_sys_content_t。但你不知道在目标文件或目录上使用何种内容类型时,检查主页查看需要配置的服务,或者在默认配置文件中使用ls -Z。

发现错误后开启对文件的访问。有两种方式:在目标文件上设置所期待的内容标签,使用semanage与restorecon,或者使用audit2allow创建一个SELinux模块。无论何种情形,确认情况后选择合适的解决方案。

通常,最简单的修复是使用semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?"设置内容标签。该命令对策略设置正确的内容标签,之后必须使用restorecon -R -v /web命令进行启用。

另一种方式是使用audit2allow修复问题。该命令基本是将audit.log file作为输入文件读取,创建SELinux模块,允许之前被否决的行为。这很方便但却危险,很容易让策略变得太过宽松。

在使用audit2allow之前,隔离你想允许的日志行。复制到临时审计文件,如audit_temp.log。接着,使用audit2allow -I audit_temp.log -M mymodule用name mymodule创建SELinux模块。一旦加载该模块,就将允许之前被否决的行为。要允许否决的行为,将模块输入SELinux策略并使用semodule -I mymodule。

永远首先使用semanage,它可以降低偶尔允许不该允许的行为的风险。

相关推荐