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中国
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,它可以降低偶尔允许不该允许的行为的风险。
翻译
相关推荐
-
托管OpenStack私有云能够获得支持or单打独斗?
OpenStack私有云托管作为一种服务可以简化企业的部署和运营,并强调了云计算的优势,而非Linux的优化……
-
从零开始构建属于自己的Linux发行版
当你从头开始构建Linux,就可以充分和完整地了解Linux平台。Linux管理员在IT界内更神秘,因为他比其他任何IT专业人员都更了解计算机内部工作。
-
使用Red Hat或Debian包管理器简化Linux管理
Linux软件包管理使用的软件库,它提供了软件包的安装源。Red Hat和Debian的软件包管理器功能类似,但结构上的差异将影响Linux管理。
-
关于apt-get:非Linux管理员应该知道的那些事
Apt-get是广泛应用在Unix和Linux系统中的应用程序管理器,Windows和Linux管理员也可以受益于其功能。