码迷,mamicode.com
首页 > 系统相关 > 详细

selinux 安全上下文

时间:2017-08-12 22:36:55      阅读:434      评论:0      收藏:0      [点我收藏+]

标签:selinux


一:安全上下文原理


安全上下文是一个简单的、一致的访问控制属性,在SELinux中,类型标识符是安全上下文的主要组成部分,由于历史原因,一个进程的类型通常被称为一个域(domain),"域"和"域类型"意思都一样,即都是安全上下文中的“TYPE”。

1 :DAC与MAC的关键区别(root用户)

      安 全增强型Linux(SELinux)开始是由NSA(国家安全局)启动并加入到Linux系统中的一套核心组件及用户工具,可以让应用程序运行在其所需 的最低权限上。未 经修改过的Linux系统是使用自主访问控制的,用户可以自己请求更高的权限,由此恶意软件几乎可以访问任何它想访问的文件,而如果你授予其root权 限,那它就无所不能了。

      在SELinux中没有root这个概念,安全策略是由管理员来定义的,任何软件都无法取代它。这意味着那些潜在的恶意软件所能造成的损害可以被控制在最小。一般情况下只有非常注重数据安全的企业级用户才会使用SELinux。  

      操作系统有两类访问控制:自主访问控制(DAC)和强制访问控制(MAC)。标准Linux安全是一种DAC,SELinux为Linux增加了一个灵活的和可配置的的MAC。

      所有DAC机制都有一个共同的弱点,就是它们不能识别自然人与计算机程序之间最基本的区别。简单点说就是,如果一个用户被授权允许访问,意味着程序也被授权访问,如果程序被授权访问,那么恶意程序也将有同样的访问权。 DAC最根本的弱点是主体容易受到多种多样的恶意软件的攻击,MAC就是避免这些攻击的出路,大多数MAC特性组成了多层安全模型。

      SELinux实现了一个更灵活的MAC形式,叫做类型强制(Type Enforcement)和一个非强制的多层安全形式(Multi-Level Security)。

2:安全上下文格式解读

[root@localhost ~]# ls -ldZ /mnt/
drwxr-xr-x. root root system_u:object_r:mnt_t:s0       /mnt/
[root@localhost ~]# ls -ldZ /var/ftp/pub/
drwxr-xr-x. root root system_u:object_r:public_content_t:s0 /var/ftp/pub/

①  USER

 1) useridentity:类似Linux系统中的UID,提供身份识别,用来记录身份;安全上下文的一部分;

         2) 三种常见的 user:

              user_u :普通用户登录系统后的预设;

               system_u :开机过程中系统进程的预设;

               root :root 登录后的预设;

        3) 在 targeted policy 中 users 不是很重要;

        4) 在strict policy 中比较重要,所有预设的 SELinux Users 都是以 “_u” 结尾的,root 除外。

②  ROLE

1) 文件、目录和设备的role:通常是 object_r;

        2) 程序的role:通常是 system_r;

        3) 用户的role:targeted policy为system_r; strict policy为sysadm_r、staff_r、user_r;用户的role,类似系统中的GID,不同角色具备不同的的权限;用户可以具备多个 role;但是同一时间内只能使用一个role;        

 

        4) 使用基于RBAC(Roles Based AccessControl) 的strict和mls策略中,用来存储角色信息

③  TYPE

1) type:用来将主体(subject)和客体(object)划分为不同的组,给每个主体和系统中的客体定义了一个类型;为进程运行提供最低的权限环境;

        2) 当一个类型与执行中的进程相关联时,其type也称为domain;

        3) type是SElinux security context 中最重要的部位,是 SELinux Type Enforcement 的心脏,预设值以_t结尾;

3:SELinux的运行机制

    SELinux决策过程如下图所示:

技术分享

图片来源cnds


      当一个subject(如: 一个应用)试图访问一个object(如:一个文件),Kernel中的策略执行服务器将检查AVC (Access Vector Cache), 在AVC中,subject和object的权限被缓存(cached)。如果基于AVC中的数据不能做出决定,则请求安全服务器,安全服务器在一个矩阵 中查找“应用+文件”的安全环境。然后根据查询结果允许或拒绝访问,拒绝消息细节位于/var/log/messages中。

二:selinux 应用

1: selinux的三种状态
disable   #关闭,即没有了安全上下文
enforcing   #强制开启
peimissing   #警告模式

2:更改selinux状态

(1) 配置文件见直接更改

[root@localhost ~]# vim /etc/selinux/config  ##selinux配置文件 
SELINUX=enforcing      ##要改变状态在此处=后面更改

关闭SELinux的方法:
修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。
如果不想重启系统,使用命令setenforce 0

# 如果要启动 SELinux ,则不可以出现 selinux=0 的字样在 kernel 后面!

(2)setenforcing

[root@localhost ~]# setenforce 0   ##设置seinux状态为peimissing
[root@localhost ~]# getenforce     ##查看selinux状态
Permissive
[root@localhost ~]# setenforce 1   ##设置selinux状态为enforcing
[root@localhost ~]# getenforce 
Enforcing

注:此命令不能在disabled情况下执行

[root@foundation20 Desktop]# getenforce 
Disabled
[root@foundation20 Desktop]# setenforce  0
setenforce: SELinux is disabled
[root@foundation20 Desktop]# setenforce 1
setenforce: SELinux is disabled



3:查看安全上下文

ls -Z file|dir       ##查看文件安全上下文‘

semanage fcontext -l   ##显示系统中所有安全上下文
semanage fcontext -l | grep /var/ftp/  ##过滤安全上下文
semanage fcontext -l | grep /zpy

4:更改安全上下文

(1)临时更改

chcon -t public_content_t /zpy/          ##更改用户上下文  临时更改

(2)永久更改
semanage fcontext -a -t public_content_t "/zpy(/.*)?"   ##更改安全上下文"/zpy(/.*)?"表示匹配文件中所有字符,永久更改
restorecon -RvvF /zpy/   ##对此文件加载

5,查看 SELinux 的政策 (Policy)
[root@master oracle]# sestatus
SELinux status:                 enabled    <==是否启动 SELinux
SELinuxfs mount:                /selinux   <==SELinux 的相关文件资料挂载点
Current mode:                   enforcing  <==目前的模式
Mode from config file:          enforcing  <==设定档指定的模式
Policy version:                 21
Policy from config file:        targeted   <==目前的政策为何?

三:布尔

(1)getsebool命令是用来查询SElinux策略内各项规则的布尔值。SELinux的策略与规则管理相关命令:seinfo命令、sesearch命令、getsebool命令、setsebool命令、semanage命令。

getsebool -a

-a:列出目前系统上面的所有布尔值条款设置为开启或关闭值。

(2)setsebool

setsebool命令是用来修改SElinux策略内各项规则的布尔值。setsebool命令和getsebool命令是SELinux修改和查询布尔值的一套工具组

允许vsvtp匿名用户写入权限:

setsebool -P allow_ftpd_anon_write=1

-P:直接将设置值写入配置文件,该设置数据将来会生效的。

四:应用

怎样允许匿名用户上传?、

(1):在不考虑selinux情况下允许上传,selinux开的情况下上传的前提
vim /etc/vsftpd/vsftpd.conf

local_enable=YES
anon_upload_enable=YES

 chmod 775 /var/ftp/pub/
 chgrp ftp pub/、

(2)当selinux为enforcing

semanage fcontext -a -t public_content_rw_t "/var/ftp/pub(/.*)?"   ##给/var/ftp/pubselinux标签可执行权限
restorecon -RvvF /var/ftp/pub   ##重新加载文件

(3)打开selinux针对匿名用户上传的权限

getsebool -a | grep ftp
setsebool -P ftp_home_dir on

注:查看日志解决selinux问题
当安全上下文等不匹配或者有问题时,我们可以查看日志,日志中有解决方法  前提是有setroubleshoot-3.2.17-2.el7.x86_64 软件

本文出自 “12462896” 博客,请务必保留此出处http://12472896.blog.51cto.com/12462896/1955691

selinux 安全上下文

标签:selinux

原文地址:http://12472896.blog.51cto.com/12462896/1955691

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!