尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

外部访问内网Web服务器:防火墙NAT映射与安全策略配置实践

外部访问内网Web服务器:防火墙NAT映射与安全策略配置实践 这次我们直接解决一个很经典的网络问题公司内网部署了一台 Web 服务器业务方要求外部互联网主机能够直接通过公网地址访问它。听起来很简单但在防火墙策略不完整、NAT 规则写错、安全策略没放通的情况下外部用户访问不通的概率非常高。这篇文章先梳理方案再放防火墙部署逻辑最后给你一套可落地的验证和排查流程。这个场景的本质是防火墙的NAT 映射 安全策略放行 路由打通三件事。任何一块漏了外部访问都会失败。后面会拿常见的防火墙配置方式来拆解并把华为 eNSP 模拟器里的配置思路整理出来。同时提醒一下配置防火墙放行互联网访问涉及公司内网安全和企业合规边界操作前要先确认公司网络管理制度和授权范围不要在生产环境乱放规则更不要绕过安全策略直接映射核心数据库。本文会覆盖适合场景、配置前的网络规划、防火墙 nat server 和安全策略的配置逻辑、端口映射对外网访问的影响、连通性测试方法、资源占用与性能观察、常见故障排查以及一套工程化落地的配置建议。如果你是刚接手公司防火墙的运维人员或者正在做网络实验准备考证这篇可以直接收藏。1. 核心能力速览能力项说明功能目标让外部互联网主机通过防火墙公网地址访问公司内部 Web 服务器配置核心防火墙 NAT 映射端口映射或目的地址转换 安全策略放行 路由打通常用技术NAT Server、Destination NAT、Virtual Server、安全策略、回流 NAT推荐实验环境华为 eNSP / H3C HCL 模拟器、VMware 虚拟化环境、真实防火墙测试区前置要求一台支持 NAT 的防火墙设备、公网 IP测试可用模拟公网地址替代、内部 Web 服务器是否支持批量防火墙规则通常需要逐条配置不支持自动批量生成但可以通过策略分组和地址组简化是否支持接口 API不同厂商差异较大部分企业级防火墙有 Web API 或自动化平台但常规配置建议走 Web 管理界面或命令行适合场景企业对外发布官网、测试环境对外联调、公司内部系统临时开放给外部合作方不适合场景未做 Web 应用安全防护就大规模放公网、未申请授权的端口映射、敏感数据系统的直接裸露从工程角度看绝大多数防火墙的配置逻辑是相通的先创建“外部不可信区域”和“内部服务器所在区域”再把公网地址加某个端口的流量映射到内部服务器的私有地址和端口上最后写安全策略定义允许谁访问什么服务。不同品牌只是菜单名称和命令风格不一样。2. 适用场景与使用边界2.1 适合什么场景第一类是公司官网或营销站点对外发布。此时 Web 服务器放在 DMZ 区域防火墙把公网 80/443 端口映射到服务器内网地址外部用户通过域名或公网 IP 访问。第二类是项目联调。外部合作方的开发服务器需要通过你的公网地址访问内网某个测试 Web 服务和 API 接口双方约定端口范围后做临时放行。第三类是实验学习。你在 eNSP、HCL 或真实设备上练习防火墙策略、NAT 规则、路由配置为考证或岗位技能提升做准备。2.2 不适合什么场景不要把一个没有 Web 应用防火墙保护、没有访问日志、没有入侵检测的系统直接通过防火墙映射到公网。更不要只放行端口没有限制来源 IP导致全网段都能尝试连接。凡是涉及数据库、运维后台、财务系统、人事系统这类敏感接口都要坚持白名单访问不能图省事全放通。如果公司内部有明确的安全规范应先走变更审批流程再修改防火墙配置。2.3 安全与合规边界配置防火墙放行公网访问本质上是在公司网络边界“开口子”。这会带来几个必须处理的边界问题外部访问来源不可控Web 服务器一旦被攻破会成为横向渗透内网的跳板访问日志如果没有留存后续出现问题无法溯源。因此配置时至少要保证放行范围尽量精确端口尽量收敛服务器不能同时允许任意来源访问管理端口所有访问行为留日志。涉及公司对外业务系统还要遵守等保要求和数据安全相关法规完成必要备案和组织审批后再上线。这不是一句空话而是防火墙运维的基础责任。3. 部署原理外部互联网主机访问内部 Web 服务器的完整链路配置之前先弄懂这条访问链路到底怎么走。外部互联网主机发起访问时目标地址是防火墙的公网 IP比如203.0.113.10目的端口是80数据包到达防火墙后防火墙根据 NAT 映射规则把目的地址改写成内部 Web 服务器的私有 IP比如192.168.10.10端口仍为80随后防火墙再查安全策略判断这个流量是否允许从外部区域进入服务器所在区域如果匹配到放行策略防火墙把数据包转发到内网 Web 服务器Web 服务器收到请求后返回响应防火墙再对回程流量做反向转换把源地址从内网 IP 改回公网 IP。外部主机看到的就是一次正常访问。这里面包含三个关键判断点NAT 规则是否匹配并正确改写了目标地址。安全策略是否放行了从外网到服务器区域的入站流量。防火墙是否有到达 Web 服务器的路由以及回程流量是否能够正确回到防火墙。如果外部访问不通通常就是这三个环节中某一个断了。接下来从网络规划开始一步步配置。4. 配置前的网络规划4.1 明确网络区域和 IP 地址做任何防火墙配置前先把网络拓扑和地址规划弄清楚。下面是一个典型的防火墙发布 Web 服务器的网络结构外部互联网主机 | | 公网 IP203.0.113.10 | [防火墙]------- 管理区域/内部区域 | | 内网网段192.168.10.0/24 | [内部 Web 服务器] IP192.168.10.10你需要提前确认的参数包括防火墙连接外网的接口 IP 和区域、防火墙连接内部服务器的接口 IP 和区域、Web 服务器的私有 IP 和监听端口、对外发布的公网 IP 和映射端口、外部访问来源是否要做 IP 白名单限制、Web 服务类型是 HTTP 还是 HTTPS。4.2 端口选择规划常见 Web 服务对外端口是 80HTTP和 443HTTPS。如果公司外网 IP 只有一个而内部有多个 Web 服务可以规划不同的对外端口来区分。比如203.0.113.10:8080映射到192.168.10.10:80203.0.113.10:8443映射到192.168.10.20:443。这种端口映射方式在企业里用得非常多但要注意端口越多防火墙对外暴露面越大。没有业务需求就不要开额外端口。4.3 记录信息表配置前建议把信息整理成一张表方便后续写规则和排查参数示例值防火墙外网接口 IP203.0.113.1/30防火墙内网接口 IP192.168.10.1/24Web 服务器 IP192.168.10.10Web 服务端口TCP 80 / TCP 443对外发布 IP203.0.113.10对外发布端口TCP 80 / TCP 443允许访问来源可选默认 0.0.0.0/0建议按需限制5. 防火墙逐个配置步骤下面以企业级防火墙最通用的配置逻辑为主线按“区域 - 地址对象 - NAT - 安全策略”顺序操作。不同厂商的菜单名不同但思路一致。5.1 创建安全区域防火墙通常默认存在untrust不可信区域、trust可信区域、dmz隔离区。外部互联网接口放在untrust区域Web 服务器所在接口要单独划分。如果 Web 服务器不承担深度访问内部系统的任务建议把它放进dmz区域不要把内网核心网段直接暴露给公网映射。以华为 USG 系列的命令行为例可以先查看区域配置确认接口和区域绑定关系# 查看系统当前区域 display zone # 把 GigabitEthernet1/0/0 划入 untrust 区域 firewall zone untrust add interface GigabitEthernet1/0/0 # 把 GigabitEthernet1/0/1 划入 dmz 区域Web 服务器接在该接口下 firewall zone dmz add interface GigabitEthernet1/0/1在 eNSP 里操作方式是先在拓扑中添加防火墙并连线然后双击防火墙进入 CLI 或使用 Web 界面把接口划入对应安全区域。5.2 创建地址对象配置 NAT 和安全策略时如果直接写 IP后面维护会很难受。推荐先把 IP 地址定义成对象。外网访问源一般可以不定义但 Web 服务器的内部 IP 建议定义成地址对象。在华为防火墙中# 创建地址对象指向内部 Web 服务器 ip address-set server_web type object address 192.168.10.10 255.255.255.255在 H3C 防火墙中可以进入对象组配置界面object-group ip address server_web network host address 192.168.10.10在深信服防火墙的 Web 管理界面上则是通过“对象 - 地址”菜单新增 IP 组或 IP 地址。5.3 配置 NAT Server 端口映射NAT Server 是实现外部互联网主机访问内部 Web 服务器最直接的配置方式。它的作用是把公网 IP 加端口映射到内网服务器 IP 加端口。华为防火墙配置示例# 进入外网接口视图 interface GigabitEthernet1/0/0 # 配置 NAT Server公网 80 端口映射到 192.168.10.10 的 80 端口 nat server protocol tcp global 203.0.113.10 80 inside 192.168.10.10 80 # 如果外网 IP 是接口 IP也可以直接写 current-interface # nat server protocol tcp global current-interface 80 inside 192.168.10.10 80如果对外端口需要改成 8080则写成nat server protocol tcp global 203.0.113.10 8080 inside 192.168.10.10 80在 H3C 防火墙中NAT 配置是另一种风格。以 H3C SecPath 系列为例# 创建 NAT 策略 nat policy rule name nat_web mode dnat destination-address 203.0.113.10 action dnat translate-address 192.168.10.10 translate-port 80深信服防火墙的 Web 管理界面通常在“防火墙 - NAT 转发”中填写外网 IP、外网端口、内网 IP、内网端口并勾选协议 TCP。5.4 配置安全策略配置完 NAT 还不够防火墙默认都是拒绝跨区域访问的。必须增加一条允许从untrust区域访问dmz区域中 Web 服务器端口的安全策略。如果缺少这一步外部访问会卡在防火墙上表现出来就是连接超时或被拒绝。华为防火墙安全策略配置示例# 创建安全策略名称 external_to_web security-policy rule name external_to_web source-zone untrust destination-zone dmz destination-address address-set server_web service protocol tcp destination-port 80 action permit如果使用 HTTPS 对外发布服务要同时放行 443security-policy rule name external_to_web_https source-zone untrust destination-zone dmz destination-address address-set server_web service protocol tcp destination-port 443 action permit在 eNSP 中配置完安全策略后需要检查策略是否已经生效display security-policy rule all display firewall session tableH3C 防火墙安全策略示例security-policy ip rule name external_to_web source-zone untrust destination-zone dmz destination-address 192.168.10.10 0 service tcp destination-port 80 action pass深信服防火墙则是通过“安全策略 - 新增策略”来配置源区域、目的区域、源地址、目的地址、服务和动作。5.5 配置路由NAT 和安全策略都配置正确后还要确保防火墙能正确转发到 Web 服务器所在的内网网段。如果是直连路由也就是防火墙 DMZ 接口 IP 与 Web 服务器同网段防火墙会自动产生直连路由。如果是跨三层环境需要配置静态路由指向下一跳交换机# 华为防火墙静态路由示例 ip route-static 192.168.10.0 255.255.255.0 192.168.20.254外网访问的回程流量同样重要。Web 服务器的网关必须指向防火墙或者指向能够把回程流量送回防火墙的交换机。如果 Web 服务器网关写错服务器能收到请求但响应包会发到错误网关外部访问一样不通。6. 域名访问配置与常见发布方式6.1 通过域名发布 Web 服务的基本逻辑现实中公司对外发布 Web 服务通常不会让用户记住公网 IP而是通过域名访问。域名访问链路比 IP 直接访问多一个环节外部主机先向 DNS 服务器发起解析请求获取域名对应的公网 IP随后访问该 IP 的 80/443 端口防火墙再把访问映射到内部 Web 服务器。因此域名访问的前提是 Web 服务器的对外地址必须能正确映射到防火墙公网 IP同时 DNS 解析记录已经生效。常见做法有两种一是域名直接解析到防火墙公网 IP二是域名解析到云上负载均衡或 CDN 的 IP再由这些设备把流量转回防火墙公网 IP。对于只有一个出口 IP 的小型企业直接把域名 A 记录指向防火墙公网 IP 是最常见的做法。6.2 HTTPS 发布时的证书注意点如果发布的是 HTTPS 服务需要在内部 Web 服务器上配置好 SSL 证书确保服务器监听 443 端口并且证书域名与用户访问的域名一致。防火墙 NAT 层面只需要做端口映射一般不需要卸载证书。外部主机访问域名时如果出现证书不匹配告警通常是证书域名配置错误而不是防火墙的问题。6.3 Web 服务器侧配置Web 服务器要保证监听地址不是只能本机访问。以 Linux 服务器上的 Nginx 为例默认配置已经监听 80 端口但要注意是否有防火墙软件拦截比如 firewalld 或 iptables。在 CentOS 等系统上执行# 查看端口监听状态 ss -tlnp | grep -E :80|:443 # 查看 firewalld 是否放行 80 端口 firewall-cmd --list-all如果 Web 服务器自身启用了防火墙需要放行对应端口firewall-cmd --permanent --add-port80/tcp firewall-cmd --permanent --add-port443/tcp firewall-cmd --reload7. 功能测试与效果验证7.1 从外部网络发起访问测试配置完成后从一台不属于公司内网的外部测试主机发起访问。在 Windows 命令提示符或 Linux 终端中执行curl -I http://203.0.113.10预期结果是返回 HTTP 状态码200 OK或 Web 服务自定义的状态码。如果使用 HTTPScurl -I https://203.0.113.10也可以使用浏览器直接访问域名或公网 IP。如果页面能正常打开说明 NAT 和安全策略链路已经打通。7.2 防火墙会话检查在防火墙设备上确认 NAT 会话和转发状态。以华为防火墙为例display firewall session table | include 203.0.113.10正常会看到从外部主机 IP 到内部 Web 服务器 IP 的会话记录。这个检查能区分问题是出在 NAT 还是出在安全策略。7.3 判断成功与否的标准满足以下条件可以认为配置成功外部测试主机能收到 Web 服务器的 HTTP 响应防火墙会话表中能看到预期端口的双边会话Web 服务器访问日志中出现来自外部 IP 的请求记录连续多次访问稳定没有间歇性超时。7.4 常见失败原因如果外部访问不通第一步先做通断测试。如果用ping不通但页面能打开说明服务器禁止 ICMP不用过度纠结。如果curl无响应或超时排查优先级是先确认外部主机到防火墙公网 IP 的链路是否可达再检查防火墙 NAT 规则和会话再检查安全策略是否匹配最后检查 Web 服务器本地服务是否正常。8. 资源占用与性能观察8.1 防火墙连接数观察配置完 NAT 映射后防火墙上的并发连接数和新建连接速率会有变化。尤其在出现外部扫描或突发访问时连接数可能明显上升。使用如下命令观察华为防火墙display firewall session table statistics display cpu-usage display memory-usage如果发现 CPU 使用率持续偏高优先检查是否出现了针对公网 IP 的端口扫描。此时应当收紧安全策略只允许明确需要的来源 IP 访问。8.2 Web 服务器连接数观察Web 服务器同样要关注连接数。Nginx 可以在nginx.conf中开启 stub_status 模块输入如下配置location /nginx_status { stub_status on; allow 127.0.0.1; allow 192.168.10.0/24; deny all; }Apache 可以通过server-status模块查看。观察点主要是Active connections和Waiting数。如果数值快速上升且不下降可能是有外部程序在频繁请求需要结合访问日志分析。8.3 性能影响点对外端口映射对防火墙性能的影响通常不大因为 NAT 是防火墙基础能力。真正影响性能的是安全策略是否触发深度检测、是否开启入侵防御、是否启用 SSL 解密。如果开启这些高级安全功能HTTPS 流量的转发性能会明显下降此时要考虑 Web 服务器的最大并发量有多大是否需要对公网访问做流量限速。9. 常见问题与排查方法问题现象可能原因排查方式解决方案外部访问公网 IP 超时NAT 规则错误或安全策略未放行检查防火墙会话表和策略命中情况修正 NAT Server 映射补安全策略外部能 ping 通但浏览器打不开端口映射端口错误或 Web 服务未启动在防火墙和服务器上分别检查端口修正端口映射启动 Web 服务内网用户通过公网 IP 无法访问自己公司网站缺少 NAT 回流规则查看防火墙是否支持 NAT hairpin配置 NAT 回流或添加目的 NAT 环路规则配置完 NAT 后所有外部访问都失败安全策略动了默认拒绝规则查看策略配置顺序确认策略方向、源区域、目的区域是否正确HTTPS 访问提示证书错误Web 服务器证书域名不匹配浏览器查看证书详情重新签发或配置正确域名的证书访问时通时不通多出口负载不均、防火墙会话超时或运营商封端口检查防火墙日志和双链路配置固定出口链路调整会话保持时间服务器收到大量异常请求规则过宽暴露全网端口查看防火墙日志来源 IP收紧来源白名单启用入侵防御10. 最佳实践与配置建议10.1 先最小化再放量第一次配置时只映射单个端口比如 80 端口并限制来源 IP 为公司办公网出口 IP 或测试主机 IP。验证完全跑通后再按业务需要放开其他端口和来源范围。不要一次性把 1-65535 端口全部映射到一个内网 IP这是最危险的做法之一。10.2 地址分组与策略分类管理当服务器数量增多后建议把防火墙上的地址对象统一命名例如WEB-SRV-PRD、WEB-SRV-TEST、API-SRV-PRD。安全策略名称也要有可读性比如POL-UNTRUST-DMZ-WEB80-PERMIT。这样后续排查策略冲突和配置审查时能快速定位问题。10.3 Web 服务器本身的安全基线即使防火墙已经做了端口映射Web 服务器自身的防护也不能省。操作系统补丁要及时更新Web 服务运行账号使用低权限账号服务器只开放业务所需端口关闭不必要的管理端口公网映射Web 目录写入权限做最小化配置日志启用访问记录和错误记录。防火墙只能解决网络可达问题不能解决 Web 应用漏洞问题。10.4 日志留存和监控企业防火墙配置对外访问策略时至少要开启会话日志和策略命中日志。华为防火墙配置日志发送到日志服务器的方法通常在info-center中配置。如下是一条简单示例info-center loghost 192.168.10.100深信服和 H3C 防火墙则通过 web 控制台把日志发送到 syslog 服务器。外部访问流量如果出现规律性扫描应第一时间根据日志来源 IP 封禁。10.5 配置备份与变更记录每次修改防火墙策略之前先备份当前配置。华为防火墙display current-configuration save configurationH3C 防火墙display current-configuration save force修改结束后可以把变更内容记录到运维文档里。内容包括变更时间、变更人、变更原因、涉及策略、回退方案。没有回退方案就操作生产防火墙一旦出错容易导致公司业务长时间中断。11. 不同品牌防火墙配置差异速览不同厂商的配置界面和服务名称有差异下面给出一张速览表方便你工作时快速定位菜单或命令位置。厂商/产品NAT 名称安全策略入口常用配置方式华为 USG / eNSPnat server安全策略 security-policyCLI / WebH3C SecPathnat policy / dnat安全策略 security-policy ipCLI / Web深信服防火墙NAT 转发安全策略规则Web 管理控制台天融信防火墙目的地址转换 / 端口映射访问控制策略Web 管理控制台飞塔 FortiGateVirtual IP Firewall PolicyPolicy ObjectsWeb / CLI华为 eNSP 中做防火墙实验时要注意模拟器自带防火墙仅用于学习部分版本不支持全部高级特性建议优先用 Web 界面或标准 CLI 操作。深信服和天融信等商用防火墙在真实设备上的菜单名称会随版本变化操作时以自己设备当前 Web 控制台显示为准。12. 总结与下一步配置外部互联网主机访问公司内部 Web 服务器核心就是 NAT 映射加安全策略再加路由打通。多数访问不通的问题不是 NAT 写错就是安全策略没有命中所致。建议你在实验环境先完整跑一遍把 NAT Server、安全策略、静态路由和访问日志这四个环节的动作记熟。在线生产设备配置前必须先备份、评估风险并走内部审批不要因为业务催得急就直接跳过安全评估。把端口映射、来源白名单和日志审计三件事做扎实这个对外发布场景才算真正交付完成。后度可以直接尝试多服务器的端口分流映射、基于域名的反向代理发布以及 HTTPS 证书自动化替换方案这些都是常见扩展方向。
返回列表