一、問題描述:
當/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驗證效果