第 4 章 为使用非标准配置的应用程序和服务配置 SELinux
当 SELinux 处于 enforcing 模式时,默认策略是目标(targeted)策略。以下小节提供有关在更改了配置默认值后为各种服务建立和配置 SELinux 策略的信息,如端口、数据库位置或进程的文件系统权限。
您将了解如何为非标准端口更改 SELinux 类型,识别并修复默认目录更改的不正确的标签,以及使用 SELinux 布尔值调整策略。
4.1. 在非标准配置中为 Apache HTTP 服务器自定义 SELinux 策略 复制链接链接已复制到粘贴板!
您可以将 Apache HTTP 服务器配置为在不同端口中侦听,并在非默认目录中提供内容。要防止 SELinux 拒绝带来的后果,请按照以下步骤调整系统的 SELinux 策略。
先决条件
-
已安装
httpd
软件包,并将 Apache HTTP 服务器配置为侦听 TCP 端口 3131,并使用/var/test_www/
目录而不是默认的/var/www/
目录。 -
policycoreutils-python-utils
和setroubleshoot-server
软件包已安装在您的系统中。
步骤
启动
httpd
服务并检查状态:Copy to Clipboard Copied! Toggle word wrap Toggle overflow SELinux 策略假设
httpd
在端口 80 上运行:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更改 SELinux 类型端口 3131 使其与端口 80 匹配:
semanage port -a -t http_port_t -p tcp 3131
# semanage port -a -t http_port_t -p tcp 3131
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 再次启动
httpd
:systemctl start httpd
# systemctl start httpd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 但是,内容仍无法访问:
wget localhost:3131/index.html
# wget localhost:3131/index.html … HTTP request sent, awaiting response... 403 Forbidden …
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
sealert
工具查找原因:sealert -l "*"
# sealert -l "*" … SELinux is preventing httpd from getattr access on the file /var/test_www/html/index.html. …
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
matchpathcon
工具比较标准 SELinux 类型以及新路径:matchpathcon /var/www/html /var/test_www/html
# matchpathcon /var/www/html /var/test_www/html /var/www/html system_u:object_r:httpd_sys_content_t:s0 /var/test_www/html system_u:object_r:var_t:s0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将新
/var/test_www/html/
内容目录的 SELinux 类型改为默认/var/www/html
目录的类型:semanage fcontext -a -e /var/www /var/test_www
# semanage fcontext -a -e /var/www /var/test_www
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 递归重新标记
/var
目录:restorecon -Rv /var/
# restorecon -Rv /var/ ... Relabeled /var/test_www/html from unconfined_u:object_r:var_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0 Relabeled /var/test_www/html/index.html from unconfined_u:object_r:var_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
检查
httpd
服务是否正在运行:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 Apache HTTP 服务器提供的内容是否可以访问:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow