首页主机资讯centos selinux如何与其他服务集成

centos selinux如何与其他服务集成

时间2025-12-02 01:42:03发布访客分类主机资讯浏览1260
导读:总体思路与关键概念 在 SELinux 中,进程、文件、端口等对象都有安全上下文(如 httpd_t 域、文件类型 httpd_sys_content_t),访问是否被允许由“主体上下文 × 客体上下文 × 策略/布尔值”共同决定。集成服...

总体思路与关键概念

  • SELinux 中,进程、文件、端口等对象都有安全上下文(如 httpd_t 域、文件类型 httpd_sys_content_t),访问是否被允许由“主体上下文 × 客体上下文 × 策略/布尔值”共同决定。集成服务时,通常从三方面入手:为进程与文件设置正确的上下文、按需开放网络端口标签、调整布尔值以启用特定行为。常用工具包括:semanage fcontext/portrestoreconchcongetsebool/setsebool、以及审计日志分析工具 ausearch/sealert

Web 服务与 Apache 的集成

  • 文件与目录上下文
    • 只读内容:将站点目录标记为 httpd_sys_content_t;可执行脚本目录(如 /var/www/cgi-bin)使用 httpd_sys_script_exec_t;需要写入的目录(上传、缓存、生成文件等)使用 httpd_sys_rw_content_t。示例:
      • 查看默认上下文:ls -Z /var/www/html
      • 永久写入策略并应用:
        • semanage fcontext -a -t httpd_sys_content_t “/web(/.*)?”
        • restorecon -Rv /web
      • 需要写入的目录(示例):chcon -R --type httpd_sys_rw_content_t /var/www/html/upload
  • 端口标签
    • 查看与添加端口标签(示例将 9527 加入 http 端口类型):
      • semanage port -l | grep http_port_t
      • semanage port -a -t http_port_t -p tcp 9527
  • 网络与脚本行为
    • 允许 Apache 发起对外连接(如支付网关、外部 API):setsebool -P httpd_can_network_connect on
    • 允许 CGI 执行:setsebool -P httpd_enable_cgi on
    • 如需访问用户主目录中的内容:setsebool -P httpd_enable_homedirs on
  • 验证与排错
    • 查看拒绝日志:ausearch -m avc -ts recent;或使用 sealert 分析:sealert -a /var/log/audit/audit.log
    • 注意:目录迁移或自定义路径时,优先使用 semanage fcontext + restorecon 持久化上下文,避免仅用 chcon 导致重启后失效。

数据库与中间件的集成

  • MySQL/MariaDB
    • 数据目录与日志文件需使用 mysqld_db_t 等类型:
      • semanage fcontext -a -t mysqld_db_t “/data/mysql(/.*)?”
      • restorecon -Rv /data/mysql
    • 端口管理:将 3306 等端口加入 mysqld_port_t;MySQL 8 的 X 协议端口 33060 也需加入该类型:
      • semanage port -a -t mysqld_port_t -p tcp 3306
      • semanage port -a -t mysqld_port_t -p tcp 33060
    • 远程连接:若应用由 httpd 发起数据库连接,开启布尔值:setsebool -P httpd_can_network_connect_db on
  • PHP-FPM 与 Nginx
    • 同机常通过 UNIX 套接字通信,通常无需为 PHP-FPM 配置网络端口;若需远程连接数据库,则按上条开启相应布尔值。
    • Nginx 监听 80/443 等端口时,确保端口属于 http_port_t(系统通常已预置)。

FTP NFS Samba 的常见集成

  • FTP
    • 匿名只读内容:chcon -R -t public_content_t /var/ftp
    • 匿名可写目录:chcon -R -t public_content_rw_t /var/ftp/incoming
    • 允许匿名写:setsebool -P allow_ftpd_anon_write on
    • 允许访问用户家目录:setsebool -P ftp_home_dir on
  • NFS
    • 启用家目录通过 NFS 导出访问:setsebool -P use_nfs_home_dirs on
  • Samba
    • 共享目录标记:chcon -R -t samba_share_t /srv/samba/share
    • 允许家目录共享:setsebool -P samba_enable_home_dirs on
    • 允许匿名写:setsebool -P allow_smbd_anon_write on。

排错与运维建议

  • 状态与模式
    • 查看状态:sestatus;临时切换:setenforce 0|1(测试完成后回到 Enforcing
  • 审计与诊断
    • 实时或回溯查看拒绝:ausearch -m avc -ts recent;图形化分析:sealert -a /var/log/audit/audit.log
    • 安装分析工具:yum install setroubleshoot(重启后生效)
  • 策略变更原则
    • 优先使用 semanage fcontext/port 持久化规则,再用 restorecon 应用;chcon 仅作临时调整
    • 布尔值变更尽量加 -P 持久化;变更后用服务自检与日志验证
  • 与防火墙的关系
    • SELinux 与 firewalld 互不替代;SELinux 放行“访问类型/端口标签/布尔值”,防火墙放行“网络端口”。两者需同时正确配置。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos selinux如何与其他服务集成
本文地址: https://pptw.com/jishu/760774.html
CentOS上PHP如何选择合适的版本 centos selinux强制模式使用场景

游客 回复需填写必要信息