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

[经验分享] 安全强化linux-SELinux

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-4-11 09:10:21 | 显示全部楼层 |阅读模式

写在前面:

    博客书写牢记5W1H法则:What,Why,When,Where,Who,How。


本篇主要内容:

● 权限认证

● SELinux运作模式/启动模式

● 安全上下文查看与修改



简介:
   SELinux全称为Security Enhanced Linux,意味安全强化linux。
   其设计目的为防止“内部员工的资源误用”。是以进程、文件等细部权限设定为依据的一个核心模块。

权限认证:
   (1)传统文件权限与账号关系:自主式访问控制,DAC(Discretionary Access Control)
      当某进程需要对文件进行存取操作时,系统会根据进程发起人对比文件权限,若通过权限检查,就可以存取文件。即依据进程拥有者与文件rwx权限来确定进程权限。
      可能由于用户误操作导致资源误用,甚至对关键文件造成损害。如由于管理员为文件赋予了较宽泛权限,导致普通用户对关键文件有了修改权限等。
   (2)针对特定进程与特定文件资源进行权限监控的规则:强制/委任式访问控制,MAC(Mandatory Access Control)
      同一用户使用不同进程时,所获取到的权限不同。根据进程的权限设定确定权限,即将权限控制主体由用户变成了进程,以达到更加细化的控制权限的目的。
wKioL1cKY96CbTg8AAA3dz3sdio690.jpg
SELinux的运作模式:
   Subject --Policy--> Object
      Subject:主体,即进程
      Policy:预定策略,还可细分为详细的规则(rule),即预先定义的一系列布尔值集合。
         相关配置文件:/etc/selinux/config
         centOS6:
            targeted:部分SELinux权限控制,仅严格监控网络服务的进程权限
            strict:完全的SELinux权限控制,严格监控所有进程权限
         centOS7:
            targeted:部分SELinux权限控制,仅严格监控网络服务的进程权限
            minimum:targeted修订而来,仅监控已选择的进程权限
            mls:完全的SELinux权限控制,严格监控所有进程权限
      Object:目标,即文件或其他进程
   相关命令:
      查看/修改SELinux规则是否启用。
      getsebool
         getsebool -a
            获取SELinux布尔值规则列表
         getsebool BOOLEAN
            获取某个SELinux布尔值规则
      setsebool
         setsebool [-P] BOOLEAN VALUE | BOOLEAN1=VAL1 ...
            修改布尔值,-P指定长期有效
例:
1
2
3
4
5
6
7
8
9
10
[iyunv@localhost html]# getsebool -a | grep httpd
allow_httpd_anon_write --> off
allow_httpd_mod_auth_ntlm_winbind --> off
allow_httpd_mod_auth_pam --> off
allow_httpd_sys_script_anon_write --> off
httpd_builtin_scripting --> on
...省略部分输出...
[iyunv@localhost html]# setsebool allow_httpd_anon_write on
[iyunv@localhost html]# getsebool allow_httpd_anon_write
allow_httpd_anon_write --> on




安全上下文:(security context)
   SELinux为每个文件提供了安全标签,同时也为进程提供了安全标签,这样通过比对进程与文件的安全标签,即可确定是否满足访问权限。
   虽然条目中有3部分,但与进程能否访问文件资源有关的只有第3字段而已!当domain(进程的第3字段)与type(文件的第3字段)匹配时,就可以访问,与其他字段无关!
   对不匹配安全标签的或没有明确规定有权限的操作一律拒绝。
   安全标签存储位置:
      进程:内存中
      文件:inode
   格式:
      文件与进程的标签都为冒号隔开的3部分组成,但意义不尽相同:
         文件:
            Object:role:type
            对象:角色:类型
         进程:
            Subject:role:domain
            主题:角色:域
      Object/Subject:
         相当于传统权限中的用户。如:
         unconfined_u:不受限用户,登陆用户进程或文件大多会被识别为这个
         system_u:系统用户,系统或软件产生的进程或文件
      role:
         描述了此资源是进程、文件还是用户。
         object_r:此资源为文件
         unconfined_r:此资源为用户进程
         system_r:此资源为系统进程
      Type/domain:
         只有domain匹配type时,进程才能够顺利读取文件资源。

安全上下文的查看:
   文件:
      ls -Z FILE
   进程:
      ps -eZ

SELinux启动模式:
   enforcing:强制模式
   permissive:宽容模式,仅警告(写入日志),不实际限制
   disabled:关闭
   相关配置文件:
      /etc/selinux/config
   相关命令:
      getenforce
         获取selinux当前启动模式
      setenforce 0|1
         设置selinux当前启动模式
         0:enforcing
         1:permissive
      此种设定方法重启系统后失效。

修改安全上下文:
   chron
      chcon [OPTION]... CONTEXT FILE...
       chcon [OPTION]... [-u USER] [-r ROLE] [-t TYPE] FILE...
       chcon [OPTION]... --reference=RFILE FILE...

       -R:递归打标
   restorecon [-R] FILE
例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  #安装httpd服务
[iyunv@localhost ~]# yum -y install httpd
[iyunv@localhost ~]# service httpd start
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
                                                           [  OK  ]
[iyunv@localhost ~]# cd /var/www/html/
[iyunv@localhost html]# echo "<h1>It works.</h1>" > index.html
  #浏览器访问http://IP,发现页面可以正常访问。
  #查看index.html文件权限及httpd进程权限
[iyunv@localhost html]# ls -Z index.html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html
[iyunv@localhost html]# ps auxZ | grep -v 'grep' | grep 'httpd'
unconfined_u:system_r:httpd_t:s0 root      5980  0.0  0.3 183856  3840 ?        Ss   15:28   0:00 /usr/sbin/httpd
unconfined_u:system_r:httpd_t:s0 apache    5983  0.0  0.2 183856  2468 ?        S    15:28   0:00 /usr/sbin/httpd
unconfined_u:system_r:httpd_t:s0 apache    5984  0.0  0.2 183856  2468 ?        S    15:28   0:00 /usr/sbin/httpd
unconfined_u:system_r:httpd_t:s0 apache    5985  0.0  0.2 183856  2468 ?        S    15:28   0:00 /usr/sbin/httpd
unconfined_u:system_r:httpd_t:s0 apache    5986  0.0  0.3 183992  3128 ?        S    15:28   0:00 /usr/sbin/httpd
unconfined_u:system_r:httpd_t:s0 apache    5987  0.0  0.2 183856  2468 ?        S    15:28   0:00 /usr/sbin/httpd
unconfined_u:system_r:httpd_t:s0 apache    5988  0.0  0.2 183856  2468 ?        S    15:28   0:00 /usr/sbin/httpd
unconfined_u:system_r:httpd_t:s0 apache    5989  0.0  0.2 183856  2468 ?        S    15:28   0:00 /usr/sbin/httpd
unconfined_u:system_r:httpd_t:s0 apache    5990  0.0  0.2 183856  2468 ?        S    15:28   0:00 /usr/sbin/httpd
  ↑↑ 可以看到进程domain为httpd_t,而文件type为httpd_sys_content_t,可以匹配,所以正确可访问
  #修改index.html安全上下文标签
[iyunv@localhost html]# chcon -t admin_home_t index.html
[iyunv@localhost html]# ls -Z index.html
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 index.html
  #浏览器访问http://IP,发现页面无法正确显示。
  #恢复初始安全上下文标签
[iyunv@localhost html]# restorecon index.html
[iyunv@localhost html]# ls -Z index.html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html
  ↑↑ 页面访问恢复正常。




查看进程的domain能够读取那些文件的type,可以安装setools-console-*软件包并使用sesearch命令,详细查看鸟哥第4版基础篇P756。


运维网声明 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-202400-1-1.html 上篇帖子: 制作Ubuntu U盘便携版 下篇帖子: linux下组管理命令详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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