关键在于分层协同:边界防火墙拦截外部攻击,区域隔离阻断横向渗透,主机防火墙守好本地防线,配合审计与动态响应形成闭环。

设置服务器多层防火墙防御体系,关键不是堆砌多个防火墙,而是让不同层级的访问控制各司其职、彼此补位:边界拦住外部洪水,区域卡住内部横移,主机守住最后一线,再配上动态响应能力。单靠 iptables 或 firewalld 开几个端口,远远不够。
一、边界防火墙:守好网络入口
这是第一道硬隔离,部署在服务器所在网络的出口位置(如云平台安全组、物理防火墙、或宿主机上的 host-level 防火墙)。
- 默认拒绝所有入站流量,仅显式放行必需端口(如 443、22、80),禁止开放 3306、6379 等数据库端口到公网;
- SSH 管理端口(22)必须限制源 IP 段,例如只允许运维办公网段(192.168.10.0/24)或堡垒机 IP 访问;
- 对 HTTP/HTTPS 流量启用基础应用层防护,如拦截明显 SQL 注入特征(
union select、sleep()和路径遍历(../); - 启用连接速率限制:对同一 IP 每分钟新建 SSH 连接超过 3 次即临时封禁(可用 iptables recent 模块或 firewalld rich rule 实现)。
二、区域与服务隔离:防止横向渗透
即使攻击者突破边界,也要让它动弹不得——通过网络分段和服务权限收紧,切断扩散路径。
- 将数据库、缓存、内部 API 服务绑定到 127.0.0.1 或内网地址(如 10.0.2.5),绝不监听 0.0.0.0;
- 使用 VPC 子网或 VLAN 划分逻辑区域,例如 Web 层 → 应用层 → 数据层,每层间通过安全组或 ACL 严格控制通信方向与端口;
- 容器化部署时,禁用
--privileged,为每个服务指定非 root 用户运行,并用 systemd 的NoNewPrivileges=yes和RestrictSUIDSGID=true锁死提权可能; - Web 服务(Nginx/Apache)以
www-data或专用低权用户运行,禁止该用户拥有 shell 登录权限。
三、主机防火墙:最后一道本地防线
不依赖网络设备,直接在服务器操作系统内核层过滤流量,应对绕过边界或来自内网的威胁。
- Linux 推荐使用 firewalld(RHEL/CentOS)或 ufw(Ubuntu),避免直接操作 iptables 规则链导致冲突;
- 除放行业务端口外,明确拒绝 ICMP 重定向、时间戳请求等高风险类型,只保留
echo-request(ping)用于连通性诊断; - 配置出站规则:限制服务器主动外连行为,例如禁止 Web 进程访问非 CDN 域名的 80/443,或禁止数据库进程访问公网 DNS;
- 启用 fail2ban 监控 auth 日志,自动封禁反复失败登录的 IP,规则应覆盖 SSH、Nginx access log 中的暴力扫描行为。
四、审计与动态响应:让防护看得见、追得回、调得快
防火墙不是“设完就忘”的静态配置,必须与日志、告警、策略更新形成闭环。
- 开启 firewalld 或 iptables 的日志记录(
-j LOG或firewall-cmd --set-log-denied=all),将日志转发至集中平台(如 ELK 或云日志服务); - 设置告警规则:例如“10 分钟内同一 IP 被 DROP 超过 50 次”“非白名单 IP 尝试访问 3306 端口”触发邮件/钉钉通知;
- 定期审查规则有效性:删除已下线服务对应的旧端口规则,合并重复策略,验证新业务上线前的最小权限配置;
- 把防火墙配置纳入 IaC(Infrastructure as Code)管理,例如用 Ansible role 统一部署 + Git 版本控制,确保环境一致且可追溯。

















