SElinux: 是Linux的一个强制访问控制的安全模块

SElinux的相关概念:

对象:文件、目录、进程、端口等
主体:进程称为主体
  1. SElinux将所有的文件都赋予一个type类型的标签,所有的进程也赋予一个domain类型的标签。domain标签能够执行的操作由安全策略里定义
  2. #ubuntu没有使用selinux
安全策略:定义主体读取对象的规则数据库,定义那些行为是允许的,那些行为是拒绝的。

SElinux的四种工作类型

  • Strict:CentOS 5,每个进程都受到selinux的控制

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

  • minimum:CentOS 7,修改的targeted,只对选择的网络服务

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

  1. targeted为默认类型,其他三种都不再使用了

SElinux的安全上下文

安全上下文:就是一个标签。规定只有特定标志的进程才能访问特定标识的文件或目录

  1. linux中,一切皆文件
  2. selinux中,一切皆对象。

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

  1. user:role:type:sensitivity:category
  2. 1User:指示登录系统的用户类型,进程:如system_u为系统服务进程,是受到管制的,unconfined_u为不管制的进程,用户自己开启的,如 bash,文件:system_u系统进程创建的文件, unconfined_u为用户自已创建的文件
  3. 2Role:定义文件,进程和用户的用途:进程:system_r为系统服务进程,受到管制。unconfined_r 为不管制进程,通常都是用户自己开启的,如 bash,文件:object_r
  4. 3Type:指定数据类型,规则中定义何种进程类型访问何种文件Target策略基于type实现,多服务共用:public_content_t
  5. 4Sensitivity:限制访问的需要,由组织定义的分层安全级别,如unclassified,secret,top,secret, 一个对象有且只有一个sensitivity,分0-15级,s0最低,Target策略默认使用s0
  6. 5Category:对于特定组织划分不分层的分类,如FBI SecretNSA secret, 一个对象可以有多个categroy c0-c10231024个分类, Target 策略不使用category
启用和禁用selinux
selinux的状态
  1. enforcing:启用selinux,强制,每个受限的进程都必然受限
  2. permissive:启用selinux,但是违反了策略只会报警,不会阻止
  3. disabled:不启用selinux
相关命令

getenforce: 获取selinux当前状态

sestatus :查看selinux状态

setenforce 0|1 0: 设置为permissive 1: 设置为enforcing

通过配置文件启用或禁用
  1. /boot/grub/grub.conf kernel行使用selinux=0禁用SELinux
  2. /boot/grub2/grub.cfg linux16行使用selinux=0禁用SELinux
  3. /etc/selinux/config /etc/sysconfig/selinux SELINUX=
  4. {disabled|enforcing|permissive}

文件安全标签的管理

给文件重新打标签:chcon工具

  1. chcon -R -t 上下文 目录或者文件
  2. #-R, --recursive:递归处理所有的文件及子目录

恢复文件的默认标签:restorecon

  1. restorecon [-R] /path/to/somewhere #目录文件就加R参数

修改默认的标签:semanage工具

  1. #查看默认的安全上下文
  2. semanage fcontext -l
  3. #添加安全上下文
  4. semanage fcontext  -a -t httpd_sys_content_t   ‘/testdir(/.*)?’ #-a表示添加
  5. restorecon -Rv /testdir
  6. #删除安全上下文
  7. semanage fcontext  -d -t httpd_sys_content_t   ‘/testdir(/.*)?’

管理端口标签

  1. #查看端口标签
  2. semanage port -l
  3. #添加端口
  4. semanage port -a -t port_label -p tcp|udp PORT
  5. semanage port -a -t http_port_t  -p tcp 9527
  6. #删除端口
  7. semanage port -d -t port_label -p tcp|udp PORT
  8. semanage port -d -t http_port_t  -p tcp 9527
  9. #修改现有端口为新标签
  10. semanage port -m -t port_label -p tcp|udp PORT
  11. semanage port -m -t http_port_t -p tcp 9527

管理SELinux布尔值

对指定服务的功能进行设置,服务能否正常启用和服务是否正常启动和selinux对应的bool值是否开启共同决定。

  1. #布尔型规则:
  2. getsebool
  3. setsebool
  4. #临时生效,重启就不生效了 永久生效: 加上一个大写的P
  5. #查看指定的服务是否开启了
  6. getsebool -a | grep 服务名
  7. #查看bool命令:
  8. getsebool [-a] [boolean]
  9. semanage boolean -l
  10. semanage boolean -l -C 查看修改过的布尔值
  11. #设置bool值命令:
  12. setsebool [-P] boolean valueon,off
  13. setsebool [-P] Boolean=value10

SElinux管理的更多相关文章

  1. 0060 Linux SELinux 管理命令

    1. SELinux 的起源 SELinux 是一个面向政府和行业的产品,由 NSA.Network Associates.Tresys 以及其他组织设计和开发.尽管 NSA 将其作为一个补丁集引入, ...

  2. [转]SELinux管理与配置

    原文链接:http://blog.csdn.net/huangbiao86/article/details/6641893 1.1 SElinux概述 SELinux(Security-Enhance ...

  3. setsebool命令详解与SELinux管理

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

  4. Linux命令应用大词典-第29章 SELinux管理

    29.1 sestaus:显示SElinux的状态 29.2 getenforce:显示当前SELinux的应用模式 29.3 setenforce:修改SELinux的应用模式 29.4 getfa ...

  5. 第17章 程序管理与SELinux初探

    什么是进程 触发任何一个事件时,系统都会将它定义为一个进程,并且给予这个进程一个ID,称为PID,同时依据触发这个进程的用户与相关属性关系,给予这个进程一组有效的权限设置. 进程与程序 进程:执行一个 ...

  6. SELinux 入门

    几乎可以肯定每个人都听说过 SELinux (更准确的说,尝试关闭过),甚至某些过往的经验让您对 SELinux 产生了偏见.不过随着日益增长的 0-day 安全漏洞,或许现在是时候去了解下这个在 L ...

  7. Centos7.5中的SElinux操作命令说明

    设置Selinux模式 setenforce 0 0表示警告模式 1表示强制模式 关闭要设置/etc/sysconfig/selinux下将"SELINUX=enforcing"改 ...

  8. SElinux(转)

    转自:http://www.361way.com/rh134-selinux/4653.html RH134小结(四)初识SElinux 2015年8月2日admin发表评论阅读评论   一.SEli ...

  9. Linux下MySQL/MariaDB Galera集群搭建过程

    MariaDB介绍 MariaDB是开源社区维护的一个MySQL分支,由MySQL的创始人Michael Widenius主导开发,采用GPL授权许可证. MariaDB的目的是完全兼容MySQL,包 ...

随机推荐

  1. 无线:WEP

    WEP是Wired Equivalent Privacy的简称,有线等效保密(WEP)协议是对在两台设备间无线传输的数据进行加密的方式,用以防止非法用户窃听或侵入无线网络.不过密码分析学家已经找出 W ...

  2. B - A Simple Task

    https://vjudge.net/contest/446582#problem/B 这道题是一道不错的线段树练代码能力的题. #include<bits/stdc++.h> using ...

  3. 学学dotnet core中的身份验证和授权-1-概念

    前言 身份验证: Authentication 授权: Authorization net core 中的身份验证和授权这两个部分,是相辅相成的.当初我在学在部分的时候,是看的 net core 官网 ...

  4. React简单教程-1-组件

    前言 React,Facebook开发的前端框架.当时Facebook对市面上的前端框架都不满意,于是自己捣鼓出了React,使用后觉得特别好用,于是就在2013年开源了. 我也用React开发了一个 ...

  5. cloudwu/coroutine 源码分析

    1 与其它协程库使用对比 这个 C 协程库是云风(cloudwu) 写的,其接口风格与 Lua 协程类似,并且都是非对称 stackful 协程.这个是源代码中的示例: #include " ...

  6. ExtJS 布局-Fit布局(Fit Layout)

    更新记录: 2022年5月31日 第一稿. 1.说明 Fit布局只会显示一个子组件,子项组件的尺寸会拉伸到容器的尺寸.当容器进行调整大小(resized),子组件会自动调整去拉伸到付容器的大小. 注意 ...

  7. 知道vue组件同级传值吗?

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. SAP Web Dynpro - 应用程序中的服务调用

    您可以使用服务调用来调用Web Dynpro组件中的现有功能模块. 要创建服务呼叫,您可以使用Web Dynpro工具中易于使用的向导. 您可以在ABAP工作台中启动该向导以创建服务调用. 步骤1-选 ...

  9. 程序员必备,一款让你提高工作效率N倍的神器uTools

    下载地址:https://www.aliyundrive.com/s/f7PU7QxdxEz uTools 是什么? uTools = your tools(你的工具集) uTools 是一个极简.插 ...

  10. Min-max 容斥与 kth 容斥

    期望的线性性: \[E(x+y)=E(x)+E(y) \] 证明: \[E(x+y)=\sum_i \sum_j(i+j)*P(i=x,j=y) \] \[=\sum_i\sum_ji*P(i=x,j ...