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

相关推荐

  • Linux常用文件管理命令

    常用文件管理命令 cat cat命令连接文件并打印到标准输出设备上,cat经常用来显示文件的内容 语法 cat(选项)(参数) 选项 -n或-number:有1开始对所有输出的行数编号; -b或–number-nonblank:和-n相似,只不过对于空白行不编号; -s或–squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行; …

    2018-03-11
  • php 配置

      php php不能单独使用都是与httpd结合使用 结合的方式主要是两种一种为模块方式服务于httpd,一种为单独服务方式服务httpd 两种方式不能共存 安装软件包也不相同 网上有官方中文手册 http://php.net/download-docs.php php对中文的支持需要安装php-mbstring php对mysql的支持需要安装…

    Linux干货 2016-11-01
  • linux系统初识

          在完成centos7安装后,使用root登陆,查看了解当前根目录。由于root权限高,建议新增用户。执行useradd name命令。登陆后查看是否当前用户用whoami命令。     使用df命令了解系统分区情况以及显示内存free命令。   &…

    2017-07-16
  • 实时获取MySQL的TPS、QPS(输出到屏幕)

    这个脚本挺好用的,例如我们在主库执行了一个大事务,结果导致从库的show slave status\G 一直卡在 system lock状态,我们用下面这个脚本就能知道到底是hang住了,还是只是执行缓慢(反应在脚本执行结果里面就是qps\tps是不停变动的)。 当然,从库一直处于system lock 状态,一般是因为我们从库也设置双1导致,只要…

    Linux干货 2017-05-07
  • Windows 10 VS. Linux

    原文出处: Linux中国 – zpl1025   前阵子 Windows 10 好像占据了绝大部分头条,甚至在一些Linux圈里也是一样。最具代表性的是 betanews.com 的 Brian Fagioli 说 Windows 10 已经为 Linux 桌面系统敲响了丧钟,Microsoft 如今宣布将为忠实的…

    系统运维 2015-03-24
  • shell脚本编程2

    shell脚本编程2   今天继续学习了shell脚本编程,续之前写的脚本编程1。上次主要学了编程的基础,脚本格式,变量类型及变量的使用,条件测试,数字运算并且进行了部分练习,因为这部分逻辑思维能力要求不是很高,因此记忆起来难度不是特别大。   从今天开始便进入了流程控制以及函数、数组、高级字符串操作、高级变量等内容的学习,总体来说难度和…

    Linux干货 2016-08-16