七、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 file
    system_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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙开发-音视频

Media Kit 特点 一般场合的音视频处理&#xff0c;可以直接使用系统集成的Video组件&#xff0c;不过外观和功能自定义程度低Media kit&#xff1a;轻量媒体引擎&#xff0c;系统资源占用低支持音视频播放/录制&#xff0c;pipeline灵活拼装&#xff0c;插件化扩展source/demu…

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

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

vulhub之fastjson

fastjson 1.2.24 反序列化 RCE 漏洞(CVE-2017-18349) 漏洞简介 什么是json json全称是JavaScript object notation。即JavaScript对象标记法,使用键值对进行信息的存储。举个简单的例子如下: {"name":"BossFrank", "age":23, "isDevel…

Java语言程序设计 选填题知识点总结

第一章 javac.exe是JDK提供的编译器public static void main (String args[])是Java应用程序主类中正确的main方法Java源文件是由若干个书写形式互相独立的类组成的Java语言的名字是印度尼西亚一个盛产咖啡的岛名Java源文件中可以有一个或多个类Java源文件的扩展名是.java如果…

DevExpress控件 基本使用

DevExpress控件 一、DevExpress简介 1、所有编辑器的公共功能 全部都可以绑定数据&#xff1b; 全部都可以独立使用或用于由 Developer Express 提供的容器控件 (XtraGrid、XtraVerticalGrid、XtraTreeList 和 XtraBars) 内的内置编辑&#xff1b; 全部都使用相同的样式、外…

003 STM32基础、架构以及资料介绍——常识

注&#xff1a; 本笔记参考学习B站官方视频教程&#xff0c;免费公开交流&#xff0c;切莫商用。内容可能有误&#xff0c;具体以官方为准&#xff0c;也欢迎大家指出问题所在。 01什么是STM32&#xff08;宏观&#xff09; STM32属于一个微控制器&#xff0c;自带了各种常用通…

单片机_简单AI模型训练与部署__从0到0.9

IDE&#xff1a; CLion MCU&#xff1a; STM32F407VET6 一、导向 以求知为导向&#xff0c;从问题到寻求问题解决的方法&#xff0c;以兴趣驱动学习。 虽从0&#xff0c;但不到1&#xff0c;剩下的那一小步将由你迈出。本篇主要目的是体验完整的一次简单AI模型部署流程&#x…

2024最新YT-DLP使用demo网页端渲染

2024最新YT-DLP使用demo网页端渲染 前提摘要1.使用python的fastapi库和jinjia2库进行前端渲染2.代码实现1&#xff09;目录结构2&#xff09;代码style.cssindex.htmlresult.htmlmain.pyrun.py 3&#xff09;运行测试命令端运行 3.项目下载地址 前提摘要 2024最新python使用yt…

C0034.在Ubuntu中安装的Qt路径

Qt安装路径查询 在终端输入qmake -v如上中/usr/lib/x86_64-linux-gnu就是Qt的安装目录&#xff1b;

【STL】10.set与map的模拟实现

一、源码及框架分析 SGI-STL30版本源代码&#xff0c;map和set的源代码在map/set/stl_map.h/stl_set.h/stl_tree.h等及个头文件中。 map和set的实现结构框架核心部分截取出来如下&#xff1a; // set #ifndef __SGI_STL_INTERNAL_TREE_H #include <stl_tree.h> #endif …

AI模型---安装cuda与cuDNN

1.安装cuda 先打开cmd 输入nvidia-smi 查看显卡支持cuda对应的版本&#xff1a; 然后去英伟达官网下载cuda&#xff08;外网多刷几次&#xff09; https://developer.nvidia.com/cuda-toolkit-archive 注意对应版本 安装过程中如果显示如下图&#xff1a; 请安装visual Stu…

docker pull命令拉取镜像失败的解决方案

docker pull命令拉取镜像失败的解决方案 简介&#xff1a; docker pull命令拉取镜像失败的解决方案 docker pull命令拉取镜像失败的解决方案 一、执行docker pull命令&#xff0c;拉取镜像失败 报错信息&#xff1a;error pulling image configuration: Get https://produc…

Java开发经验——SpringRestTemplate常见错误

摘要 本文分析了在使用Spring框架的RestTemplate发送表单请求时遇到的常见错误。主要问题在于将表单参数错误地以JSON格式提交&#xff0c;导致服务器无法正确解析参数。文章提供了错误案例的分析&#xff0c;并提出了修正方法。 1. 表单参数类型是MultiValueMap RestControl…

《生成式 AI》课程 作业6 大语言模型(LLM)的训练微调 Fine Tuning -- part1

资料来自李宏毅老师《生成式 AI》课程&#xff0c;如有侵权请通知下线 Introduction to Generative AI 2024 Spring 该文档主要介绍了国立台湾大学&#xff08;NTU&#xff09;2024 年春季 “生成式人工智能&#xff08;GenAI&#xff09;” 课程的作业 5&#xff08;GenAI HW…

tcpdump抓包 wireShark

TCPdump抓包工具介绍 TCPdump&#xff0c;全称dump the traffic on anetwork&#xff0c;是一个运行在linux平台可以根据使用者需求对网络上传输的数据包进行捕获的抓包工具。 tcpdump可以支持的功能: 1、在Linux平台将网络中传输的数据包全部捕获过来进行分析 2、支持网络层…

利用Hooka开源的多种功能shellcode加载器实现快速免杀火绒,静态360+360杀毒,微步查杀1,vt查杀7(教程)

免责声明: 本文旨在提供有关特定漏洞的深入信息&#xff0c;帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步&#xff0c;未经授权访问系统、网络或应用程序&#xff0c;可能会导致法律责任或严重后果。因此&#xff0c;作者不对读者基于…

MyBatis中特殊SQL的执行

目录 1.模糊查询 2.批量删除 3.动态设置表名 4.添加功能获取自增的主键 1.模糊查询 List<User> getUserByLike(Param("username") String username); <select id"getUserByLike" resultType"com.atguigu.mybatis.pojo.User">&…

九、FOC原理详解

1、FOC简介 FOC&#xff08;field-oriented control&#xff09;为磁场定向控制&#xff0c;又称为矢量控制&#xff08;vectorcontrol&#xff09;&#xff0c;是目前无刷直流电机&#xff08;BLDC&#xff09;和永磁同步电机&#xff08;PMSM&#xff09;高效控制的最佳选择…

selinux及防火墙

selinux说明 SELinux 是 Security-Enhanced Linux 的缩写&#xff0c;意思是安全强化的 linux 。 SELinux 主要由美国国家安全局&#xff08; NSA &#xff09;开发&#xff0c;当初开发的目的是为了避免资源的误用。 httpd进程标签&#xff08;/usr/share/nginx/html &#…

Flink学习连载第二篇-使用flink编写WordCount(多种情况演示)

使用Flink编写代码&#xff0c;步骤非常固定&#xff0c;大概分为以下几步&#xff0c;只要牢牢抓住步骤&#xff0c;基本轻松拿下&#xff1a; 1. env-准备环境 2. source-加载数据 3. transformation-数据处理转换 4. sink-数据输出 5. execute-执行 DataStream API开发 //n…