SElinux -> Linux安全访问策略 -> 强制性 (security安全)

是Linux操作系统的一个额外的强制性的安全访问规则。用于确定哪个进程可以访问哪些文件、目录和端口的一组安全规则。保护的对象是服务、服务对应的文件/目录、服务对应的端口;其中,服务的实例(实际运行当中的一个例子)就是进程,所以进程也受selinux的保护。可以被看作是与标准权限系统并行的权限系统,如果selinux开启,以root身份运行进程,访问文件不光要受用户对文件访问权限的限定,还要受进程对文件selinux上下文类型的限定,否则,就算是root用户运行的进程,也不一定能访问某个文件。

1).selinux 的三种模式(状态):

 enforcing  ->  强制模式  ->  拒绝非法访问并录入日志;
permissive -> 许可模式(警告模式) -> 暂时允许非法访问并录入日志;(debug)
disabled -> 禁用模式 -> 允许非法访问且不录入日志。

2).selinux 模式的切换:

 getenforce  ->  获取selinux状态
临时切换:
setenforce 0 -> 临时关闭selinux策略 -> enforcing-permissive
setenforce 1 -> 临时开启selinux策略 -> permissive-enforcing
永久切换:
#vim /etc/sysconfig/selinux
vim /etc/selinux/config ->
SELINUX=enforcing/permissive/disabled -> reboot生效

3).selinux 上下文 -> 在linux系统里面,每个文件、进程、端口都具有特别的安全标签,这个标签就是selinux上下文,它是selinux安全策略用来判断某个进程能否访问文件、目录或端口的工具。

A). 内容:
用户:角色:类型:敏感度 -> 类型是重点
-> 用户 -> 系统用户 (system_u);root及普通用户组成的未指定用户(unconfined_u)
-> 角色 -> 系统角色(system_r);未指定角色(unconfined_r);对象角色(object_r)
-> 类型 -> 以_t结尾,每一个服务都有三个方面的类型 -> 服务本身,服务对应的文件,服务对应的端口 -> 服务和对应的文件,它们的selinux上下文类型得是一一对应的,服务与对应的端口也是要一一对应的;但是,这不代表selinux上下文类型不能改,原则上是可以改的,只不过要做重新的类型配对。
-> 敏感度 -> s0,指的是安全等级,有0、1、2三种,数值越大,灵敏度越高
B). 查看selinux上下文:
查看文件的selinux上下文方法一 -> ll -Z filename
查看文件的selinux上下文方法二 -> semanage fcontext -l | grep filename -> filename要写文件的绝对路径 ->eg: semanage fcontext -l|grep /etc/ssh ->不一定能查看所有文件,所以还是方法一跟保险
查看进程的selinux上下文 -> ps -auxZ -> eg: ps -auxZ | grep sshd
查看所有(开放或不开放)端口的selinux上下文 -> semamage port -l | grep 端口号 -> semanage port -l | grep 22
查看当前已经开放的端口的selinux上下文 -> netstat -pantZ

4).修改selinux上下文类型:

A).文件  ->
a). 临时修改:
chcon -t 上下文类型 filename -> 将selinux设置成disabled后reboot,然后再设置成enforcing后reboot,修改会失效,将还原成原始默认类型 -> 不推荐使用
chcon -t httpd_sys_content_t /opt/testfile
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
#reboot
sed -i 's/SELINUX=disabled/SELINUX=enforcing/g' /etc/selinux/config
#reboot
ll -dZ /opt/testfile
b). 永久修改:
semanage fcontext -a -t 上下文类型 ‘/filename(/.*)?’-> 注意:这里的filename要写绝对路径
restorecon -RFv /filename -> 强制递归刷新上下文类型并显示刷新过程
semanage fcontext -a -t httpd_sys_content_t '/opt/test(/.*)?'
restorecon -RFv /opt/test/
B).端口 -> 给一个端口添加selinux上下文类型
semanage port -a -t 端口上下文类型 -p tcp/udp 端口号
semanage port -a -t ssh_port_t -p tcp 22022
semanage port -l|grep ssh
-> 端口不用强刷

5).selinux布尔值 -> 当selinux开启时,系统默认会设置很多服务功能的开关,而且默认都是关闭的,sebool就是那个开关

a). 查看  ->  getsebool  -a  (|  grep  布尔值)
b). 设置开启或关闭 -> setsebool bool名 on/off
c). semanage boolean -l (| grep 布尔值)-> 查看布尔值是否永久开启(括号中右边那个值),并显示该布尔值状态的简短描述

注意:

a).文件会默认继承父文件夹的selinux类型;

b).文件被cp到新的文件夹下,会自动继承新文件夹的selinux上下文类型,但mv不会这样,仍会保留原上下文类型;

c).如果修改了某服务的配置文件位置,则必须重新修改该文件的selinux上下文类型,以重新匹配服务,否则服务无法访问该配置文件。

Linux之SElinux服务详解的更多相关文章

  1. Linux SELinux 介绍详解

    Linux SELinux 介绍详解 SElinux 简介 SElinux (Security Enhanced Linux)是由美国国家安全局(NSA)开发的.它已被植入到了Linux系统的内核当中 ...

  2. linux系统设置服务开机启动3种方法,Linux开机启动程序详解

    linux系统设置服务开机启动 方法1:.利用ntsysv伪图形进行设置,利用root登陆 终端命令下输入ntsysv 回车:如下图     方法2:利用命令行chkconfig命令进行设置 简要说明 ...

  3. Linux中的sudoer详解

    目录 Linux中的sudo详解 一.引言 二.格式 三./etc/sudoers文件 四.sudoers文件讲解 五.其他 Linux中的sudo详解 一.引言 Liunx用户只有两类: 管理员用户 ...

  4. CentOS 7.5关闭FireWall 和SELinux图文详解

    CentOS 7.5关闭FireWall 和SELinux图文详解 1. 环境 CentOS 7.5 2. 关闭FireWall和SELinux 2.1 FireWall 使用systemctl st ...

  5. Linux下ps命令详解 Linux下ps命令的详细使用方法

    http://www.jb51.net/LINUXjishu/56578.html Linux下的ps命令比较常用 Linux下ps命令详解Linux上进程有5种状态:1. 运行(正在运行或在运行队列 ...

  6. linux 开机启动过程详解

    Linux开机执行内核后会启动init进程,该进程根据runlevel(如x)执行/etc/rcx.d/下的程序,其下的程序是符号链接,真正的程序放在/etc/init.d/下.开机启动的程序(服务等 ...

  7. Linux开机启动程序详解

    Linux开机启动程序详解我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤. ...

  8. Linux开机启动程序详解[转]

    Linux开机启动程序详解 我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤 ...

  9. Linux下chkconfig命令详解(转)

    Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. ...

随机推荐

  1. 开始讨论离散型随机变量吧!《考研概率论学习之我见》 -by zobol

    上一文中,笔者给出了随机变量的基本定义:一个可测映射,从结果空间到实数集,我们的目的是为了引入函数这个数学工具到考研概率论中,但是我们在现实中面对的一些事情结果,映射而成的随机变量和其对应的概率值,并 ...

  2. supervisor的安装与使用

    Ubuntu安装使用supervisor 进程管理工具 安装 apt-get install supervisor 查看是否安装成功 pgrep supervisord # 返回进程号则成功 改配置文 ...

  3. 有关于weiphp2.00611上传sae的一些注意(图片上传解决方案)

    一.安装中注意的事项  安装时使用的系统为weiphp2.0611    版本     1.将所有文件上传到代码库中     2.按照步骤进行安装weiphp,注意在数据库导入的时候需要手动导入.  ...

  4. vscode的安装、切换为中文简体、集成sass

    VScode设置中文 打开vscode ,按快捷键"Ctrl+Shift+P" 输入configure language,回车 选择安装其他语言 (默认是英文的) 选择简体中安装( ...

  5. JDBC:获取自增长键值的序号

    1.改变的地方  实践: package com.dgd.test; import java.io.FileInputStream; import java.io.FileNotFoundExcept ...

  6. linux firewall (marker)

    查看防火墙是否开启systemctl status firewalld 若没有开启则是开启状态systemctl start firewalld  关闭则start改为stop 查看所有开启的端口fi ...

  7. 一文解决Vue中实现 Excel下载到本地以及上传Excel

    相信大家在项目中经常会遇到一些上传下载文件的相关功能,本文就Excel的相关功能进行简述: 咱直接看代码: <div class="import-main-content"& ...

  8. Linux 无法启动vmmon的问题[主要出现于Arch系]

    Vmmon module not loaded 使用如下命令加载模块 # modprobe -a vmw_vmci vmmon 可能会出现modprobe: WARNING: Module vmmon ...

  9. Javascript之我也来手写一下Promise

    Promise太重要了,可以说是改变了JavaScript开发体验重要内容之一.而Promise也可以说是现代Javascript中极为重要的核心概念,所以理解Promise/A+规范,理解Promi ...

  10. 获取字典中values值中最大的数,返回对应的keys

    1.字典中键值对的获取 print(data.values()) # 查看字典的值 print(data.keys()) # 查看字典的key 2.对字典中的值进行排序 sorted(data.val ...