【Linux】網絡安全管理:SELinux 和 防火墻聯合使用 | Redhat

本專欄文章持續更新,新增內容使用藍色表示。

往期相關內容

【Linux】權限管理詳解(三):SELinux安全性管理 | Redhat-CSDN博客

【Linux】網絡安全管理:Netfilter、nftables 與 Firewalld | Redhat_linux netfilter-CSDN博客

補充內容

SELinux 策略通過標記網絡端口嚴格過濾網絡流量,例如, 22/TCP 端口具有 ssh_port_t 標簽;HTTP 端口 80/TCP 和 443/TCP 具有 http_port_t 標簽。當某個進程希望偵聽端口時,SELinux 將檢查進程標簽和端口標簽是否對應。

補充:標準端口非標準端口。標準端口是Linux內部定義好的,比如 TCP 22,SSH 82,HTTP 80,HTTP 443,MySQL 3306等等。但是生產上一般不適用標準端口,所以需要添加非標準端口。

?端口標簽管理

操作命令格式
添加端口標簽semanage port -a -t <類型> -p <協議> <端口號>
修改端口標簽semanage port -m -t <類型> -p <協議> <端口號>
刪除端口標簽semanage port -d -p <協議> <端口號>
查詢所有端口semanage port -l
查詢特定端口semanage port -l | grep <端口號>
查看自定義修改semanage [對象類型] -l -C

參數解釋:

  • -a?:?Add,添加

  • -m?:?Modify,修改

  • -d?:?Delete,刪除

  • -l?:?List,列出

  • -t ?:?Type,指定 SELinux?類型?(如?http_port_t,?ssh_port_t)

  • -p?:?Protocol,指定協議?(tcp?或?udp)

示例:

# 允許 Apache(httpd) 監聽 TCP 8080 端口
semanage port -a -t http_port_t -p tcp 8080# 將 TCP 2222 端口改為?ssh?服務類型
semanage port -m -t ssh_port_t -p tcp 2222# 刪除 TCP 8080 端口的 SELinux 標簽
semanage port -d -p tcp 8080# 列出所有端口標簽,并可配合 grep 過濾
semanage port -l | grep http# 查詢指定端口被標記為何種類型
semanage port -l | grep 8080# 列出用戶自定義的端口策略修改
semanage port -l -C

【實驗】Web 服務器非標準配置訪問

1. 環境準備

操作系統:RHEL 8 或 9,或者社區分支 CentOS Stream / Rocky Linux / AlmaLinux。

軟件:Apache HTTP Server (httpd)、firewalld、policycoreutils-python-utils(提供 semanage 命令)。

預設狀態:SELinux 處于 Enforcing 模式,防火墻開啟。

2. 實驗場景與任務

你作為系統管理員,需要部署一個新的靜態網站。出于安全和管理考慮,你決定:

將網站文件放在非默認目錄 /srv/webapp/ 下,而不是默認的 /var/www/html/。

:推薦使用目錄 /home/用戶名/webapp 完成實驗,后續步驟中的 /srv/webapp/ 都替換為 /home/用戶名/webapp 即可,原因在【解決 SELinux 端口問題】處有解釋。

讓 Apache 監聽在非標準端口 8088?上,而不是默認的 80 端口。

任務是完成配置,并確保外部用戶可以通過瀏覽器訪問 http://<服務器IP>:8088。

3. 實驗步驟

3.1 基礎準備與環境搭建

注意:以下命令均以 root 用戶身份運行。

3.1.1 安裝 Apache Web 服務器
dnf install httpd -y

3.1.2 創建非默認網站目錄和測試頁面
mkdir /srv/webapp/
# 使用 echo 或 vim 創建簡單測試頁面
echo "Hello from My WebApp on Port 8080!" > /srv/webapp/index.html

此時嘗試本機訪問訪問會失敗(連接被拒絕)。

curl http://localhost:8088

3.2 配置 Apache

3.2.1 編輯 Apache 主配置文件
vim /etc/httpd/conf/httpd.conf

1)找到 Listen 將后面的端口從默認的 80,改為 8088。

Listen 8088

2)找到 DocumentRoot "/var/www/html"? 和與之對應的 <Directory "/var/www/html"> 塊,改為目標目錄。

DocumentRoot "/srv/webapp"<Directory "/srv/webapp">...
</Directory>

3.2.2 啟動并啟用 Apache 服務

此時檢查 httpd 狀態,發現未啟用,嘗試啟動并啟用 Apache 服務。

systemctl status httpd
systemctl enable httpdsystemctl start httpd        # 會失敗

此時 start 不能成功:

根據提示使用命令 journalctl -xeu httpd.service 查看日志信息,從錯誤提示中可以發現?Apache(httpd 進程)沒有被 SELinux 允許綁定到 8088 端口,所以未能成功開啟,所以等到解決完SELinux的端口問題之后,再嘗試啟動。

3.3 解決防火墻問題

3.3.1 檢查防火墻放行規則
firewall-cmd --list-all

發現不存在 8088?端口。

3.3.2 放行 TCP 8088端口
firewall-cmd --permanent --add-port=8088/tcp
firewall-cmd --reload
# 驗證端口是否已添加
firewall-cmd --list-all

3.4 解決 SELinux 問題

3.4.1 檢查 SELinux 端口策略
semanage port -l | grep http

發現沒有 8080 端口。

3.4.2 添加端口 8080 到 HTTP 端口列表中
semanage port -a -t http_port_t -p tcp 8088
# 再次驗證
semanage port -l | grep http

再次嘗試啟動?httpd,可以成功。

systemctl start httpd
systemctl status httpd

再次在本機上嘗試,雖然有內容("Test Page for the HTTP Server on ......"),但是不是設置的文件內容("Hello from My WebApp on Port 8080!")。

curl http://localhost:8088

這是因為被默認測試頁攔截了,禁用一下即可:

# 重命名該文件使其失效
mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bak# 然后重啟 Apache
systemctl restart httpd

再次訪問,結果為設置的測試頁面,只不過狀態碼是 403 禁止訪問,權限不足。

3.4.3 檢查目錄的 SELinux 上下文

比較默認目錄和目標目錄上下文區別。

ls -ldZ /var/www/html/
ls -ldZ /srv/webapp/

發現 /var/www/html/ 的上下文包含 httpd_sys_content_t,而 /srv/mywebapp/ 的上下文是var_t。

3.4.4 修正網站目錄的 SELinux 上下文

打標簽正常是使用以下方式:

semanage fcontext -a -t httpd_sys_content_t " /home/用戶名/webapp/(/.*)?"

但是由于根 (/) 目錄下的某些路徑有其默認的、受保護的 SELinux 上下文策略,所以此種方式有時會失敗或無效。

此處采用?semanage fcontext 的 -e (equal) 選項,讓 /srv/mywebapp 及其所有子文件和子目錄,都使用與 /var/www 完全相同的 SELinux 上下文類型規則。

# 給 /srv/mywebapp 目錄及其內容打上正確標簽
semanage fcontext -a -e /var/www /srv/webapp# 應用這條策略規則
restorecon -Rv /srv/webapp/# 驗證上下文是否已更改
ls -ldZ /srv/webapp/

?再次在本機上嘗試,結果成功。

curl http://localhost:8088

另一臺主機通過瀏覽器訪問 http://<IP>:8080,也同樣成功。

實驗結束。


如有問題或建議,歡迎在評論區中留言~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/921348.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/921348.shtml
英文地址,請注明出處:http://en.pswp.cn/news/921348.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微論-構建完整的智能環:具身智能系統的層級化架構探析

### **構建完整的智能環&#xff1a;具身智能系統的層級化架構探析**#### **引言&#xff1a;邁向與現實交互的智能**人工智能的發展正經歷一場從“虛擬”走向“現實”的范式遷移。具身智能&#xff0c;作為這一浪潮的核心&#xff0c;強調智能體必須擁有“身體”&#xff0c;并…

Spring如何解決循環依賴:深入理解三級緩存機制

Spring如何解決循環依賴&#xff1a;深入理解三級緩存機制 引言 在我們之前的文章中&#xff0c;我們探討了什么是循環依賴以及它帶來的問題。作為Java生態系統中最重要的框架之一&#xff0c;Spring Framework在處理循環依賴方面有著獨特而精妙的解決方案。今天&#xff0c;讓…

HTML第六課:表格展示

HTML第六課&#xff1a;表格展示學生花名冊學生花名冊 效果示列 代碼展示 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang"zh-CN"> <head><meta …

醫療行業API管理優化:使用QuickAPI提高數據安全與接口性能

背景與挑戰在醫療行業&#xff0c;特別是醫院信息系統&#xff08;HIS&#xff09;或其他相關部門&#xff08;如實驗室信息系統LIS、藥品管理系統等&#xff09;&#xff0c;數據安全和隱私保護一直是核心問題。然而&#xff0c;許多醫療機構仍然面臨著以下問題&#xff1a;數…

docker 部署RustDesk服務

最近要用到遠程桌面服務&#xff0c;網上的資料很豐富&#xff0c;但是和我的情況有點點區別&#xff0c;我是要搭一臺局域網使用的遠程桌面服務。 首先是源的問題&#xff1a; 很多都是不能用的&#xff0c;我用的docker桌面版&#xff0c; 其他的不重要&#xff0c;源地址&…

Kubernetes 中為 ZenTao 的 Apache 服務器添加請求體大小限制

本文將詳細介紹如何通過修改 Apache 配置模板并在 Kubernetes 中使用 ConfigMap,為 ZenTao 系統添加請求體大小限制(LimitRequestBody)。 背景介紹 在企業級項目管理軟件 ZenTao 的部署過程中,我們經常需要對 Apache 服務器進行安全加固。其中一個重要的安全措施是限制客戶…

綜述 | Agentic RL for LLM的最新進展與未來挑戰,idea滿滿

近年來&#xff0c;大語言模型&#xff08;LLMs&#xff09;和強化學習&#xff08;RL&#xff09;的融合正在徹底改變我們構建和部署AI系統的方式。早期的LLM強化學習&#xff08;LLM-RL&#xff09;主要關注如何通過人類反饋&#xff08;如RLHF&#xff09;讓模型生成更符合人…

【代碼隨想錄算法訓練營——Day3】鏈表——203.移除鏈表元素、707.設計鏈表、206.反轉鏈表

LeetCode題目鏈接 https://leetcode.cn/problems/remove-linked-list-elements/ https://leetcode.cn/problems/design-linked-list/ https://leetcode.cn/problems/reverse-linked-list/ 題解 203.移除鏈表元素 重要的是創立頭結點&#xff0c;這點在寫題前已經經受過提示。 注…

CI/CD流水線驅動自動化流程深度解析:選型、競品、成本與資源消耗

目錄 一、CI/CD是什么&#xff1f;核心定位與價值 二、選型與競品分析 (GitLab CI vs. Jenkins vs. GitHub Actions vs. GitLab CI) 三、部署成本分析 四、服務器資源消耗分析 五、給您的最終建議 一、CI/CD是什么&#xff1f;核心定位與價值 CI/CD&#xff08;持續集成/…

工廠辦公環境如何實現一臺服務器多人共享辦公

在現代化工廠的辦公環境中&#xff0c;如何通過一臺服務器實現多人共享辦公是一個既實用又高效的需求。這種方案不僅能降低硬件成本&#xff0c;還能簡化IT管理&#xff0c;提高數據安全性。在工廠辦公環境中&#xff0c;通過云飛云共享云桌面實現一臺服務器多人共享辦公&#…

系統性學習數據結構-第三講-棧和隊列

系統性學習數據結構-第三講-棧和隊列1. 棧1.1 棧和隊列1.2 棧的實現2. 隊列2.1 概念與結構2.2 隊列的實現3. 棧和隊列算法題3.1 [有效的括號](https://leetcode.cn/problems/valid-parentheses/description/)3.2 [用隊列實現棧](https://leetcode.cn/problems/implement-stack-…

硬件(三) 通信方式、串口通信

一、通信類型&#xff08;一&#xff09;并行通信多個比特通過并行線同時傳輸&#xff0c;傳輸速率快&#xff0c;但會大量占用芯片資源&#xff0c;在對資源敏感的場景下不太適用。&#xff08;二&#xff09;串行通信把數據拆成單個比特&#xff0c;按順序在一根總線上發送。…

vsan default storage policy 具體是什么策略?

vSAN Default Storage Policy&#xff08;vSAN 默認存儲策略&#xff09;是 VMware vSAN 部署后自動創建的基礎存儲策略&#xff0c;其核心目標是在“通用性”和“可靠性”之間取得平衡&#xff0c;為大多數虛擬機提供默認的數據保護和存儲服務&#xff0c;無需管理員手動創建策…

雨后陽光為何更強烈?

1. 降雨后的輻射是否會增強一般來說&#xff0c;降雨時天空多云&#xff0c;云層對太陽輻射有強烈削弱作用&#xff0c;所以降雨時的短波輻射顯著下降。但雨后&#xff0c;空氣濕度大、顆粒物被沖刷、天空轉晴時&#xff0c;大氣透明度會提高&#xff0c;短波輻射相較于降雨前往…

美團發布 | LongCat-Flash最全解讀,硬剛GPT-4.1、Kimi!

一、導讀 本報告解析了美團LongCat團隊推出的LongCat-Flash模型&#xff0c;一個擁有5600億參數的混合專家模型&#xff08;Mixture-of-Experts, MoE&#xff09;。面對大規模語言模型在計算資源和效率上的挑戰&#xff0c;LongCat-Flash旨在實現計算效率與高級智能體&#xf…

Ubuntu 18.04 上升級 gcc 到 9.4

18.04 默認的源中可能沒有 GCC-9.3 或更新版本&#xff0c;在終端運行以下命令來添加 PPA&#xff1a; sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update2.安裝 GCC 和 G sudo apt install gcc-9 g-93.更新替代版本 如果系統中安裝了多個 GCC 版本&#x…

.NET GcPDF V8.2 新版本:人工智能 PDF 處理

一、GcPDF 產品簡介 GcPDF&#xff08;GrapeCity Documents for PDF&#xff09;是葡萄城&#xff08;GrapeCity&#xff09;推出的一款功能強大的 .NET PDF 開發組件&#xff0c;旨在為開發人員提供高效、靈活的 PDF 文檔處理解決方案。無論是創建全新 PDF 文檔、編輯現有 PD…

解鎖桐果云零代碼數據平臺能力矩陣——賦能零售行業數字化轉型新動能

在零售行業從“規模擴張”轉向“精細運營”的當下&#xff0c;數據已成為優化庫存、精準營銷、防控風險的核心抓手。但多數零售企業仍面臨“數據雜亂難治理、分析建模門檻高、場景適配性不足”等難題&#xff0c;導致大量訂單、商品、交易數據沉睡&#xff0c;難以轉化為經營決…

rabbitmq 入門知識點

RabbitMQ 是一個 消息隊列中間件&#xff08;Message Broker&#xff09;&#xff0c;實現了 AMQP 協議&#xff0c;常用于服務之間解耦、異步處理、流量削峰等場景。 我幫你分成兩個部分來講&#xff1a;核心原理 常見用法。&#x1f9e9; 一、核心原理 RabbitMQ 的核心是 生…

點控云智能客服:以AI重塑服務體驗,登頂行業第一的革新之路

在數字化浪潮席卷全球的今天&#xff0c;客戶服務已成為企業核心競爭力之一。智能客服作為連接企業與客戶的重要橋梁&#xff0c;其效能與體驗直接關系到企業的品牌形象與市場口碑。近日&#xff0c;權威機構發布的《中國智能客服市場競爭力報告》顯示&#xff0c;點控云智能客…