美文网首页安全Linux技术
Linux安全增强模块SELinux实践

Linux安全增强模块SELinux实践

作者: 刘小白DOER | 来源:发表于2021-06-10 23:50 被阅读0次

    笔者在使用apache网络服务器时,从其他地方移动过来的网页置于/var/www/html下,但是网页无法访问,但是在目录下正常建立的其他网页就是正常的。百思不得其解,最近学习中看到SELinux,把问题找到了。

    Security Enhanced Linux(SELinux)是一个额外的系统安全层,主要目标是防止已遭泄露的系统服务访问用户数据,由美国国安局NSA开发。和windows的用户账户控制设置UAC有点像。

    标准的安全模型是用户/组/其他权限,这种用户和组的模型称为自主访问控制DAC。比如apache服务可以对/var/www/html根目录 进行访问,没有SELinux保护的apache可以对其他目录进行访问。SELinux提供另一层安全,基于对象并由更加复杂的规则控制,称为强制访问控制MAC。有SELinux保护的apache不可以对其他目录进行访问。

1、 SELinux context 

    SELinux context (上下文)是一种标签,没饿过进程、文件、端口都具有特别的标签。SELinux策略(Policy)是白名单原则,使用这些标签来确定某个进程能否访问某个文件、目录或端口。context有四种类型Mode:user、role、type(targeted使用这个)、sensitivity 。SELinux预设使用的策略Policy是targeted,其使用type类型的context来制订自己的规则。

    主体Subjects与目标Objects的安全上下文必须一致才能够顺利访问。所有文件和进程都具有安全环境 SELinux context。环境根据安全需要有几种元素,user:role:type:sensitivity:category  。可以通过ls -Z ,ps -Z 查看  。

    文件父目录的上下文决定该文件的初始上下文,父目录的上下文会分配给新建立文件,这适用于vim、cp、touch 等。如果文件早其他未知创建,且权限得以保留(mv或者cp -a),那么原始 SELinux context将不会改变。请参考下面的例子,从mycentos用户目录下mv的文件到root用户目录下,SELinux context将不会改变。

    更改文件的SELinux context有两个命令:chcon和restorecon 。chcon命令将文件的上下文改为该命令参数的上下文。restorecon,这个命令的作用就是把文件的安全上下文恢复成默认的安全上下文,是首选方法。 restorecon -v可以查看具体信息。

    semanage可以设置上下文策略。 semanage fcontext -l查看策略。具体使用方法如下,感觉使用较少就不再测试。

2、SELinux  mode

    enforcing:强制模式。违反 SELinux 规则的行为将被阻止并记录到日志中,默认开启。

    permissive:许可模式。违反 SELinux 规则的行为只会记录到日志中。一般为调试用。

    disabled:关闭 SELinux。

    SELinux 工作模式可以在 /etc/selinux/config 中设定。getenforce吗可以查看现在的模式。setenforce来设置模式。命令设置只是临时的,关机或者重启后就会失效,会返回默认的,也就是配置文件中指定的模式。

    第二种暂时改变是  SELinux 工作模式的方式是在启动时将参数传递给内核参数。enforcing=0既是许可模式,enforcing=1既是强制模式。 selinux=0时将禁用 。 selinux=1时将启用。

    在启动界面按下字母”e“来编辑选项。

    在内核参数后面添加enforcing=0,再按ctrl + x来启动。

    进入系统后,使用getenforce吗可以查看现在的模式,默认是强制模式1,修改后查看是允许模式0。这种启动时将参数传递给内核参数也是暂时的,重启后会变为默认值。

    第三种修改方式就是再配置文件/etc/selinux/config 中设定,修改后需要重启才能生效。

3、SELinux  bool

    SELinux  bool是更改策略的行为的开关,布尔值可以启用或者禁止的规则,有选择的调整策略。

    getsebool -a 可以获取所有的布尔值。

    更改布尔值的命令如下:

    setsebool:用于修改SELinux布尔值

    setsebool -P :用于修改SELinux策略并使修改永久生效

    semanage boolean -l :显示布尔值是否为永久值,并提供该布尔的简短描述

    semanage boolean -l -C:列出本地修改过的布尔值状态(与策略中默认不同的任何设置)

4、SELinux排故

    最常见的SELinux故障时不正确的文件上下文,再大多数情况下可以运行 restorecon来解决,另一个措施是调整布尔值。

    当发生被SELinux拒绝时,可从下面两个日志中查找错误。

    /var/log/audit.log   审核消息

    /var/log/messages  提供事件的UUID

     sealert工具(需要setroubleshoot-server软件包,可yum list setroubleshoot-server来验证)来协助分析问题。

    sealert -l <UUID>  生成指定时间的报告

     sealert -a<FILE>   文件中所有时间的报告

相关文章

网友评论

    本文标题:Linux安全增强模块SELinux实践

    本文链接:https://www.haomeiwen.com/subject/jvbpeltx.html