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

相关推荐

  • 2班jackcui20160802作业

    1、每日课堂笔记总结 2、预习 3、每日课堂pdf练习 4、在/data/testdir里创建的新文件自动属于g1组,组g2的成员如:alice能对这些新文件有读写权限,组g3的成员如:tom只能对新文件有读权限,其它用户(不属于g1,g2,g3)不能访问这个文件夹。 [root@centos7 /]# groupadd g1 [root@centos7 /…

    Linux干货 2016-08-05
  • yum详解

    yum YUM: Yellowdog Update Modifier,rpm的前端程序,用来解决软件包相关依赖性,可以在多个库之间定位软件包,up2date的替代工具 yum repository: yum repo,存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下) yum对软件包的管理机制 —–引用了…

    Linux干货 2016-08-25
  • Linux文本处理三剑客之GNU awk的使用

    awk: Aho, Weinberger, Kernighan,报告生成器,格式化文本输出 有多种版本:New awk(nawk),GNU awk(gawk) gawk –模式扫描和处理语言 基本用法:     awk[options] ‘program’ var=value file…   &nb…

    Linux干货 2016-10-06
  • N_28文件类管理命令

    1.linux文件管理类命令有:mkdir ,rmdir,cp ,mv,rm,ls,vi,cat ,cut,sort,wc等 mkdir –make directories  (创建目录) 用法 :mkdir [OPTION]… DIRECTORY… -P  按需要创建目录的父目录; -v  显示创建的详细过程; -m M…

    2017-12-09
  • CentOS 7 部署LAMP架构(独立服务模式)

    细节要求:(1) 三者分离于三台主机,Httpd与PHP以FastCGI模式通讯; (2) 一个虚拟主机用于提供phpMyAdmin;另一个虚拟主机用于提供wordpress; (3) 部署PHP加速器:xcache; 一、准备CentOS 7主机环境以及Repo仓库提供基于rpm安装包方式的程序包安装源 安装主机程序包规划: 主机1:web-server(…

    Linux干货 2017-02-17
  • 第九周加密及DNS

    1、简述常见加密算法及常见加密算法原理,最好使用图例解说
    2、搭建apache或者nginx并使用自签证书实现https访问,自签名证书的域名自拟
    3、简述DNS服务器原理,并搭建主-辅服务器
    4、搭建并实现智能DNS

    Linux干货 2018-01-29