Linux防火墙是一套协同工作的多层次防御体系,而非单一屏障:边界防火墙默认拒绝、严控端口与源IP;区域隔离限制横向移动;主机防火墙加固内核层;配合审计与动态响应实现可视、可追、可调的闭环防护。

Linux防火墙不是一道墙,而是一套协同工作的防线。真正有效的防御不靠堆砌规则,而是让每层各守其位:边界拦住外部攻击、区域卡死横向移动、主机守住最后一关,再配上实时响应能力。
边界防火墙:守好第一道网络入口
这是最外层的硬隔离,通常由云平台安全组、物理防火墙或宿主机级防火墙承担。关键原则是“默认拒绝”,只放行明确需要的流量。
- 仅开放业务必需端口(如443、80、22),数据库(3306)、缓存(6379)等敏感端口绝不能暴露到公网
- SSH端口(22)必须限制源IP,例如只允许运维网段(192.168.10.0/24)或堡垒机IP访问
- 对HTTP/HTTPS流量做基础应用层过滤,拦截典型SQL注入(union select、sleep())和路径遍历(../)特征
- 启用连接速率限制,比如同一IP每分钟新建SSH连接超3次即临时封禁(可用firewalld rich rule或iptables recent模块实现)
区域与服务隔离:切断内部横向渗透路径
即使攻击者突破边界,也要让它无法在系统内自由游走。重点是缩小单个组件的暴露面和通信范围。
- 数据库、Redis等后端服务绑定到
127.0.0.1或内网地址(如10.0.2.5),禁止监听0.0.0.0 - 用VPC子网或VLAN划分Web层→应用层→数据层,层间通过ACL或安全组严格控制通信方向与端口
- 容器部署时禁用
--privileged,为每个服务指定非root用户运行,并在systemd unit中启用NoNewPrivileges=yes和RestrictSUIDSGID=true - Web服务器(Nginx/Apache)以
www-data或专用低权用户运行,且该用户不应具备shell登录权限
主机防火墙:操作系统内核层的最后一道防线
它不依赖网络设备,直接在本机内核过滤流量,能应对绕过边界或来自内网的威胁。
- 推荐使用firewalld(RHEL/CentOS)或ufw(Ubuntu),避免直接操作iptables规则链导致冲突
- 除业务端口外,明确拒绝ICMP重定向、时间戳请求等高风险类型,只保留
echo-request用于基础连通性诊断 - 配置出站规则:限制服务主动外连行为,例如禁止Web进程访问非CDN域名的80/443,或禁止数据库进程解析公网DNS
- 集成fail2ban,监控
/var/log/auth.log等日志,自动封禁反复失败登录的IP,规则覆盖SSH、Nginx access log中的暴力扫描行为
审计与动态响应:让防护看得见、追得回、调得快
没有日志和响应机制的防火墙,就像没有眼睛和手脚的守卫。
- 开启并集中收集系统日志(
rsyslog或journalctl --since),重点关注auth、kernel、firewalld日志 - 部署Suricata作为网络层IPS,启用ET Open Rules等社区规则集,在检测到SSH暴力破解、WebShell上传等行为时主动阻断
- 结合SELinux强制访问控制,限制进程能力,防止提权后扩大危害;用
ausearch -m avc排查拒绝事件 - 定期执行
ss -tulnp、netstat -tuln、lsof -i检查监听端口与关联进程,发现异常立即溯源


















