SElinux

SElinux



1.介绍:

  • SELinux: Secure Enhanced Linux,是美国国家安全局「NSA=The National Security Agency」和SCC(Secure Computing Corporation)开发的Linux的一个强制访问控制的安全模块。2000年以GNU GPL发布,Linux内核2.6版本后集成在内核中

  • DAC:Discretionary Access Control自由访问控制

  • MAC:Mandatory Access Control 强制访问控制

        DAC环境下进程是无束缚的

        MAC环境下策略的规则决定控制的严格程度

        MAC环境下进程可以被限制的

        策略被用来定义被限制的进程能够使用那些资源(文件和端口)

        默认情况下,没有被明确允许的行为将被拒绝

2.SELinux有四种工作类型:

  • strict: 每个进程都受到selinux的控制;

  • targeted: 用来保护常见的网络服务,仅有限进程受到selinux控制,只监控容易被入侵的进程;rhel4只保护13个服务,rhel5保护88个服务;

  • minimum:centos7,修改过的targeted,只对选择的网络服务;

  • mls:提供MLS(多级安全)机制的安全性;

   注意:minimum和mls稳定性不足,未加以应用

3.SElinux的安全上下文

  • 传统Linux,一切皆文件,由用户,组,权限控制访问

  • 在SELinux中,一切皆对象,由存放在Inode的扩展属性域的安全元素所控制其访问。

  • 所有文件和端口资源和进程都具备安全标签:安全上下文”(security context)

  • 安全上下文有五个元素组成:

          user:role:type:sensitivity:category

          user_u:object_r:tmp_t:s0:c0

          实际上下文:存放在文件系统中,ls –Z;ps–Z

  • 期望(默认)上下文:存放在二进制的SELinux策略库(映射目录和期望安全上下文)中semanagefcontext–l

4.五个安全因素:

SElinux 为每个文件提供了安全标签,也为进程提供了安全标签;

  • User:指示登录系统的用户类型,如root,user_u,system_u,多数本地进程都属于自由(unconfined)进程;

  • Role:定义文件,进程和用户的用途:文件:object_r,进程和用户:system_r

  • Type:指定数据类型,规则中定义何种进程类型访问何种文件Target策略基于type实现,多服务共用:public_content_t

  • Sensitivity:限制访问的需要,由组织定义的分层安全级别,如unclassified,secret,top,secret, 一个对象有且只有一个sensitivity,分0-15级,s0最低,Target策略默认使用s0

  • Category:对于特定组织划分不分层的分类,如FBI Secret,NSA secret, 一个对象可以有多个categroy,c0-c1023共1024个分类,Target 策略不使用cateaory

5.SElinux的安全策略:

那种域能访问哪种或者哪些种类型的文件

  • 对象(object):所有可以读取的对象,包括文件、目录和进程,端口等

  • 主体:进程称为主体(subject)

  • SELinux中对所有的文件都赋予一个type的文件类型标签,对于所有的进程也赋予各自的一个domain的标签。Domain标签能够执行的操作由安全策略里定义。

  • 当一个subject试图访问一个object,Kernel中的策略执行服务器将检查AVC (访问矢量缓存Access Vector Cache), 在AVC中,subject和object的权限被缓存(cached),查找“应用+文件”的安全环境。然后根据查询结果允许或拒绝访问

  • 安全策略:定义主体读取对象的规则数据库,规则中记录了哪个类型的主体使用哪个方法读取哪一个对象是允许还是拒绝的,并且定义了哪种行为是充许或拒绝

6.设置SElinux

  • SELinux是否启用;

  • 给文件重新打安全标签;

  • 给端口设置安全标签;

  • 设定某些操作的布尔型开关;

  • SELinux的日志管理;

7.SElinux的状态

  • enforcing: 强制,每个受限的进程都必然受限;

  • permissive: 允许,每个受限的进程违规操作不会被禁止,但会被记录于审计日志;

  • disabled: 禁用

8.相关命令和配置文件

  • 相关命令

         getenforce: 获取selinux当前状态

         sestatus:查看selinux状态

         setenforce0|1

              0: 设置为 permissive

              1: 设置为 enforcing

              此设定:重启系统后无效

  • 配置文件

             /boot/grub/grub.conf,使用selinux=0禁用SELinux

          /etc/sysconfig/selinux

          /etc/selinux/config

          SELINUX={disabled|enforcing|permissive}

             修改配置文件之后一定要重新启动,才能生效

  • 给文件重新打标签

         chcon

              chcon[OPTION]… [-u USER] [-r ROLE] [-t TYPE] FILE...

            chcon[OPTION]… –reference=RFILE FILE…

            -R:递归打标;

  • 还原文件的默认标签:

          restorecon 

                 restorecon[-R] /path/to/somewhere

[root@centos7 ~]# getenforce  # 查看状态
Disabled
[root@centos7 ~]# cat /etc/selinux/config  # 配置文件

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled  # 修改配置文件之后一定要重新启动
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

9.SElinux布尔型规则

  • 布尔型规则

        getsebool

        setsebool

  • 查看bool值命令:

        getsebool[-a] [boolean]

        semanageboolean–l

        semanageboolean-l –C 查看修改过的布尔值

  • 设置bool值命令:

        setsebool[-P] booleanvalue

        setsebool[-P] Boolean=value


总结:

  SElinux是RedHat/CentOS系统特有的安全机制。因为这种机制的限制太多,配置也特别繁琐,所以没有人真正应用它。安装完系统,我们一般吧selinux关闭,以免引起不必要的麻烦。


原创文章,作者:zhumengxiaotao,如若转载,请注明出处:http://www.178linux.com/48366

(0)
zhumengxiaotaozhumengxiaotao
上一篇 2016-09-21
下一篇 2016-09-21

相关推荐

  • 系统管理至grub故障排错及自建linux

    第二章    系统启动故障排除     1、grub配置文件写错,无法进入系统     步骤:(修复完成后记得修改配置文件为正确的文件)     方法一:进入启动菜单项后,修改菜单项为正确的内容,然后…

    Linux干货 2016-09-13
  • linux特殊权限管理

    特殊权限:SUID, SGID, STICKY 正常情况下:  1、进程以某用户的身份运行; 进程是发起此进程用户的代理,因此以此用户的身份和权限完成所有操作; 2、权限匹配模型: (1) 判断进程的属主,是否为被访问的文件属主;如果是,则应用属主的权限;否则进入第2步; (2) 判断进程的属主,是…

    Linux干货 2015-12-19
  • 磁盘管理和高级文件系统管理-习题

    高级文件系统管理-习题 1、 创建一个可用空间为40G 的RAID1 设备,要求其chunk大小为128k ,文件系统为ext4 ,有一个空闲盘,开机可自动挂载至/backup目录 [root@centos7 ~]# mdadm -C /dev/md0 -c 128 -a yes -l 1 -n 2 -x 1 /dev/sdb /dev/sdc /dev/s…

    Linux干货 2016-09-01
  • bash变量和逻辑运行

    bash 特性及bash脚本编程初步       终端,附着在终端的接口程序:      GUI:KDE,GNome,Xfce      CLI: /etc/shells              b…

    Linux干货 2016-12-23
  • Linux三剑客之sed

    sed:全称stream EDit 行文本编辑器 作用:是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在模式空间,接着用 sed命令处理缓冲区中的内容,处理完成后,把模式空间的内容输出到标准输出。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。 Sed主要用来自动编辑一个或多个文件,简化对文件的反复操…

    Linux干货 2016-08-12
  • 软件包管理–rpm、yum

    rpm软件包管理,rpm命令的使用。yum命令使用,yum源的搭建,网络yum源的搭建方法。编译安装http

    Linux干货 2017-12-03