解決SELinux阻止Nginx訪問服務
阿新 • • 發佈:2020-07-02
在使用 yum 安裝 nginx 後可能會出現配置完成後卻無法訪問的問題,檢視 audit.log 會發現類似於以下的錯誤資訊
出現此問題的原因是 SELinux 基於最小許可權原則預設攔截了 Nginx 的請求,SELinux 是 Linux 的安全子系統,提供更安全的訪問控制,許多運維人員嫌麻煩可能會直接關閉此元件,但是治標不治本,本文演示在啟用 SELinux 基礎上完成對 Nginx 請求的放行。
- 首先我們需要確認 SELinux 的執行狀態,當然出現此問題肯定是執行中。
[[email protected] local]# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 31
臨時關閉 SELinux:setenforce 0
臨時啟動 SELinux:setenforce 1
永久關閉/啟動:修改/etc/sysconfig/selinux
後重啟系統
- 開啟 HTTP 訪問。
[[email protected] audit]# setsebool -P httpd_can_network_connect 1
- 分析現有日誌並生成關聯模組,執行完此命令可以看到在當前目錄下會生成字尾為
*.pp
和*.te
檔案,如果該伺服器上的服務未被訪問過,此命令執行無效。
[[email protected] audit]# ausearch -c 'nginx' --raw | audit2allow -M my-nginx
- 載入前一步生成的模組內容
[[email protected] audit]# semodule -i my-nginx.pp
- 執行完成以上命令後即可對 Nginx 進行正常訪問。