Linux Firewall Hardening — Linux 防火墙加固
v4.使用后端检测、幂等原子规则、回滚保护和AI可执行的状态机工作流实现Linux防火墙安全加固。支持ufw、firewalld、nftables、iptables、Docker、Kubernetes CNI以及fail2ban,并且能够映射到CIS/PCI-DSS/SOC2合规标准。
运行时依赖
安装命令
点击复制技能文档
Linux 防火墙加固 何时使用:检查 Linux 服务器是否有活跃的防火墙保护。启用和配置防火墙而不锁定自己在 SSH 中。审计现有的规则,排除连接故障,或应用安全配置文件。通过 AI 代理或 CI/CD 流水线自动化防火墙加固。 何时不使用: 条件 替代方案 Kubernetes 工作节点 使用 NetworkPolicies / CiliumNetworkPolicy 防火墙由 Terraform/Ansible/Puppet/Chef 管理 更新 IaC 源代码 云工作负载仅使用安全组 / NSG 使用云提供商的防火墙 API 容器内部 升级到主机操作员 WSL2、macOS 或共享/托管主机 参见 references/special-environments.md 支持文件:scripts/audit-firewall.sh(首先运行),scripts/firewall-plan.sh(试运行),scripts/firewall-verify.sh(应用后)。详细的后端指南、Docker/K8s 策略、可观察性、合规性和恢复都在 references/ 中。 先决条件: 根目录或 sudo 访问权限。 活跃的 SSH 会话(锁定风险)。 知道服务使用的端口。 永远不要做(14 条规则) 永远不要在 Kubernetes 节点上刷新 iptables/nftables。CNI 插件管理 netfilter。 永远不要在没有经过验证的备份的情况下运行 iptables -F 或 nft flush ruleset。Docker/K8s 网络将会中断。 永远不要同时禁用 firewalld 和使用原始 iptables。未定义的行为。 永远不要在允许当前 SSH 端口之前在 INPUT 上设置 DROP 策略。立即锁定。 永远不要在没有替换 NAT/路由规则的情况下禁用 Docker 的 iptables 管理。 永远不要在没有控制台访问的情况下远程重启 networking.service 或 NetworkManager。 永远不要在没有测试的情况下同时应用云 SG 和主机防火墙更改。 永远不要在没有限制速率的情况下在高流量 DROP 规则上启用日志记录。磁盘洪水。 永远不要直接管理 nftables/iptables,当 ufw 或 firewalld 拥有策略时。分裂大脑状态。 永远不要在没有明确允许 DNS、NTP、软件包镜像的情况下应用出站默认拒绝。 永远不要从不同主机、内核版本或后端模式还原防火墙备份。 永远不要假设 IPv4 规则保护 IPv6。单独验证两个堆栈。 永远不要在没有明确的 CNI 配置文件支持的情况下在 K8s/CNI 主机上更改 sysctl 加固值。 永远不要在没有速率限制和日志轮换的情况下启用详细的数据包日志记录。 状态机 按照顺序遵循状态。不要跳过。 DETECT → SELECT → PLAN → VALIDATE → APPLY → VERIFY 状态:DETECT 运行审计脚本:bash scripts/audit-firewall.sh # 人类可读 bash scripts/audit-firewall.sh --json # 机器可读 关键输出:confidence、risk_tier、recommended_backend、halt_reasons、k8s_node、iac_owner。 风险等级和置信度门槛 等级 置信度 代理行为 auto ≥ 90% 自动继续到 PLAN confirmed 70–89% 但在 APPLY 之前需要人类确认 manual 50–69% 审计模式。生成推荐,不应用。 halt < 50% 立即停止。将发现结果升级到操作员。 其他停止触发器(无论置信度如何):容器化、K8s 节点、IaC 管理、没有可用回滚机制。 决策树 条件 路径 详细信息 风险等级 = halt 停止 解决阻塞器首先 容器内部 停止 升级到主机操作员 K8s 节点检测 停止 references/k8s-policy.md Ubuntu/Debian + ufw 活跃 阶段:UFW references/backend-ufw.md ufw + firewalld 都活跃 停止 解决冲突 RHEL/Rocky/Alma + firewalld 活跃 阶段:firewalld references/backend-firewalld.md nftables 活跃,无前端 阶段:nftables references/backend-nftables.md 仅 iptables 阶段:iptables references/backend-iptables.md Docker 主机 应用 Docker 加固,位于上述阶段之后 references/docker-hardening.md 所有权边界 在修改规则之前,验证没有 IaC 工具管理防火墙。如果检测到 Terraform/Ansible/Puppet/Chef/cloud-init → 不要改变。改为更新源代码。 完整的检测逻辑在 scripts/audit-firewall.sh 中。 状态:SELECT 可选地加载预构建的安全配置文件(references/security-profiles.md): 配置文件 用例 public-web-server 打开 22、80、443 端口。限制 SSH。 internal-database 仅从管理子网允许 SSH。仅从应用子网允许 DB 端口。 bastion-host 仅允许 SSH。激进的限制。 zero-trust-node 默认拒绝所有入站和出站。 或使用声明性 YAML(references/declarative-policy.md): 命令式(状态机)→ 专用加固,事件响应 声明式(YAML)→ GitOps,多主机,可复制 混合 → YAML 作为源代码,状态机用于验证 状态:PLAN(新) 生成试运行差异之前应用: bash scripts/firewall-plan.sh --profile public-web-server bash scripts/firewall-plan.sh --ports 22,80,443 bash scripts/firewall-plan.sh --json # 机器可读差异 查看输出。如果风险等级为 confirmed,则显示计划并在 APPLY 之前等待人类确认。 状态:VALIDATE
- 创建备份(强制)