服务器端口白名单准入控制核心是“只开放必需端口,拒绝其余所有”,需明确业务端口、协议及源ip,通过系统防火墙(如firewalld)和云安全组分层实施,严格限制ssh、数据库等高危端口,并持续验证与审计。

服务器业务端口白名单准入控制的核心是“只开放必需端口,拒绝其余所有”,通过防火墙规则严格限制入站连接,避免暴露不必要的服务面。配置前需明确业务实际需要的端口、协议及来源IP范围,再结合系统防火墙(如iptables、firewalld、ufw)或云平台安全组逐层落实。
梳理并确认真实业务端口清单
盲目放行 80/443/22 等常见端口极易引入风险。应逐项核对:
- Web服务是否真的需要 HTTP(80)?多数生产环境仅保留 HTTPS(443),并由反向代理(如 Nginx)统一处理
- SSH 管理端口是否仍为默认 22?建议修改为非标端口(如 2222),并限制仅运维跳板机 IP 可访问
- 数据库(如 MySQL 3306、PostgreSQL 5432)绝不能对公网开放,仅允许应用服务器内网 IP 段访问
- 内部 API 或微服务间调用端口(如 8080、9000、2379)必须限定在 VPC 或私有子网 CIDR 内
Linux 系统级白名单配置(以 firewalld 为例)
firewalld 支持区域(zone)和富规则(rich rule),适合精细化控制:
- 默认拒绝所有入站:确保 default zone 的 target 为 DROP(而非 ACCEPT)
- 仅放行指定端口+源IP:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.10" port port="443" protocol="tcp" accept' - 批量开放同一网段的多个端口可结合 ipset:
firewall-cmd --permanent --ipset=trusted-servers --add-entry=192.168.10.0/24,再基于该 ipset 添加规则 - 配置后务必执行
firewall-cmd --reload,并用firewall-cmd --list-all验证规则生效
云平台安全组作为第一道防线
阿里云、腾讯云、AWS 等平台的安全组本质是实例粒度的虚拟防火墙,应遵循最小权限原则:
- 入方向(Inbound)规则只写必要条目:例如「TCP 443,来源 0.0.0.0/0」适用于对外网站;但「TCP 22,来源 203.0.113.0/24」更适用于受控运维
- 避免使用「全部 ICMP」或「全部 TCP」这类宽泛规则;确需健康检查时,单独添加 ICMP 类型 8(echo-request)即可
- 数据库类实例的安全组入方向不应包含 0.0.0.0/0,而应引用应用服务器所在安全组 ID(如 AWS 中用 reference-based rule)实现动态授权
- 出方向(Outbound)也建议收紧,默认允许即可,敏感环境可限制仅允许访问特定域名或 IP 段(如 DNS 服务器、License 校验地址)
验证与持续维护要点
配置不是一次性动作,需闭环验证与定期审计:
- 使用
nmap -sS -p 22,80,443,3306 your-server-ip从外部扫描,确认仅预期端口响应 SYN-ACK - 登录服务器后执行
ss -tlnp或netstat -tuln,检查监听端口是否与业务一致,发现意外监听进程立即排查 - 将端口白名单纳入 IaC(如 Terraform、Ansible)管理,避免手工配置漂移
- 每季度 Review 安全组和防火墙规则,下线已废弃服务对应的端口条目,尤其注意测试环境遗留的 8080/8000 等调试端口











