selinux与ubuntu防火墙如何配合
导读:核心概念与分工 SELinux 是内核级的**强制访问控制(MAC)**机制,控制进程对文件、端口、套接字等资源的访问,关注“谁能访问什么、以何种方式访问”。 Ubuntu 防火墙 通常指 ufw(基于 iptables/nftables...
核心概念与分工
- SELinux 是内核级的**强制访问控制(MAC)**机制,控制进程对文件、端口、套接字等资源的访问,关注“谁能访问什么、以何种方式访问”。
- Ubuntu 防火墙 通常指 ufw(基于 iptables/nftables 的前端),工作在网络层/传输层,决定“哪些端口/来源可以进出”。
- 二者职责互补、互不替代:防火墙负责“开门/关门”,SELinux负责“进门后谁能做什么”。在 Ubuntu 上可以同时使用,不会冲突。
快速上手配置
- 启用并配置防火墙(ufw)
- 安装与启用:sudo apt update & & sudo apt install ufw & & sudo ufw enable
- 默认策略:sudo ufw default deny incoming;sudo ufw default allow outgoing
- 放行常用服务:sudo ufw allow 22/tcp(SSH);sudo ufw allow 80,443/tcp(HTTP/HTTPS)
- 查看状态:sudo ufw status verbose
- 启用并配置 SELinux
- 安装工具:sudo apt install selinux-basics selinux-utils
- 检查状态:getenforce(返回 Permissive/Enforcing/Disabled);/usr/sbin/sestatus -v
- 切换模式:sudo setenforce 1(Enforcing,临时);sudo setenforce 0(Permissive,临时)
- 永久生效:编辑 /etc/selinux/config,设置 SELINUX=enforcing|permissive|disabled,然后重启
- 注意:在 Permissive 模式下仅记录拒绝而不阻断,便于排错。
典型场景与排错要点
- 场景一:放行某端口(例如 8080/tcp)对外服务
- 防火墙:sudo ufw allow 8080/tcp
- SELinux:若服务被 SELinux 策略限制(如非默认端口的 http_port_t),需将端口加入允许列表:sudo semanage port -a -t http_port_t -p tcp 8080;如未安装 semanage,先安装 policycoreutils-python-utils。
- 验证:ss -ltnp | grep 8080;若仍不通,检查服务是否仅监听 127.0.0.1。
- 场景二:仅允许内网网段访问某服务
- 防火墙:sudo ufw allow proto tcp from 192.168.1.0/24 to any port 3306
- SELinux:保持默认策略即可(网络方向由防火墙限制,SELinux 主要校验本机进程权限)。
- 场景三:服务启动失败或访问被拒
- 先看防火墙:sudo ufw status verbose;必要时临时 sudo ufw disable 验证是否为防火墙阻断
- 再看 SELinux:sudo setenforce 0 临时切到 Permissive;若恢复正常,说明是 SELinux 策略问题,使用 ausearch/audit2allow 分析并生成本地策略模块,或按上面的端口/类型放行方式修正。
最佳实践
- 保持 SELinux 为 Enforcing,仅在排错时短时切到 Permissive;不要长期关闭。
- 防火墙遵循“默认拒绝、按需放行”,仅暴露必需端口(如 22/80/443)。
- 变更前备份规则:ufw 可用 iptables-save/restore 或 ufw 自身导出功能;SELinux 策略变更建议用本地模块管理,避免破坏系统基线。
- 在云环境或容器场景,注意云平台安全组/宿主机防火墙与系统防火墙的叠加影响,规则需一致收敛。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: selinux与ubuntu防火墙如何配合
本文地址: https://pptw.com/jishu/777700.html
