设为首页 收藏本站
查看: 1036|回复: 0

[经验分享] Linux7/Centos7 Selinux介绍

[复制链接]

尚未签到

发表于 2019-2-16 11:38:24 | 显示全部楼层 |阅读模式
  SELinux的全称是Security Enhanced Linux, 就是安全加强的Linux。在SELinux之前,root账号能够任意的访问所有文档和服务;如果某个文件设为777,那么任何用户都可以访问甚至删除;这种方式称为DAC(主动访问机制),很不安全。
  DAC 自主访问控制: 用户根据自己的文件权限来决定对文件的操作,也就是依据文件的own,group,other/r,w,x权限进行限制。Root有最高权限无法限制。r,w,x权限划分太粗糙。无法针对不同的进程实现限制。
  SELinux则是基于MAC(强制访问机制),简单的说,就是程序和访问对象上都有一个安全标签(即selinux上下文)进行区分,只有对应的标签才能允许访问。否则即使权限是777,也是不能访问的。
  在SELinux中,访问控制属性叫做安全上下文。所有客体(文件、进程间通讯通道、套接字、网络主机等)和主体(进程)都有与其关联的安全上下文,一个安全上下文由三部分组成:用户(u)、角色(r)和类型(t)标识符。但我们最关注的是第三个部分
  当程序访问资源时,主体程序必须要通过selinux策略内的规则放行后,就可以与目标资源进行安全上下文的比对,若比对失败则无法存取目标,若比对成功则可以开始存取目标,最终能否存取目标还要与文件系统的rwx权限的设定有关。所以启用了selinux后出现权限不符的情况时,你就得一步一步的分析可能的问题了。
  以上简单了解即可,下面的是要重点掌握的
  1、Selinux状态查看与配置:
  Selinux的配置文件位置:/etc/selinux/config,它还有个链接在/etc/sysconfig/selinux
  使用config文件来配置selinux(通过配置文件修改selinux的状态属于永久修改,要重启系统才生效)

  文件内容如下图:

  SELINUX=enforcing
#此项定义selinux状态。
#enforcing—是强制模式系统受selinux保护。就是你违反了策略,你就无法继续操作下去
#permissive—是提示模式系统不会受到selinux保护,只是收到警告信息。permissive就是Selinux有效,但是即使你违反了策略的话它让你继续操作,但是把你的违反的内容记录下来(警告信息)
#disabled—禁用selinux。
SELINUXTYPE=targeted
#此项定义selinux使用哪个策略模块保护系统。targeted只对apache ,sendmail,bind,postgresql,nfs,cifs等网络服务保护。
  以上策略配置都放置在/etc/selinux目录中,目录和策略名称相同
  使用selinux相关命令查看和修改状态:(属于立即生效但临时性的)
a、sestatus 查询selinux工作状态

  b、selinuxenabled检查selinux是否开启,配合echo$?.传回值是0为开启,1为关闭.

  c、getenforce查看selinux的状态

  d、setenforce设定selinux运行状态,1开启(Enforcing),0关闭(Permissive)

  2、查看安全上下文相关命令
  查看文件上下文可以通过ls-Z

  查看进程上下文可以使用ps Z

  查看用户上下文可以用id–Z

  安全上下文以用户:角色:类型(域)标识符的形式出现.(这里的用户指的是selinu用户)
  3、以下是复制和移动文件时安全上下文的变化:
  以httpd为例,这个httpd的进程可以访问/var/www/html下的文档对象
  在/root目录下创建两个测试页文件(如test1.html、test2.html)

  复制test1.html文件到/var/www/html目录下,剪切test2.html文件到/var/www/html目录下

  查看html目录下文件的安全上下文

  通过上图可以看到剪切操作时文件的上下文没有发生改变,仍然是原上下文,而复制操作时文件的上下文继承了目标目录的上下文。
  通过浏览器访问这两个网页文件


  可以看到test1.html页面能访问而test2.html却被拒绝访问
  查看权限发现apache用户对这两个文件都具有r权限,但test2.html文件却拒绝访问

  原因就是因为httpd进程不能访问域类型标签是admin_home_t的资源,被selinux将访问拒绝了。
  查看日志/var/log/audit/audit.log
  原因就是因为httpd进程不能访问域类型标签是admin_home_t的资源,被selinux将访问拒绝了。
  查看日志/var/log/audit/audit.log

  通过日志记录也能看到test2.html文件拒绝httpd进程访问。

  由于此文件记录的信息很多不宜直接查看,可以借助audit2why和audit2allow
  #audit2why off,文件 root.txt 的类型刚好是 root:object_r:user_home_t:s0
  所以更改此 bool 值就可以

  (-P 是把该修改写到文件,下次启动仍然有效)
  客户端登录测试,发现 root.txt 文件就可以访问了
  总结一下,如果搭配了某个服务器,然后客户端无法正常访问,应该按照下面的顺序进行排错:
  1.该服务的配置文件中是否开启了相关的权限 ,比如是否允许匿名用户写入等等;
  2.文件系统的权限,比如是否需要使用chmod修改权限
  3.SELinux的上下文和布尔值
  如果对此有兴趣,请扫下面二维码免费获取更多详情





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-673111-1-1.html 上篇帖子: CentOS 6.4安装配置MairaDB 10.3 Galera Cluster 下篇帖子: CentOS 7.0升级GNU Bash
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表