温馨提示×

Debian防火墙SELinux集成

小樊
40
2026-01-03 17:33:06
栏目: 智能运维

Debian 上实现防火墙与 SELinux 的协同防护


一 前提与选型

  • Debian 默认不启用 SELinux,常见做法是使用 UFW 管理防火墙;而 SELinux 常见于 RHEL/CentOS/Fedora。在 Debian 上若要使用 SELinux,需要额外安装与启用相关组件。防火墙与 SELinux 分别工作在网络层主机层,属于纵深防御,建议同时启用并正确配置两者的放行策略,避免“只开防火墙却因 SELinux 拒绝导致服务不可用”。

二 启用 SELinux 的正确步骤

  • 安装与启用组件(Debian 12 示例)
    • 安装策略与工具:sudo apt-get update && sudo apt-get install -y selinux-basics selinux-policy-default auditd
    • 启用 SELinux:sudo selinux-activate
    • 重启:sudo reboot
    • 检查状态:getenforce(返回 Enforcing/Permissive/Disabled),sestatus(查看详细模式与策略)
  • 基本运维
    • 临时切换:sudo setenforce 0(Permissive)/ 1(Enforcing)
    • 永久生效:编辑 /etc/selinux/config 的 SELINUX= 项(enforcing/permissive/disabled),重启后生效
  • 提示
    • 初次启用会触发系统 relabel,耗时与磁盘 IO 相关;生产变更建议在维护窗口进行,并提前备份关键数据与配置。

三 防火墙选择与配置要点

  • 工具选型与差异
    • UFW:Debian 常用、上手快,适合中小规模与常规服务器场景
    • nftables:内核原生新一代框架,规则表达更简洁、性能与可维护性更优,适合规则复杂或规模较大的环境
    • firewalld:RHEL/CentOS 默认;在 Debian 可用,但生态与默认集成度不如前两者
  • UFW 快速示例(放行 SSH 与 Web)
    • 启用:sudo ufw enable
    • 放行端口/服务:sudo ufw allow 22/tcp;sudo ufw allow 80,443/tcp
    • 状态与规则:sudo ufw status numbered
  • nftables 快速示例(最小“白名单”骨架)
    • 规则思路:放行 lo、已建立/相关连接,按需放行 SSH(22),其余默认丢弃;按需扩展端口/协议
    • 建议以 systemd 服务管理 nftables,确保规则持久化与开机加载。

四 协同配置与排错清单

  • 原则
    • 防火墙负责“谁能进来”(源/目的/端口/协议),SELinux 负责“进程被允许做什么”(域/类型/权限)。两者缺一不可,且策略需同时匹配。
  • 常见服务的最小配置范式
    • SSH
      • 防火墙:放行 22/TCP
      • SELinux:保持默认 sshd 相关策略即可(Debian 启用 SELinux 后通常无需额外布尔)
    • Web(Nginx/Apache)
      • 防火墙:放行 80/443/TCP
      • SELinux:如部署在非默认目录,使用 semanage fcontext 为目录设置 httpd_sys_content_t 等类型,并执行 restorecon;必要时开启相关布尔(如与代理/网络访问相关)
    • FTP(vsftpd,主动模式)
      • 防火墙:放行 20/TCP、21/TCP 与被动端口段(示例:21100–21110/TCP
      • SELinux:启用 ftp_home_dir、allow_ftpd_full_access 等布尔(setsebool -P),并确保数据/日志目录类型正确
    • Samba(文件共享)
      • 防火墙:放行 Samba 服务或 139/445/TCP
      • SELinux:开启 samba_enable_home_dirs,为共享目录设置 samba_share_t 类型并 restorecon
  • 排错路径
    • SELinux 拒绝:ausearch -m avc -ts recent;或查看 /var/log/audit/audit.log;必要时用 setsebool 调整布尔、用 semanage fcontext/restorecon 修正类型
    • 防火墙阻断:UFW 使用 sudo ufw status numbered;nftables 使用 sudo nft list ruleset;iptables 使用 sudo iptables -S/-L -n -v
    • 服务自检:ss -lntp | grep <端口>;curl -Iv http://localhost;必要时临时 setenforce 0 验证是否为 SELinux 导致,再恢复为 Enforcing 并修正策略。

五 安全建议

  • 避免使用 Telnet(明文传输),优先 SSH;如必须使用,务必限制来源 IP 并配合 SELinux 精细策略
  • 变更流程:先在测试环境验证;变更前备份规则与关键配置;变更后及时验证与留痕(版本化规则与审计日志)
  • 合规与加固:结合最小权限原则配置防火墙与 SELinux;定期审计 AVC 拒绝日志与规则有效性,形成闭环。

0