七、SElinux

一、SElinux简介

  • SELinux是Security-Enhanced Linux的缩写,意思是安全强化的linux
  • SELinux 主要由美国国家安全局(NSA)开发,当初开发的目的是为了避免资源的误用·
  • 传统的访问控制在我们开启权限后,系统进程可以直接访问当我们对权限设置不严谨时,这种访问方式就是系统的安全漏洞

在开启SElinux后

  • 会对进程本身部署安全上下文
  • 会对文件部署安全上下文
  • 会对服务使用端口进行限制
  • 会对程序本身的不安全功能做限制

二、SElinux的工作原理

1.SElinux的工作方法

  • SELinux是通过MAC的方式来控制管理进程,它控制的主体是进程,而目标则是该进程能否读取的文件资源
  • 主体(subject):就是进程
  • 目标(object):被主体访问的资源,可以是文件、目录、端口等。
  • 策略(policy):由于进程与文件数量庞大,因此SELinux会依据某些服务来制定基本的访问安全策略
  • targeted:针对网络服务限制较多,针对本机限制较少,是默认的策略
  • strict:完整的SELinux限制,限制方面较为严格。

2.SElinux的安全上下文

安全上下文(security context):

  • 主体能不能访问目标除了策略指定外,主体与目标的安全上下文必须一致才能够顺利访问。        
  • 最终文件的成功访问还是与文件系统的rwx权限设置有关
  • 安全上下文的查看
[root@nfs-server ftp]# ls -Z
unconfined_u:object_r:public_content_t:s0 filesystem_u:object_r:public_content_t:s0 pub
[root@nfs-server ftp]# ps axZ | grep vsftpd
system_u:system_r:ftpd_t:s0-s0:c0.c1023 1467 ?   Ss     0:00 /usr/sbin/vsftpd /etc/vsftp/vsftpd.conf

Note:

安全上下文用冒号分为四个字段:Identify:role:type:

  • 身份标识(ldentify):相当于账号方面的身份标识,主要有以下三种常见的类型:
    • root:表示root的账号身份        
    • system_u:表示程序方面的标识,通常就是进程
    • unconfined_u:代表的是一般用户账号相关的身份
  • 角色(role):通过角色字段,可知道这个数据是属于程序、文件资源还是代表用户。一般角色有:
    • object_r:代表的是文件或目录等文件资源
    • system_r:代表的是进程
  • 类型(type):在默认的targeted策略中,Identify与role字段基本上是不重要的,重要的在于这个类型字段。而类型字段在文件与进程的定义不太相同,分别是:
    • type :在文件资源上面称为类型
    • domain:在主体程序中则称为域
  • domain需要与type搭配,则该程序才能够顺利读取文件资源
  • 代表灵敏度,一般用s0、s1、s2来命名,数字代表灵敏度的分级。数值越大、灵敏度越高

三、对于SElinux的管理及优化

1.SElinux的工作模式

SElinux有三种工作模式:

  • enforcing:强制模式,开始限制domain/type。
  • permissive:宽容模式,仅会有警告信息并不会实际限制domain/type的访问。
  • disabled:关闭,SELinux并没有实际运行。

2.对于SElinux状态管理

a.查看SElinux当前状态

[root@30 ~]# getenforce
Enforcing

b.临时更改SElinux的工作模式

[root@30 ~]# setenforce 0|1    #只有在SElinux激活模式下才可以使用,不能用来开启或者关闭SElinus

Note 

0 表示宽容模式

1 表示强制模式

c.永久更改SElinux状态

[root@30 ~]# grubby --update-kernel ALL --args selinux=0
[root@30 ~]# grubby --update-kernel ALL --remove-args selinux#永久更改SElinux的状态需要在更改后重启系统才能生效

d.重启SElinux

系统在开启SElinux后,重启系统SElinux的所有内容不会有任何变化,如果需要刷新SElinux需要执行以下操作:

[root@30 ~]#touch /.autorelable

3.管理文件的安全上下文

a.临时更改文件的安全上下文

chcon [-R] [-ttype] [-u user] [-r role] 文件
-R:连同该目录下的子目录也同时修改:
-t:后面接安全上下文的类型字段;
-u:后面接身份识别:
-r:后面接角色
chcon [-R] --reference=模板 目标文件    #将文件的安全上下文按照范例文件修改

b.永久修改安全上下文

semanager fcontext [-a|-d] [-t type] [-s user] [-r range] 文件
-l:列出所有记录-a:添加记录-m:修改记录-d:删除记录
-t:添加的类型
-p:指定添加的端口是tcp或udp协议的,port子命令下使用
-e:目标路径参考原路径的上下文类型,fcontext子命令下使用
-s:后面接身份识别
-r:后面接角色

Note 

系统将每个目录的默认SElinux type类型记录在/etc/selinux/targeted/contexts/目录内

用semanage这个命令的功能来查询:

semanage {login|user|port|interface|fcontext|translation} -l

在使用semanage更改完毕后必须要刷新否则不生效

c.刷新安全上下文

restorecon [-Rv] 文件或目录
-R:连同子目录一起修改
-v:将过程显示到屏幕上
[root@nfs-server mnt]# semanage fcontxt -l | grep /var/ftp
semanage: error: argument subcommand: invalid choice: 'fcontxt' (choose from 'import', 'export', 'login', 'user', 'port', 'ibpkey', 'ibendport', 'interface', 'module', 'node', 'fcontext', 'boolean', 'permissive', 'dontaudit')
[root@nfs-server mnt]# semanage fcontext -l | grep /var/ftp
/var/ftp(/.*)?                                     all files          system_u:object_r:public_content_t:s0 
/var/ftp/bin(/.*)?                                 all files          system_u:object_r:bin_t:s0 
/var/ftp/etc(/.*)?                                 all files          system_u:object_r:etc_t:s0 
/var/ftp/lib(/.*)?                                 all files          system_u:object_r:lib_t:s0 
/var/ftp/lib/ld[^/]*\.so(\.[^/]*)*                 regular file       system_u:object_r:ld_so_t:s0 
[root@nfs-server mnt]# semanage fcontext -a -t public_content_t '/mnt/senfile(/.*)?'
[root@nfs-server mnt]# 
[root@nfs-server mnt]# semanage fcontext -l | grep senfile
/mnt/senfile(/.*)?                                 all files          system_u:object_r:public_content_t:s0 
[root@nfs-server mnt]# ls -Z /mnt/senfile
unconfined_u:object_r:public_content_t:s0 /mnt/senfile
[root@nfs-server mnt]# restorecon -RvvF /mnt/senfile
Relabeled /mnt/senfile from unconfined_u:object_r:public_content_t:s0 to system_u:object_r:public_content_t:s0
[root@nfs-server mnt]# 

4.selinux对linux服务的影响

a.服务功能的影响

查看sebool值:

[root@nfs-server ~]#getsebool -a | grep 服务名称

修改sebool值:

[root@nfs-server ~]#setsebool -P <bool类型> <0|1>
-P:表示永久生效
0:表示功能关闭
1:表示功能开启

具体操作步骤:

[root@nfs-server ~]# dnf install vsftpd -y
[root@nfs-server ~]# vim /etc/vsftpd/vsftpd.conf 
[root@nfs-server ~]# systemctl enable --now vsftpd
Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service → /usr/lib/systemd/system/vsftpd.service.

[root@nfs-server ~]# getsebool -a | grep ftp
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_home_dir --> off
[root@nfs-server ~]# setsebool -P ftpd_anon_write on
[root@nfs-server ~]# getsebool -a | grep ftp
ftpd_anon_write --> on
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_home_dir --> off

b.服务的端口影响

查看服务被允许使用的端口:

[root@nfs-server ~]# semanage port -l | grep 服务

根据需求更改被允许使用的端口:

[root@nfs-server ~]# semanage port -a -t 服务下面的端口 -p 服务 xx(端口号) 
[root@nfs-server ~]# semanage port -l | grep http
http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010
http_cache_port_t              udp      3130
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988
pegasus_https_port_t           tcp      5989
[root@nfs-server ~]# semanage port -a -t http_port_t -p tcp 6868
[root@nfs-server ~]# semanage port -l | grep http
http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010
http_cache_port_t              udp      3130
http_port_t                    tcp      6868, 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988
pegasus_https_port_t           tcp      5989

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/60683.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序25- iconfont 字体图标的使用

项目中使用到图标&#xff0c;一般由公司设计进行设计&#xff0c;设计好后上传到阿里巴巴矢量图标库 日常开发过程中&#xff0c;也可以通过 iconfont 图标库下载使用自带的图标 补充&#xff1a;使用 iconfont 图标库报错&#xff1a;Failed to load font 操作步骤&#xff…

鸢尾花植物的结构认识和Python中scikit-learn工具包的安装

鸢尾花植物的结构认识和Python中scikit-learn工具包的安装 鸢尾花植物的结构认识和Python中scikit-learn工具包的安装 鸢尾花植物的结构认识和Python中scikit-learn工具包的安装一、鸢尾花的认识1.1 对花结构和功能认识1.2、鸢尾花认识1.2.1 鸢尾花种类1.2.2 鸢尾花结构 二. Py…

Unity3D 截图

使用 Unity3D 自带的截图接口&#xff0c;制作截图工具。 截图 有时候我们想对 Unity 的窗口进行截图&#xff0c;如果直接使用一些截图工具&#xff0c;很难截取到一张完整分辨率的图片&#xff08;例如&#xff0c;我们想要截取一张 1920 * 1080 的图片&#xff09;。 其实…

Mysql的加锁情况详解

最近在复习mysql的知识点&#xff0c;像索引、优化、主从复制这些很容易就激活了脑海里尘封的知识&#xff0c;但是在mysql锁的这一块真的是忘的一干二净&#xff0c;一点映像都没有&#xff0c;感觉也有点太难理解了&#xff0c;但是还是想把这块给啃下来&#xff0c;于是想通…

丹摩征文活动 | AI创新之路,DAMODEL助你一臂之力GPU

目录 前言—— DAMODEL&#xff08;丹摩智算&#xff09; 算力服务 直观的感受算力提供商的强大​ 平台功能介绍​ 镜像选择 云磁盘创建 总结 前言—— 只需轻点鼠标,开发者便可拥有属于自己的AI计算王国 - 从丰富的GPU实例选择,到高性能的云磁盘,再到预配置的深度学习…

Linux之日志

日志 在编写网络服务器, 各种软件时, 程序一定要打印一些日志信息. 1. 可以向显示器打印, 也可以向文件中写入. 2. 日志是软件在运行时记录的流水账, 用于排查服务进程挂掉的信息. 其中必须要有的是: 日志等级, 时间, 日志内容.可选的是文件名, 代码行数, 进程pid 等 日志…

IDEA指定Maven的settings不生效问题处理

文章目录 一、问题描述二、问题分析三、问题解决 一、问题描述 在Idea中手动指定了maven的settings配置文件&#xff0c;但是一直没生效。 如下图&#xff1a;设置加载settings-aliyun.xml文件&#xff0c;但是最后发现还是在加载settings.xml文件 二、问题分析 ‌在Intel…

【软考】数据库

1. 数据模型 1.1 概念数据模型 概念数据模型一般用 E-R 图表示&#xff0c;常用术语如下&#xff1a; 实体&#xff1a;客观存在的事物&#xff0c;如&#xff1a;一个单位、一个职工、一个部门、一个项目。属性&#xff1a;学生实体有学号、姓名、出生日期等属性。码&#…

oneplus6线刷、trwp、magisk(apatch)、LSPosed、Shamiko、Hide My Applist

oneplus6线刷android10.0.1 oneplus6线刷包(官方android10.0.1)下载、线刷教程&#xff1a; OnePlus6-brick-enchilada_22_K_52_210716_repack-HOS-10_0_11-zip 启用开发者模式 设置 / 连续点击6次版本号 : 启用开发者模式设置/开发者模式/{打开 usb调试, 打开 网络adb调试,…

ByteBuffer模拟拆包输出消息字符串

以下代码模拟网络编程中的粘包现象&#xff0c;用\n进行分割消息块 源码 public static void main(String[] args) {ByteBuffer byteBuffer1 ByteBuffer.allocate(60) ;byteBuffer1.put("Hello World\nWhat is you name?\nI am Licky!\nHo".getBytes());splice(byt…

成都睿明智科技有限公司怎么样可靠不?

在这个日新月异的数字时代&#xff0c;电商行业如同一股不可阻挡的洪流&#xff0c;席卷着每一个消费者的生活。而抖音&#xff0c;作为短视频与电商完美融合的典范&#xff0c;更是为无数商家开辟了一片全新的蓝海。在这片充满机遇与挑战的海洋中&#xff0c;成都睿明智科技有…

【计算机网络】多路转接之epoll

epoll也是一种linux中的多路转接方案(epoll也是只负责IO过程中的"等") 一、epoll相关接口的使用 1.epoll_create int epoll_create(int size); ​功能&#xff1a;创建一个epoll模型 ① int size&#xff1a;没意义了 >0就行 返回值&#xff1a;返回一个文件…

Linux高阶——1117—TCP客户端服务端

目录 1、sock.h socket常用函数 网络初始化函数 首次响应函数 测试IO处理函数 获取时间函数 总代码 2、sock.c SOCKET() ACCEPT()——服务端使用这个函数等待客户端连接 CONNECT()——客户端使用这个函数连接服务端 BIND()——一般只有服务端使用 LISTEN()——服务端…

【SVN和GIT】版本控制系统详细下载使用教程

文章目录 ** 参考文章一、什么是SVN和GIT二、软件使用介绍1 SVN安装1.1 服务端SVN下载地址1.2 客户端SVN下载地址2 SVN使用2.1 服务端SVN基础使用2.1.1 创建存储库和用户成员2.1.2 为存储库添加访问人员2.2 客户端SVN基础使用2.2.1 在本地下载库中的内容2.2.2 版本文件操作--更…

【含文档】基于django+Vue的荣誉证书管理系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 主要技术: django,mysql,vue 2.视频演示地址 3.功能 系统定义了三个角色&#xff1a;管理员和学生和教师。 管理员进…

ros2学习日记_241124_ros相关链接

前言 提醒&#xff1a; 文章内容为方便作者自己后日复习与查阅而进行的书写与发布&#xff0c;其中引用内容都会使用链接表明出处&#xff08;如有侵权问题&#xff0c;请及时联系&#xff09;。 其中内容多为一次书写&#xff0c;缺少检查与订正&#xff0c;如有问题或其他拓展…

AIGC-------AIGC在社交媒体内容生成中的应用

AIGC在社交媒体内容生成中的应用 引言 随着人工智能生成内容&#xff08;AIGC&#xff09;的快速发展&#xff0c;社交媒体平台上的内容创作方式发生了巨大变化。AIGC使得内容创作的门槛大大降低&#xff0c;从而让更多的人能够参与到社交媒体内容的创作中&#xff0c;同时也使…

GWO-SVMD分解 | Matlab实现GWO-SVMD灰狼算法优化逐次变分模态分解

GWO-SVMD分解 | Matlab实现GWO-SVMD灰狼算法优化逐次变分模态分解 目录 GWO-SVMD分解 | Matlab实现GWO-SVMD灰狼算法优化逐次变分模态分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 GWO-SVMD灰狼算法优化逐次变分模态分解 内有15种用以优化svmd的适应度函数&#…

意识与人工智能:德国语言学家Joscha Bach的“梦境意识”理论探讨

引言 在人类的科学探索中&#xff0c;意识无疑是最深奥的未解之谜之一。尽管我们可以清晰地感知到自己的存在和思维&#xff0c;但意识究竟是什么&#xff1f;它从何而来&#xff1f;是否是物理世界的产物&#xff1f;以及人工智能是否能拥有意识&#xff1f;这些问题一直困扰…

Android Binder技术概览

Android中的Binder是一种基于远程过程调用&#xff08;Remote Procedure Call, RPC&#xff09;的轻量级通信机制&#xff0c;核心用于 Android 系统中的进程间通信&#xff08;Inter-Process Communication, IPC&#xff09;。Binder 是 Android 系统中不可或缺的一部分&#…