当前位置: 首页 > news >正文

SELINUX=enforcing时无法启动httpd服务的解决方案(semanage命令以及setroubleshoot-server插件的妙用)

一、问题描述:

当/etc/selinux/conf被要求必须是SELINUX=enforcing,不被允许使用setenforce 0宽松模式

我们启动httpd就会报错:

Job for httpd.service failed because the control process exited with error code.
See "systemctl status httpd.service" and "journalctl -xeu httpd.service" for details.

vim /etc/httpd/conf/httpd.conf文件,发现端口是82

二、强制执行(Enforcing)机制

由图可知,SELinux的工作模式有三种,enforcing是最严格的,不匹配就推出。

Linux强制执行(Enforcing)机制是一个非常重要的安全特性,它可以帮助系统管理员强制执行访问控制规则,从而保护系统资源的安全性。

1、什么是Linux强制执行机制

(1)Linux的强制执行机制是安全增强型Linux的一个组成部分,它可以强制执行SELinux策略中定义的访问控制规则,从而保护系统资源的安全性。

(2)如果一个进程想要访问某个资源,例如文件、目录或者端口,这个请求就需要通过SELinux的访问控制规则来验证(只有满足规则的请求才被允许,否则将被拒绝)。

(3)Linux的强制执行机制可以在系统层面强制执行SELinux的访问控制规则,确保系统资源的安全性。

2、Linux强执行机制的应用场景

(1)Linux的强制执行机制通常用于高安全性的系统(例如金融、等敏感领域):

通过使用强制执行机制,系统管理员可以强制执行特定的访问控制规则,从而限制对系统资源的访问。

(2)强制执行机制还可用于强制执行特定的安全策略(例如权限管理、文件保护和日志位置等方面):

这意味着管理员可以通过强制执行机制来保护系统资源中的重要数据和文件,确保他们不被未经授权的人员访问和修改。强制执行机制还可以帮助管理员监视系统活动,例如登录、文件读取和修改等情况。

浏览器访问的网址无非就是看协议、ip/域名、端口,协议是http,ip也设置了,那就从最简单的端口入手,先查 SELinux 允许的端口:

使用semanage port  -l  |  grep http #查 SELinux 允许的端口

3、修改SELinux策略

为了解决这个问题,需要用到semanage命令:

semanage是用于配置SELinux策略某些元素而无需修改或重新编译策略源的工具

3.1 安装semanage命令需要的软件包

1) yum  provides  semanage   #查询仓库中那个软件产生semanage   
2) yum  -y  install   policycoreutils-python-utils #由上一个命令可知有semanage命令的软件是policycoreutils-python-utils

3.2 安装setroubleshoot-server软件包

这样才能把SELinux消息发送至/var/log/messages文件中,甚至贴心地推荐适合的semanage语法来解决问题。

注:如果熟练掌握semanage命令的语法,就忽略这一步

1) yum -y install setroubleshoot-server
2) systemctl restart httpd
继续报错就可在/var/log/messages文件查看错误日志了
3)cat /var/log/messages | grep -i setrouble
从日志信息中推断,解决方法是在命令行输入“semanage port -a -t http_port_t -p tcp 82”这个命令
4)semanage port -a -t http_port_t -p tcp 82
5)systemctl restart httpd
systemctl enable httpd
此时应该是成功了注意:这些方案是在防火墙firewalld被stop服务或者卸载的前提下,不想卸载就设置为可信任:firewall-cmd --set-default-zone=trusted

然后在浏览器输入http://172.25.0.25:82验证效果

没有浏览器就在linux命令行使用curl http://172.25.0.25:82验证效果

相关文章:

  • 门禁-jenkins的构建状态同步到gitlab提交流水线
  • C++中的模板类的定义与使用
  • win11 通过防火墙设置-开通本地端口
  • Linux Tcpdump抓包入门
  • 汇编实现的操作系统
  • k8s二进制安装与部署
  • 05. Redis 持久化
  • 解决在cmd里下载的库,但IDLE还是显示不存在的问题
  • 多分类逻辑回归:一种基于概率的分类方法
  • 【JAVA系列】JAVA与C#中List分组、排序方法
  • 【c++游戏】harry potter(破解版)
  • 定制Jackson 的ObjectMapper(编程式),自定义json转换处理器来指定序列化和反序列化规则。
  • 心链2---前端开发(整合路由,搜索页面,用户信息页开发)
  • [windows系统安装/重装系统][step-4][番外篇-2]N卡驱动重装 |解决:开机几小时后电脑卡顿 | 后台自动运行了上千个Rundll32进程问题
  • FL Studio21中文版新特性!揭秘中文水果编曲神器
  • android 一些 utils
  • docker容器内的网络抓包
  • HTML-表单
  • IDEA常用插件整理
  • java概述
  • leetcode98. Validate Binary Search Tree
  • Mybatis初体验
  • Mysql5.6主从复制
  • oldjun 检测网站的经验
  • react-native 安卓真机环境搭建
  • SQL 难点解决:记录的引用
  • 从零开始在ubuntu上搭建node开发环境
  • 利用DataURL技术在网页上显示图片
  • 深入浏览器事件循环的本质
  • 无服务器化是企业 IT 架构的未来吗?
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 用quicker-worker.js轻松跑一个大数据遍历
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • 浅谈sql中的in与not in,exists与not exists的区别
  • #git 撤消对文件的更改
  • (007)XHTML文档之标题——h1~h6
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (附源码)计算机毕业设计ssm电影分享网站
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (一) springboot详细介绍
  • (一)VirtualBox安装增强功能
  • (原)Matlab的svmtrain和svmclassify
  • (转)fock函数详解
  • ****三次握手和四次挥手
  • .gitignore文件---让git自动忽略指定文件
  • .Net Core 中间件验签
  • .Net Winform开发笔记(一)
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET 指南:抽象化实现的基类
  • .NET 中的轻量级线程安全
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .net反编译的九款神器
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • @angular/cli项目构建--http(2)
  • [ IO.File ] FileSystemWatcher