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 21:17
下一篇 2016-09-21 21:20

相关推荐

  • Redis数据库安全手册

    Redis是一个高性能的key-value数据库,这两年可谓火的不行。而Redis的流行也带来一系列安全问题,不少攻击者都通过Redis发起攻击。本文将讲解这方面的内容,包括Redis提供的访问控制和代码安全问题,以及可以由恶意输入和其他类似的手段触发的攻击。 Redis通用安全模块 Redis被设计成只能由可信环境的可信机器访问。这意味着将它直接暴露在互联…

    2015-03-12
  • shell脚本基础

    1、编程基础     程序:指令+数据   程序编程风格:                         过程式:以指令为中心,数据服务于指令         &nbs…

    2017-04-20
  • Linux的发展史

    引言: 开源是什么?什么是Unix 、Linux ?这两种操作系统又有什么关联?    大家当前在用最常见的电脑系统是眼前的Windows ,但为何我们要花学习Linux 的发展史? 通过下面的介绍,我们能大致了解互联网发展的一些问题,以及Linux和Unix的基本概念、历史、发展情况。 一、操作系统介绍 内核(kernel)负责控制硬…

    Linux干货 2016-10-19
  • 第七周作业

    1、简述linux操作系统启动流程 CentOS 启动流程图: 通电自检 power on system test(POST)–> BIOS –> 主机加电以后会将各个部件运转起来,然后通过COMS上的软件程序BIOS(Basic Input Output System)检测每个设备cpu、内存、硬盘进行故障检查并进行硬件…

    2018-02-07
  • 压缩、解压缩及归档工具

    压缩、解压缩及归档工具 一、杂项知识整理 1、find -iname 忽略大小写;     -inum 查找指定inode号的文件;  find 在有条件判断的时候,如果不加括号,最后的命令会被当成以为第二个条件之后的:例 [root@localhost shelltest]# find&…

    Linux干货 2016-08-18
  • 初入Linux世界 —马哥教育网络班N22_第三周课程练习

    一、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。           [root@Alien ~]# who |cut -d ' ' -f1|sort -u       root 二、取出最后登录到当前系统的用户的相关…

    Linux干货 2016-09-19