核心是分层控制:用firewalld富规则精准放行可信网段(如192.168.10.0/24)访问SSH(22)、Web后台(8080)等端口,并配reject规则拒绝其他所有IP;同时将管理接口绑定到internal等专用区域,确保public区域不暴露管理端口。

要限制管理后台(比如 Web 管理界面、SSH、API 管理端口等)只允许特定网段访问,核心是 不开放端口给所有人,而是用富规则(rich rule)精准放行可信来源,同时确保默认策略足够严格。这不是简单“开个端口”,而是分层控制。
明确管理后台类型再选策略
管理后台通常分三类,对应不同安全要求:
- SSH(22端口):高危入口,必须最小化暴露
- Web 管理界面(如 8080、8443、9000 等):需绑定可信内网或运维专线
- 数据库/中间件管理端口(如 Redis 6379、PostgreSQL 5432):应完全隔离公网,仅限内网服务调用
用富规则锁定来源网段(推荐方式)
这是最清晰、可审计、易维护的方法。以只允许 192.168.10.0/24 访问 SSH 和 Web 后台端口为例:
- 允许该网段访问 SSH:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.10.0/24" port port="22" protocol="tcp" accept'
- 允许该网段访问 Web 后台(如 8080):
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.10.0/24" port port="8080" protocol="tcp" accept'
- 拒绝其他所有 IP 访问这些端口(关键!否则规则无效):
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port port="22" protocol="tcp" reject' firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port port="8080" protocol="tcp" reject'
⚠️ 注意:reject 规则必须放在 allow 规则之后(firewalld 按添加顺序匹配),且所有命令都要加
--permanent并执行firewall-cmd --reload生效。
配合区域(Zone)做逻辑隔离
不要把管理服务全塞在 public 区域。更稳妥的做法是:
- 将管理接口(如监听在
192.168.10.100的 Web 后台)绑定到internal或自定义admin区域 - 把运维服务器所在网卡(如
ens192)加入该区域:firewall-cmd --permanent --zone=internal --add-interface=ens192
- 然后在
internal区域中只开放必要端口,其他区域(如public)默认不放行这些端口
验证与兜底建议
- 查看当前生效的富规则:
firewall-cmd --list-rich-rules - 检查端口是否被误开:
firewall-cmd --zone=public --list-ports(管理端口不应出现在这里) - 数据库类后台务必检查监听地址:
netstat -tlnp | grep :5432,确认是127.0.0.1:5432或内网 IP,而非0.0.0.0:5432 - 若网段较多或需频繁变更,可考虑用
ipset管理地址集合,再通过 rich rule 引用,提升可维护性
不复杂但容易忽略


















