SELinux详解

基本SElinux安全性概念

  • SELinux(Security-Enhanced Linux,安全增强型Linux),相当于内核插件,是可保护你系统安全的额外机制。在某种程度上,它可以被看作是与标准权限系统并行的权限系统。在常规模式中,以用户身份运行进程,并且系统上的文件和其他资源都设置了权限(控制哪些用户对哪些文件拥有哪些访问权,SElinux的另一个不同之处在于,若要访问文件,你必须具有普遍访问权限和SElinux访问权限。因此,即使以超级用户身份root运行进程,根据进程以及文件或资源的SElinux安全性上下文可能拒绝访问文件或资源限)标签。
  • 在无SElinux保护时,恶意人员可以尝试利用web服务器中的安全漏洞强行进入系统。如果成功,将会控制以用户apache身份运行的进程,这时再由一个本地安全漏洞就可能使攻击者获得超级用户的访问权限。

SElinux安全上下文访问规则

  • web服务器的http进程设置了SElinux上下文system_u:system_r:httpd_t 标签。该上下文的重要部分是第三个用冒号分隔的字段,SElinux类型:httpd_t。
  • 系统上的文件和资源也设置了 SElinux上下文标签 , 并且重要的部分是 SElinux类型。例如 ,/var/www/html 中的文件具有类型 httpd_sys_content_t 。 /tmp 和 /var/tmp 中的文件通常具有类型 tmp_t
  • Selinux 策略具有允许以 httpd_t 身份运行的进程访问标记为httpd_sys_content_t 的文件的规则。没有规则允许这些进程访问标记有 tmp_t 的文件 , 因此将拒绝这些访问 , 即使常规文件权限指出应该允许这些访问。
    /var/www/http的安全上下文:
    在这里插入图片描述
    我们在ftp服务默认的发布目录与/mnt下新建文件,再将/mnt下的文件移至发布目录下,通过访问可以看到,我们无法看到在/mnt下新建的文件,这是因为安全上下文不一致。
    在这里插入图片描述
    在这里插入图片描述
    注意:程序的安全上下文只能访问与他匹配的安全上下文,不匹配会被内核禁止,读取被拒绝。

SElinux模式

  • 强制模式enforcing:SElinux主动拒绝访问尝试读取类型上下文未tmp_t的web服务器。在强制模式中,SElinux既记录冲突,也强制执行规则。
  • 许可模式permissive:通常用于对问题进行故障排除。在许可模式下,即使没有明确规则,SElinux也允许所有交互,并且记录所有被拒绝的交互。此模式可以用于确定你是否有selinux问题,无需重新引导即可从强制模式转为许可模式,或者再从许可模式转回强制模式。
  • 禁用模式disabled

显示及更改SElinux的模式

显示:getenforce
更改:在非disabled的状态下:
setenforce 1 改为强制状态 enforcing
setenforce 0 改为警告状态 permissive
在这里插入图片描述

更改SElinux的开机状态

在配置文件vim /etc/sysconfig/selinux中修改:
SElinux=enforcing | permissive | disabled
修改后必须重启reboot,否则不生效。
在这里插入图片描述

更改安全上下文

准备工作: 在虚拟机中安装vsftpd和lftp,开启vsftpd服务,并将selinux开机启动的状态改为enforcing。

  • 临时更改安全上下文:chcon -t public_content_t file文件名
    1.新建目录/zhang,并在/zhang下新建文件。通过命令可以看到/zhang以及/zhang下包含的文件安全上下文为default_t。
    内核上安全上下文默认为default_t。
    在这里插入图片描述
    2.更改匿名用户的家目录为/zhang,并重启服务。vim /etc/vsftpd/vsftpd.conf
    在这里插入图片描述
    通过lftp,此时并不能看到家目录中包含的文件。
    在这里插入图片描述
    3.更改安全上下文chcon -t public_content_t /zhang -R //-R表示修改目录以及目录下所有文件的安全上下文,并查看修改后的安全上下文ls -Zd /zhang
    在这里插入图片描述
    可以访问的到了。
    在这里插入图片描述
    但是当我们重启服务后(将selinux状态从enforcing改为disabled再改为enforcing),安全上下文会恢复为默认的default_t,通过lftp也访问不到家目录中的内容了。
    在这里插入图片描述
  • 永久更改安全上下文:
    通过命令semanage fcontext -l | grep /var/ftp可以查看目录以及目录中文件的安全上下文。
    在这里插入图片描述
    更改命令:semanage fcontext -a -t public_content_t '/zhang(/ . *)?'
    在这里插入图片描述
    但此时我们通过命令ls -Zd /zhang可以看到更改后的安全上下文并没有生效,所以我们需要执行命令restorecon -FvvR /zhang让他生效。
    在这里插入图片描述
    通过lftp也可以访问到。
    在这里插入图片描述

selinux为强制状态下用户操作权限管理

管理SElinux的布尔值:
  • SELinux 布尔值是更改 SELinux 策略行为的开关。 SELinux 布尔值是可以启用或禁用的规则。安全管理员可以使 SELinux 布尔值来调整策略 , 以有选择地进行调整。
  • getsebool 用于显示布尔值 , setsebool 用于修改布尔值
    setsebool -P 修改 SELinux 策略 , 以永久保留修改。
    semanage boolean -l 将显示布尔值是否永久
  • 匿名用户上传和下载:
    我们以匿名用户上传和下载为例:
    1.首先修改配置文件,开启上传和下载服务,重启vsftpd服务:
    在这里插入图片描述
    2.修改默认发布目录权限,组:
    在这里插入图片描述
    3.开启服务对应的bool值:setsebool -P ftpd_anon_write on/1 开启对应的服务 getsebool -a | grep ftp 查看ftp服务的bool值
    在这里插入图片描述
    在这里插入图片描述
    4.更改默认发布目录的安全上下文,增加读写权限:chcon -t public_content_rw_t /var/ftp/pub
    在这里插入图片描述
    5.测试:在selinux为enforcing的状态下匿名用户可以很顺利的上传和下载文件了。
    在这里插入图片描述
  • 本地用户上传和下载,以student为例:
    1.同理,首先,在vsftpd配置文件中开启相应的服务,并重启vsftpd服务。
    在这里插入图片描述
    2.修改ftp相应服务的bool值:
    在这里插入图片描述
    3.测试:可以看到,student可上传可删除可下载可建目录
    在这里插入图片描述

SElinux的日志管理

  • 必须安装 setroubleshoot-server 软件包 , 才能将 SELinux消息发送至 /var/log/messages。
  • setroubleshoot-server 侦听 /var/log/audit/audit.log 中的审核信息并将简短摘要发送至 /var/log/messages。摘要包括 SELinux 冲突的唯一标识符 ( UUIDs ), 可用于收集更多信息。 Sealert -l UUID 用于生成特定事件的报告。/var/log/audit/audit.log 用于在该文件中生成所有事件的报告。
/var/log/messages   提供解决方案
/var/log/audit/audit.log   只显示错误不提供解决方案

通过命令yum search selinux,最后一个安装包是提供报错的解决方案的,但是不是每一个系统都会安装。
在这里插入图片描述
没有安装setroubleshoot-server时:
1.在未安装或卸载了setroubleshoot-server时:
在这里插入图片描述
将安全上下文不一致的文件移至默认发布目录下:
在这里插入图片描述
2.清空两个日志中的内容:
在这里插入图片描述
3.向默认发布目录上传文件,并查看两个日志文件的内容有没有更新。
在这里插入图片描述
在这里插入图片描述
可以看到/var/log/messages中并没有给我们提供报错的解决方案。
安装了setroubleshoot-server时:
1.安装:
在这里插入图片描述
2.清空两个日志:
在这里插入图片描述
3.测试,messages中生成了解决方案。

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值