SELinux对网络服务有何限制
导读:SELinux对网络服务的主要限制 一 核心机制与运行模式 基于强制访问控制 MAC:以进程为主体、以文件/目录/端口等为客体,只有策略明确允许才可通过,即使root也受限于进程的安全域与客体标签。 运行模式: Enforcing:强制...
SELinux对网络服务的主要限制
一 核心机制与运行模式
- 基于强制访问控制 MAC:以进程为主体、以文件/目录/端口等为客体,只有策略明确允许才可通过,即使root也受限于进程的安全域与客体标签。
- 运行模式:
- Enforcing:强制执行并记录违规;
- Permissive:仅告警不阻断,便于排错;
- Disabled:完全关闭(切换为禁用通常需要重启)。
- 常用策略:targeted(默认,重点约束常见网络服务)、strict/mls(更严格,覆盖面广)。
- 常用命令:
getenforce、setenforce 0|1、sestatus、/etc/selinux/config配置持久化。
二 对网络服务的典型限制维度
- 进程域隔离:网络服务被放入受限域运行(如 httpd_t、smbd_t),与其他服务域隔离,降低横向移动风险。
- 端口绑定限制:服务仅能绑定被策略允许的端口类型(如 http_port_t 默认包含 80、443、488、8008、8009、8443);改用非常规端口会被拒绝,需通过策略或工具将端口加入允许列表。
- 文件与目录访问:服务只能访问被标记为“该服务可读/可写”的类型(如 httpd_sys_content_t 只读、httpd_sys_content_rw_t 读写、httpd_sys_script_exec_t 可执行脚本);访问用户主目录 user_home_t、Samba 共享 samba_share_t 等类型会被拒绝。
- 网络外连与协议:是否允许进程主动对外发起连接由布尔值控制(如 httpd_can_network_connect 允许 httpd 对外连接;httpd_use_nfs/cifs 允许 httpd 访问 NFS/CIFS 挂载内容)。
- 远程文件系统:访问 NFS/CIFS 共享时,客户端挂载点默认带有 nfs_t/cifs_t 类型;若服务策略未放行,即使文件系统权限正确也会被 SELinux 拒绝。
三 常见服务与限制示例
| 服务 | 典型域/标签 | 常见限制 | 放行方式示例 |
|---|---|---|---|
| Apache httpd | 进程域:httpd_t;内容:httpd_sys_content_t(只读)、httpd_sys_content_rw_t(读写)、httpd_sys_script_exec_t(CGI) | 不能读 user_home_t、samba_share_t;默认仅能绑定 http_port_t 端口 | 将目录标记为相应类型(如 semanage fcontext -a -t httpd_sys_content_t "/myweb(/.*)?" &
&
restorecon -R /myweb);端口改用策略允许端口或用 semanage port 添加;外连数据库开启 setsebool -P httpd_can_network_connect 1 |
| Samba | 进程域:smbd_t | 与其他受限服务域隔离;共享目录需正确类型 | 为共享目录设置 samba_share_t 等合适类型 |
| FTP | 进程域:vsftpd_t | 上传/写入需目录为 public_content_rw_t;家目录访问受控 | 通过布尔值启用/禁用家目录访问、写入等能力 |
| NFS/CIFS 客户端访问 | 挂载点类型:nfs_t/cifs_t | httpd 等默认不可读/写 | 开启布尔值(如 httpd_use_nfs、httpd_use_cifs)以放行访问 |
四 排错与配置要点
- 检查状态与模式:
getenforce、sestatus;临时切换setenforce 0|1(在 Enforcing/Permissive 间切换无需重启;改为 Disabled 需重启)。 - 查看上下文:
ls -lZ、ps -eZ;必要时修正类型:chcon(临时)或semanage fcontext + restorecon(永久)。 - 端口放行:
semanage port -a -t http_port_t -p tcp 12345将端口加入允许列表。 - 布尔值调整:
getsebool -a | grep httpd查看;setsebool -P httpd_can_network_connect 1永久生效。 - 日志与审计:查看 AVC 拒绝日志(
/var/log/audit/audit.log),或用ausearch -m avc -ts recent、aureport -a分析。
五 与防火墙的关系
- SELinux ≠ 防火墙:前者是内核级 MAC 控制,限制“进程能访问哪些资源/端口/行为”;后者基于 iptables/nftables 控制“哪些数据包能进出主机/网络”。两者可叠加使用,互不替代。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: SELinux对网络服务有何限制
本文地址: https://pptw.com/jishu/759490.html
