文章目录

  • 1、运行模式
  • 2、查看安全上下文
  • 3、启动、关闭、查看SeLinux
  • 4、修改SeLinux的模式
    • (1)通过命令修改
    • (2)配置文件修改
  • 5、修改安全上下文案例,以HTTP服务为例

SeLinux是Security-Enhanced Linux的缩写,意思是安全强化的Linux;SeLinux由美国国家安全局开发,是为了避免资源误用;资源访问是通过程序进行的,如果将/var/www/html权限设置为777,那么代表所有程序都可以访问该目录,此时启动www服务软件,那么该软件触发的进程将写入该目录,而该进程是对整个物联网提供服务的,NSA为了控制这方面权限与进程的问题,就使用Linux作为目标来研究,最终将研究结果整合到内核中就形成了SeLinux;
SeLinux是对程序、文件等权限设置依据的一个内核模块,由于启动网络服务也是程序,因此也是能够控制网络服务能否访问系统资源的一道关卡;

  • 传统的文件权限与账户关系:DAC 自主访问控制 Discretionary Access Control
    当某个进程要对文件进行访问时,系统就会根据该进程的所有者/用户组,并比较文件的权限,若通过权限检查,就可以访问到该目录文件,对root账户无效;

  • 以策略规则制定特定的程序读取文件:MAC 强制访问控制 Mandatory Access Control
    MAC可以针对特定的进程与特定的文件资源来进行权限控制,登录账户即使为root,在使用不同的进程时,获取到的权限也不一定是root权限,而需要查看此进程的权限设定,此时就可以针对不同用户对资源的访问控制,每个文件资源有针对进程可获取的权限,单个系统的进程非常多,此时SeLinux提供了一些默认的策略,并在该策略内提供了多个规则;

1、运行模式


SeLinux是通过MAC的方式来控制管理进程,它控制的主体是进程,而目标是该进程是否能够读取的文件资源;

  • 主体 subject:即进程;
  • 目标 object:被主体访问的资源,可以是文件、目录、端口等;
  • 策略 policy:由于进程与文件数量庞大,因此SeLinux会依据某些服务来制定基本的访问安全策略,这些策略还会有详细的规则来指定不同的服务开放某些资源的访问与否,目前主要的策略有如下几点:
    • targeted - 针对网络服务限制较多,针对本机限制较少,是默认的策略;
    • strict:完整的SeLinux限制,限制方面比较严格;
  • 安全上下文 security context:主体能不能访问目标除了策略指定外,主体与目标的安全上下文必须一致才能够访问;

最终文件的成功访问还是与文件系统的rwx权限设置有关;

2、查看安全上下文


[root@localhost ~]# ls -Z
unconfined_u:object_r:admin_home_t:s0 111.txt
身份标识 : 角色 : 类型 : 灵敏度
unconfined_u:object_r:named_zone_t:s0 1D
unconfined_u:object_r:admin_home_t:s0 66c221be-6ab2-ef53-1589-fe16877914f4.pl
unconfined_u:object_r:admin_home_t:s0 66c221be-6ab2-ef53-1589-fe16877914f4.shsystem_u:object_r:admin_home_t:s0 anaconda-ks.cfg
unconfined_u:object_r:admin_home_t:s0 Desktop
unconfined_u:object_r:admin_home_t:s0 Documents
unconfined_u:object_r:admin_home_t:s0 Downloadssystem_u:object_r:admin_home_t:s0 initial-setup-ks.cfg
unconfined_u:object_r:admin_home_t:s0 Music
unconfined_u:object_r:admin_home_t:s0 Pictures
unconfined_u:object_r:admin_home_t:s0 Public
unconfined_u:object_r:admin_home_t:s0 Templates
unconfined_u:object_r:admin_home_t:s0 test
unconfined_u:object_r:admin_home_t:s0 Videos
  • 身份标识 identify:相当于账号方面的身份标识,主要有三种常见类型:

    • root:表示root的账号身份;
    • system_u:表示程序方面的标识,即进程;
    • unconfined_u:代表一般用户相关的身份;
  • 角色 role:通过角色字段,可知道这个数据是属于程序、文件资源还是代表用户,一般角色有:
    • object_r:代表文件或目录等文件资源;
    • system_r:代表进程;
  • 类型 type:在默认把的targeted策略中,identity与role字段基本上是不重要的,重要的是类型字段,而类型字段在文件和进程中的定义是不同的,如下:
    • type:文件资源称为类型;
    • domain:进程称为域;
    • domain需要与type搭配,则该程序才能够顺利读取到文件资源;
  • 灵敏度:与MLS和MCS相关,一般用s0、s1、s2来命名,数字代表灵敏度分级,数字越大,令敏度越高;
[root@localhost ~]# ps -Zaux | grep httpd
system_u:system_r:httpd_t:s0    root        3903  0.3  0.1 280348 13732 ?        Ss   10:31   0:00 /usr/sbin/httpd -DFOREGROUND
身份标识 : 角色 : 域 : 灵敏度
[root@localhost ~]# ll -Zd /var/www/html            /文件目录
drwxr-xr-x. 2 root root system_u:object_r:httpd_sys_content_t:s0 6 Dec  2  2019 /var/www/html
[root@localhost ~]# ll -Zd /usr/sbin/httpd         /服务进程
-rwxr-xr-x. 1 root root system_u:object_r:httpd_exec_t:s0 580008 Dec  2  2019 /usr/sbin/httpd

上面两个文件的角色都是object_r;代表都是文件,/usr/sbin/httpd属于httpd_exec_t类型,而/var/www/html属于httpd_sys_content_t类型;

服务访问过程如下:

  1. 首先触发具有httpd_exec_t这个类型的/usr/sbin/httpd这个可执行文件;
  2. 该文件的类型会让这个文件所造成的主体进程具有httpd这个域,我们的策略已经针对这个域制定了许多规则,其中包括这个域可以读取的目标资源类型;
  3. 由于httpd domain被设置为可以读取httpd_sys_content_t这个类型的目标文件,因此httpd进程就能够读取在/var/www/html目录下面的文件了;
  4. 最终能否读取到/var/www/html目录下的数据,还需要取决于是否满足rwx权限;

3、启动、关闭、查看SeLinux


SeLinux拥有三种模式:

  • enforcing 强制模式:SeLinux正在运行,限制domain/type;
  • permissive 宽容模式:SeLinux正在运行,只产生告警,不会限制domain/type;
  • disabled 关闭:关闭SeLinux;

查看目前SeLinux的运行状态

[root@localhost ~]# getenforce
Permissive

查看SeLinux目前使用的策略

[root@localhost ~]# sestatus
SELinux status:                 enabled             /是否启用SeLinux;
SELinuxfs mount:                /sys/fs/selinux     /文件数据挂载点;
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted            /目前策略为targeted;
Current mode:                   permissive
Mode from config file:          permissive
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      31

查看SeLinux的策略

[root@localhost ~]# vim /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=permissive
# SELINUXTYPE= can take one of these three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

4、修改SeLinux的模式

(1)通过命令修改

[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive
[root@localhost ~]# setenforce 1
[root@localhost ~]# getenforce
Enforcing

(2)配置文件修改

[root@localhost ~]# vim /etc/selinux/config
SELINUX=permissive
:wq

修改策略之后需要重新启动,由enforcing/permissive改为disabled,或由disabled改为permissive/enforcing必须要重新启动;

附:一次性关闭SElinux命令:

[root@localhost ~]# setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
#sed为shell脚本命令,具体细节后续发布,此处不做赘述

5、修改安全上下文案例,以HTTP服务为例


配置规范
chcon [-R ] [-t type] [-u user] [-r role] 文件路径

  • -R 连同该目录下的子目录同时修改
  • -t 类型
  • -u 身份识别
  • -r 角色
[root@localhost ~]# cat /etc/httpd/conf.d/vhost.conf
listen 8888
<directory /www>allowoverride nonerequire all granted
</directory>
<virtualhost 192.168.39.139:8888>servername 192.168.39.139documentroot /www/139
</virtualhost>
[root@localhost ~]# mkdir -pv /www/139/
[root@localhost ~]# echo this is 8888 > /www/139/index.html
[root@localhost ~]# firewall-cmd --add-service=http
success
[root@localhost ~]# firewall-cmd --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: ens160sources: services: cockpit dhcpv6-client http sshports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules:
[root@localhost ~]# semanage port -l | grep -w 80
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
[root@localhost ~]# semanage port -a -t http_port_t -p tcp 8888
[root@localhost ~]# semanage port -l | grep -w 8888
http_port_t                    tcp      8888, 80, 81, 443, 488, 8008, 8009, 8443, 9000
[root@localhost ~]# systemctl restart httpd[root@localhost ~]# ls -Zd /www/139/
unconfined_u:object_r:default_t:s0 /www/139/    httpd_t
[root@localhost ~]# ls -Zd /www/139/index.html
unconfined_u:object_r:default_t:s0 /www/139/index.html[root@localhost ~]# chcon -t httpd_exec_t /www/139/index.html
[root@localhost ~]# ls -Zd /www/139/
unconfined_u:object_r:default_t:s0 /www/139/
[root@localhost ~]# ls -Zd /www/139/index.html
unconfined_u:object_r:httpd_exec_t:s0 /www/139/index.html[root@localhost ~]# curl http://192.168.39.129:8888
this is 8888

Linux ❀ RHCE自研教学笔记 - Redhat 8.2 SeLinux服务教研笔记相关推荐

  1. Linux ❀ RHCE自研教学笔记 - Redhat 8.2 Nmcli服务教研笔记

    文章目录 1.安装服务 2.General 常规选项 3.Networking 网络控制 4.Radio 无线限制传输控制 5.Connection 连接管理 show 查看 up 激活 down 停 ...

  2. redhat 5.4 启动服务

    转自:http://i-business.blog.sohu.com/137873879.html 和 http://www.jb51.net/os/RedHat/1186.html 做为一个系统管理 ...

  3. Linux系统管理_附加控制权限-Redhat Enterprise 5

    Linux系统管理_附加控制权限-Redhat Enterprise 5 附加权限控制 即特殊权限: -叠加于权限位的u.g.o之上 -用来传递程序执行身份.限制目录写入权 类别 字符标示 数字标示 ...

  4. Linux 常用服务搭建笔记(精简笔记)

    Linux 常用服务搭建笔记(精简笔记) 阅读目录 部署DNS实现解析 部署DNS主从同步 部署DNS缓存服务 部署DNS加密同步 部署DNS分离解析 部署DNS负载均衡 配置DHCP自动分配IP 配 ...

  5. linux安装SecureCRT安装教学

    linux安装SecureCRT安装教学 列如:Anolis OS8.6 安装SecureCRT8.0 目录 系列文章目录 linux安装SecureCRT安装教学教学 前言 一.securecrt安 ...

  6. Linux各种发行版本概述(Redhat系 | Debian系)

    Linux,最早由Linus Benedict Torvalds在1991年开始编写.在这之前,Richard Stallman创建了Free Software Foundation(FSF)组织以及 ...

  7. 2.3.5 linux软件管理 :debian和RedHat体系常用软件安装: axel 安装

    2.3.5 linux软件管理 :debian和RedHat体系常用软件安装: axel 安装 debian体系 apt-get install axel axel -an 6 <downloa ...

  8. Linux学习笔记010---CentOS7下安装FTP服务

    JAVA技术交流QQ群:170933152 按照这个就可以 1.安装vsftp 1.1.安装vsftp,测试安装的vsftpd的版本是:vsftpd.x86_64 0:3.0.2-11.el7_2 y ...

  9. 学计算机理论课要记笔记吗,学生应该用笔记本电脑记笔记吗?

    几年前的九月,我照例给全日制教育技术学专业一年级的硕士研究生讲授<教育技术学基本理论研究>课程. 开学第一次上课,当我走进教室开始讲课过程中,我吃惊地发现,所有的同学都使用纸笔记笔记,并且 ...

最新文章

  1. MFCard:易用的信用卡支付集成类库
  2. 源码安装vlc播放器
  3. [CQOI2014]和谐矩阵
  4. SpringBoot 2.x ShardingSphere分库分表实战
  5. matlab 合并相同元素,matlab中删除相邻相同元素
  6. POJ3254 Corn Fields(状态压缩DP)
  7. VUE 注册验证码页面实例
  8. ios 图片合成 处理合成模糊 水印 模板图片合成
  9. 使用BackTrack4清除/修改Windows用户密码
  10. winform直接控制云台_Snoppa Vmate掌上防抖云台相机深度评测:日常视频轻松直出...
  11. 怎么把照片背景换掉?如何给照片换底色?
  12. 2021SC@SDUSC Zxing开源代码(九)Data Matrix二维码(二)
  13. 计算机rankeq函数,Excel中的rank函数与rank.eq函数有什么区别
  14. AI巨头宝座易主,百度击败谷歌亚马逊,势不可挡!
  15. 掌握微信小程序 this 指向,轻松编写高质量代码
  16. 全网最全!中国计算机学会推荐国际学术会议和期刊汇总
  17. 开课吧T31项目第14天
  18. 计算机启动后桌面图标都没有了,我的电脑开机后桌面上的图标都没了怎么办?...
  19. 约定求和、Kronecker符号和Levi-Civita符号
  20. IEEE 802标准总结

热门文章

  1. C连载23-输入输出中星号的用法
  2. 大数据挖掘技术之DM经典模型
  3. BZOJ第一页刷题计划
  4. 米拓CMS去除(修改)版权信息方法
  5. Vage:高级DBA的突破之路
  6. 小程序样式text:after不起作用。在开发者工具看不到样式
  7. 三星android的one ui,三星one ui对比国产安卓定制ui达到怎样的水平?
  8. 【Python】梯度下降法求解一元二次函数的波谷
  9. 不会盲打的程序员和不懂技术的 CTO
  10. 百胜中国指定肯德基、必胜客和塔可贝尔餐厅限时推出植物肉汉堡