Linux防火墙如何集成到系统中
导读:Linux防火墙系统集成实践 一 选型与总体架构 面向服务器与云主机,优先选用具备动态管理、区域化策略与服务抽象的工具,如 firewalld;桌面或简单场景可用 ufw;需要精细控制或与现代内核特性结合时选择 nftables;传统环境...
Linux防火墙系统集成实践
一 选型与总体架构
- 面向服务器与云主机,优先选用具备动态管理、区域化策略与服务抽象的工具,如 firewalld;桌面或简单场景可用 ufw;需要精细控制或与现代内核特性结合时选择 nftables;传统环境或存量脚本可用 iptables。无论选型如何,都应围绕系统服务、日志、容器与主机安全模块进行一体化集成,确保规则持久化、可编排与可观测。
二 与系统服务集成
- 服务与端口放行
- firewalld:使用区域与服务抽象管理规则,便于与系统服务生命周期联动。示例:
sudo firewall-cmd --permanent --zone=public --add-service=ssh --add-service=http --add-service=https & & sudo firewall-cmd --reload。 - ufw:快速启用并放行常用端口。示例:
sudo ufw enable & & sudo ufw allow 22/tcp & & sudo ufw allow 80,443/tcp。
- firewalld:使用区域与服务抽象管理规则,便于与系统服务生命周期联动。示例:
- 日志与审计
- iptables:为关键流量添加日志前缀,便于 rsyslog 分流。示例:
sudo iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH: "。 - rsyslog:将含特定前缀的日志单独落盘。示例(在
/etc/rsyslog.conf或/etc/rsyslog.d/iptables.conf中添加)::msg, contains, "SSH" -/var/log/iptables.log,随后sudo systemctl reload rsyslog。
- iptables:为关键流量添加日志前缀,便于 rsyslog 分流。示例:
- 主机安全模块联动
- 与 SELinux 或 AppArmor 配合,分别负责强制访问控制与进程能力约束,防火墙负责网络层边界,二者互补。示例:
sudo aa-enable /etc/apparmor.d/usr.sbin.sshd(AppArmor);SELinux 可用sestatus、setenforce等命令查看与切换模式。
- 与 SELinux 或 AppArmor 配合,分别负责强制访问控制与进程能力约束,防火墙负责网络层边界,二者互补。示例:
三 与容器和云平台集成
- Docker 与 firewalld
- 冲突点:Docker 启动会直接写入 iptables,可能绕过或干扰 firewalld 策略。
- 推荐做法:为容器网络创建专用 zone,将 docker0 接口与容器网段纳入管理,减少冲突并保留可观测性。示例:
sudo firewall-cmd --permanent --new-zone=docker & & sudo firewall-cmd --permanent --zone=docker --add-interface=docker0 & & sudo firewall-cmd --permanent --zone=docker --add-source=172.17.0.0/16 & & sudo firewall-cmd --permanent --zone=docker --set-target=ACCEPT & & sudo systemctl restart docker firewalld。
- Kubernetes 与 Node 端口
- 在节点上放行 6443(kube-apiserver)、2379-2380(etcd)、以及 NodePort 范围 30000-32767/TCP 等必要端口,结合 CNI 插件所需端口(如 VXLAN 8472/UDP)按需开放,避免无限制放行 0.0.0.0/0。
四 持久化、启动与变更管理
- firewalld
- 规则默认以“运行时+永久”双态管理,变更后用
firewall-cmd --reload使永久配置生效;通过firewall-cmd --get-active-zones与firewall-cmd --list-all-zone校验生效范围与策略。
- 规则默认以“运行时+永久”双态管理,变更后用
- nftables
- 将规则集写入 /etc/nftables.conf,启用并开机启动服务:
sudo systemctl start nftables & & sudo systemctl enable nftables;变更后sudo nft -f /etc/nftables.conf重载。
- 将规则集写入 /etc/nftables.conf,启用并开机启动服务:
- iptables
- 使用
iptables-save > /etc/iptables/rules.v4与iptables-restore < /etc/iptables/rules.v4做持久化;在 Debian 系可借助网络接口事件脚本(如/etc/network/if-pre-up.d/iptables)在接口就绪时自动恢复规则,确保重启后策略不丢失。
- 使用
五 典型场景快速参考
- 场景A:最小化服务器防护(firewalld)
- 目标:仅放行 SSH/HTTP/HTTPS,其余默认拒绝;开启日志;规则可回滚。
- 步骤:
- 启动与开机:
sudo systemctl start firewalld & & sudo systemctl enable firewalld - 放行服务:
sudo firewall-cmd --permanent --zone=public --add-service=ssh --add-service=http --add-service=https & & sudo firewall-cmd --reload - 日志分流:在 rsyslog 中为“firewalld”关键字单独落盘(如
/var/log/firewalld.log),sudo systemctl reload rsyslog - 校验:
firewall-cmd --list-all --zone=public
- 启动与开机:
- 场景B:启用 NAT 网关(iptables)
- 目标:内网 192.168.1.0/24 经公网口 eth0 出网做 SNAT。
- 步骤:
- 开启转发:
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf & & sudo sysctl -p - 配置 SNAT:
sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source < 公网IP> - 持久化:
sudo iptables-save > /etc/iptables/rules.v4
- 开启转发:
- 场景C:与 Fail2Ban 联动(通用)
- 目标:对暴力破解自动封禁,与防火墙规则协同。
- 步骤:
- 安装与启用:
sudo apt update & & sudo apt install fail2ban & & sudo systemctl enable --now fail2ban - 配置:编辑
/etc/fail2ban/jail.local,为 sshd 等启用监狱并指定动作(如 iptables/firewalld),重启fail2ban生效。
- 安装与启用:
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux防火墙如何集成到系统中
本文地址: https://pptw.com/jishu/764138.html
