布內(nèi)網(wǎng)Web服務(wù):目的NAT與安全策略配置解析)
做網(wǎng)絡(luò)或運(yùn)維這一行大概率被問(wèn)過(guò)這樣一句話內(nèi)網(wǎng) Web 服務(wù)已經(jīng)部署好了外網(wǎng)為什么還是訪問(wèn)不了如果排查后發(fā)現(xiàn)網(wǎng)站進(jìn)程在跑、域名解析也正常問(wèn)題往往集中在防火墻配置上。這篇文章圍繞一個(gè)非常典型的需求展開(kāi)通過(guò)防火墻的目的 NAT 和安全策略讓外部互聯(lián)網(wǎng)主機(jī)可以訪問(wèn)公司內(nèi)部 Web 服務(wù)器。先說(shuō)結(jié)論這種需求不是改一條“端口映射”就能結(jié)束的。完整鏈路通常需要四類配置配合接口和安全域、目的 NAT也叫服務(wù)器映射/端口映射/DNAT、入方向安全策略以及若干基礎(chǔ)路由項(xiàng)。任何一環(huán)缺失外部訪問(wèn)都起不來(lái)。文章會(huì)從原理、網(wǎng)絡(luò)規(guī)劃、配置步驟、驗(yàn)證手段到常見(jiàn)排錯(cuò)完整過(guò)一遍不管你現(xiàn)在用的是華為、H3C、深信服、天融信還是其他家用級(jí)防火墻只要把配置邏輯對(duì)齊剩下的就是按鈕位置差異。尤其適合下面幾類讀者剛接手公司出口防火墻的運(yùn)維新人、要給客戶演示系統(tǒng)的實(shí)施工程師、被“外網(wǎng)訪問(wèn)內(nèi)網(wǎng) Web”這類需求反復(fù)折磨的網(wǎng)絡(luò)管理員。下面直接用工程化視角拆解全過(guò)程。1. 外部互聯(lián)網(wǎng)主機(jī)訪問(wèn)內(nèi)部 Web 服務(wù)器方案能力速覽規(guī)劃項(xiàng)說(shuō)明核心需求外部互聯(lián)網(wǎng)主機(jī)通過(guò)公網(wǎng) IP/域名訪問(wèn)公司內(nèi)部 Web 服務(wù)器的 80/443 服務(wù)技術(shù)本質(zhì)防火墻目的 NAT 入方向安全策略 路由可達(dá)推薦網(wǎng)絡(luò)位置Web 服務(wù)器放在防火墻 DMZ 區(qū)不要直接放進(jìn)辦公網(wǎng)核心區(qū)主要開(kāi)放端口HTTP 80、HTTPS 443按實(shí)際業(yè)務(wù)最小化開(kāi)放涉及防火墻功能接口安全域、服務(wù)器映射/DNAT、安全策略、會(huì)話表、日志驗(yàn)證方式外網(wǎng)側(cè)主機(jī)用瀏覽器、curl、telnet 測(cè)試防火墻看會(huì)話表和策略命中計(jì)數(shù)安全邊界只放行業(yè)務(wù)必需端口公網(wǎng)管理入口必須限制源 IP保留審計(jì)日志典型風(fēng)險(xiǎn)直接“全端口映射”到內(nèi)網(wǎng)、目標(biāo) Web 服務(wù)本身存在漏洞、未做來(lái)源限制這個(gè)方案的價(jià)值很明確不需要申請(qǐng)額外專線不用改內(nèi)部網(wǎng)絡(luò)架構(gòu)一臺(tái)帶 NAT 能力的防火墻就可以把內(nèi)部 Web 服務(wù)安全地發(fā)布到公網(wǎng)。2. 適用場(chǎng)景與使用邊界2.1 適合哪些場(chǎng)景第一類是正式對(duì)外業(yè)務(wù)發(fā)布。公司有自己的官網(wǎng)、產(chǎn)品介紹頁(yè)、客戶查詢系統(tǒng)申請(qǐng)了合法公網(wǎng) IP 和域名后需要把這些跑在內(nèi)網(wǎng)服務(wù)器上的 Web 服務(wù)開(kāi)放給公網(wǎng)用戶。第二類是短期項(xiàng)目演示。給外部客戶演示內(nèi)部系統(tǒng)時(shí)客戶不愿意裝客戶端只想用瀏覽器訪問(wèn)你的服務(wù)這時(shí)臨時(shí)發(fā)布一個(gè) HTTPS 頁(yè)面最省事。第三類是前后端聯(lián)調(diào)。外包開(kāi)發(fā)商需要訪問(wèn)公司內(nèi)部測(cè)試站點(diǎn)又不想把源碼和數(shù)據(jù)庫(kù)暴露在外網(wǎng)。無(wú)論是哪類場(chǎng)景關(guān)鍵前提都是你擁有這些服務(wù)器和防火墻的管理權(quán)限并且已經(jīng)獲得公司安全負(fù)責(zé)人授權(quán)。2.2 不適合哪些場(chǎng)景如果目標(biāo) Web 服務(wù)器承載了財(cái)務(wù)、人事、核心數(shù)據(jù)庫(kù)等高敏感業(yè)務(wù)不建議直接用 NAT 映射暴露到公網(wǎng)除非已經(jīng)完成安全評(píng)估并配套了 WAF、入侵檢測(cè)、日志審計(jì)等加固手段。也不建議把服務(wù)器所在網(wǎng)段和辦公終端混在一起例如讓 Web 服務(wù)器直接使用辦公電腦所在的 192.168.x.x 網(wǎng)段再把整段 80/443 映射出去這種做法會(huì)讓攻擊面擴(kuò)大到整個(gè)辦公網(wǎng)。2.3 安全與合規(guī)邊界對(duì)外發(fā)布 Web 服務(wù)前要確認(rèn)域名、公網(wǎng) IP、ICP 備案等手續(xù)是否已經(jīng)合規(guī)不要自己私拉公網(wǎng)入口繞過(guò)既有網(wǎng)絡(luò)管理流程。在測(cè)試環(huán)境中可以使用本文的配置方法做驗(yàn)證但正式上線前必須由網(wǎng)絡(luò)負(fù)責(zé)人評(píng)審策略。3. 拓?fù)湟?guī)劃與信息清單先看一個(gè)簡(jiǎn)化但典型的網(wǎng)絡(luò)拓?fù)渫獠炕ヂ?lián)網(wǎng)主機(jī) 198.51.100.5 | | 訪問(wèn) https://www.example.com v 防火墻 WAN 接口 203.0.113.1/24 ----- untrust 區(qū)域 | | DNAT: 203.0.113.10:443 - 192.168.10.10:443 v 防火墻 DMZ 接口 192.168.10.1/24 ----- dmz 區(qū)域 | v DMZ 區(qū) Web 服務(wù)器 192.168.10.10這里使用的是文檔保留地址。演示環(huán)境中公網(wǎng)側(cè)可以是 203.0.113.x實(shí)際生產(chǎn)環(huán)境必須替換成運(yùn)營(yíng)商分配給你的合法公網(wǎng) IP。內(nèi)網(wǎng) DMZ 段使用 192.168.10.0/24。規(guī)劃時(shí)至少要把以下信息整理成一張表參數(shù)示例值說(shuō)明公網(wǎng)接口 IP203.0.113.1/24防火墻 WAN 口地址內(nèi)部接口 IP192.168.10.1/24防火墻 DMZ 口地址對(duì)外公網(wǎng) IP203.0.113.10專門用于 NAT 映射的合法公網(wǎng)地址Web 服務(wù)器內(nèi)網(wǎng) IP192.168.10.10DMZ 區(qū)服務(wù)器地址對(duì)外協(xié)議端口443/TCP盡量只開(kāi)放 HTTPS內(nèi)網(wǎng)服務(wù)端口443/TCPWeb 服務(wù)實(shí)際監(jiān)聽(tīng)端口域名解析www.example.com - 203.0.113.10公網(wǎng) DNS 或測(cè)試用 hosts源地址限制可選如僅允許 198.51.100.0/24可縮小暴露面如果服務(wù)器同時(shí)需要跑 HTTP 和 HTTPS一般建議對(duì)外只放 443再把 80 跳轉(zhuǎn)到 443。這樣可以減少明文流量和中間人風(fēng)險(xiǎn)。4. 為什么“端口映射”和“安全策略”必須同時(shí)配置很多初學(xué)防火墻的人會(huì)混淆一件事我到底需要做 NAT還是需要放安全策略答案是兩者都做缺一不可。目的 NAT 解決的是“地址能不能到達(dá)”的問(wèn)題。公網(wǎng)用戶發(fā)起訪問(wèn)時(shí)目的地址是 203.0.113.10而內(nèi)部 Web 服務(wù)器是 192.168.10.10。如果不做目的 NAT公網(wǎng)報(bào)文進(jìn)入防火墻后會(huì)被轉(zhuǎn)發(fā)到一個(gè)外部無(wú)法路由的私網(wǎng)地址上報(bào)文不可能到達(dá) Web 服務(wù)器。安全策略解決的是“流量允不允許通過(guò)”的問(wèn)題。防火墻默認(rèn)情況下通常拒絕跨安全域的流量。即使你做了目的 NAT外部流量被轉(zhuǎn)換成了到 192.168.10.10 的訪問(wèn)如果 untrust 到 dmz 方向沒(méi)有對(duì)應(yīng)策略防火墻依然會(huì)丟包最常見(jiàn)的現(xiàn)象是外網(wǎng) telnet 公網(wǎng) IP 的 443 端口不通防火墻會(huì)話表里能看到嘗試但 action 是 deny。另外還有一條經(jīng)常被忽略回程流量并不需要你額外配置“反向 NAT”。Web 服務(wù)器收到請(qǐng)求后會(huì)向源地址回包。防火墻在建立 NAT 會(huì)話后會(huì)記住“公網(wǎng)地址:端口 - 內(nèi)網(wǎng)地址:端口”的對(duì)應(yīng)關(guān)系當(dāng)服務(wù)器回包經(jīng)過(guò)防火墻時(shí)會(huì)自動(dòng)把目的地址從 192.168.10.10 的私網(wǎng)源轉(zhuǎn)換回公網(wǎng)地址 203.0.113.10再?gòu)?WAN 口返回外部用戶。這也是“狀態(tài)化防火墻”和普通路由器之間最明顯的區(qū)別之一。5. 環(huán)境準(zhǔn)備與前置條件5.1 防火墻側(cè)檢查防火墻必須工作在路由模式并至少有三種可用接口或子接口連接互聯(lián)網(wǎng)的 WAN 口、連接 DMZ 服務(wù)器的接口、用于管理維護(hù)的 LAN 口。更穩(wěn)妥的做法是給防火墻劃分安全域把 WAN 口劃入 untrust把服務(wù)器接口劃入 dmz把辦公網(wǎng)或管理網(wǎng)劃入 trust。配置前還要保證防火墻系統(tǒng)時(shí)間準(zhǔn)確否則后續(xù)日志審計(jì)的時(shí)間戳?xí)д妗?.2 Web 服務(wù)器側(cè)檢查先在內(nèi)網(wǎng)本機(jī)驗(yàn)證 Web 服務(wù)本身是否正常# 在 Web 服務(wù)器本機(jī)檢查服務(wù)是否監(jiān)聽(tīng) ss -lntp | grep -E :80|:443 # 本機(jī)訪問(wèn)測(cè)試 curl -I http://127.0.0.1 curl -I https://127.0.0.1 -k如果本機(jī)都不通先解決 Web 服務(wù)本身的問(wèn)題不要急著去改防火墻。常見(jiàn)的坑有兩個(gè)一是 Nginx/Apache/IIS 只監(jiān)聽(tīng)了 127.0.0.1外部網(wǎng)絡(luò)根本訪問(wèn)不到二是服務(wù)器本地操作系統(tǒng)防火墻攔截了 80/443 入站端口??梢耘R時(shí)放行或關(guān)掉本地防火墻做對(duì)比測(cè)試但生產(chǎn)環(huán)境建議添加精確入站規(guī)則而不是直接關(guān)閉防火墻。5.3 公網(wǎng)側(cè)資源檢查對(duì)外發(fā)布需要至少一個(gè)合法公網(wǎng) IP并確認(rèn)它沒(méi)有被運(yùn)營(yíng)商封禁常用端口。如果服務(wù)器上配置了 HTTPS 域名訪問(wèn)還需要準(zhǔn)備好域名和證書(shū)。至少在測(cè)試階段可以用公網(wǎng) IP 端口直接訪問(wèn)但生產(chǎn)環(huán)境強(qiáng)烈建議使用域名避免用戶記憶 IP 地址也方便以后切換公網(wǎng)入口。6. 防火墻 NAT 映射與安全策略配置不同品牌防火墻的菜單名稱有差異但配置項(xiàng)幾乎一樣。下面先給一套通用動(dòng)作清單再給一個(gè)以華為 USG 系列為背景的示意 CLI方便你理解真實(shí)配置長(zhǎng)的樣子。6.1 配置接口與安全域先確保接口已有 IP 地址并加入了正確安全域interface GigabitEthernet1/0/0 ip address 203.0.113.1 255.255.255.0 interface GigabitEthernet1/0/1 ip address 192.168.10.1 255.255.255.0 firewall zone untrust add interface GigabitEthernet1/0/0 firewall zone dmz add interface GigabitEthernet1/0/1以上是示意 CLI真實(shí)設(shè)備上請(qǐng)按型號(hào)手冊(cè)調(diào)整。如果防火墻是 H3C SecPath、深信服 AF、天融信 NGFW 等產(chǎn)品一般通過(guò) Web 管理界面的“網(wǎng)絡(luò)接口”和“安全域”菜單完成同樣操作。6.2 創(chuàng)建目的 NAT/服務(wù)器映射目的 NAT 負(fù)責(zé)把 203.0.113.10:443 映射到 192.168.10.10:443。典型 CLI 邏輯如下nat server policy web_https zone untrust destination-address 203.0.113.10 0 service 443 tcp translate-address 192.168.10.10在 Web 管理界面上通常叫“服務(wù)器映射”“端口映射”“虛擬服務(wù)器”“NAT 規(guī)則”配置內(nèi)容是同一套關(guān)系表單字段示例值公網(wǎng) IP203.0.113.10公網(wǎng)端口443內(nèi)網(wǎng) IP192.168.10.10內(nèi)網(wǎng)端口443協(xié)議TCP映射類型目的 NAT / DNAT如果同時(shí)要發(fā)布 HTTP再增加一條 80 端口映射。但考慮到 HTTPS 和 HTTP 跳轉(zhuǎn)邏輯可以在公網(wǎng)只開(kāi)放 443然后在 Web 服務(wù)器內(nèi)部自行處理 80 到 443 的重定向。業(yè)務(wù)必須面向公網(wǎng)開(kāi)放多個(gè)端口時(shí)建議逐條映射而不是一次性把 Web 服務(wù)器整段 IP 放出去。6.3 放行安全策略完成 NAT 之后必須再增加一條從 untrust 到 dmz 的安全策略security-policy rule name policy_web_from_untrust source-zone untrust destination-zone dmz destination-address 192.168.10.10 32 service https action permit這條策略的核心語(yǔ)義是允許所有外部互聯(lián)網(wǎng)主機(jī)訪問(wèn) DMZ 區(qū)的 192.168.10.10 的 443 端口。這里的 destination-address 使用的是 NAT 轉(zhuǎn)換后的私網(wǎng)服務(wù)器地址。大多數(shù)防火墻在啟用 NAT server 后會(huì)先執(zhí)行地址轉(zhuǎn)換再匹配安全策略所以策略里寫(xiě)私網(wǎng) IP 是常用做法如果你所用設(shè)備要求在策略里寫(xiě)公網(wǎng)地址就按設(shè)備實(shí)際規(guī)則調(diào)整。需要強(qiáng)調(diào)的是不要把動(dòng)作寫(xiě)得過(guò)于寬松。推薦的最小策略寫(xiě)法是方向指定 untrust - dmz目標(biāo)只指定 Web 服務(wù)器地址服務(wù)只指定 80/443而不是“any to any”。6.4 服務(wù)器主動(dòng)訪問(wèn)外網(wǎng)時(shí)的源 NAT配置了目的 NAT 后外部訪問(wèn) Web 服務(wù)器的回程是自動(dòng)解決的。但如果 DMZ 區(qū) Web 服務(wù)器需要自己訪問(wèn)外網(wǎng)比如拉取系統(tǒng)補(bǔ)丁、調(diào)用第三方支付 API、上傳日志到云端那就還需要一條源 NAT 策略。否則服務(wù)器發(fā)出的報(bào)文源地址是私網(wǎng) 192.168.10.10公網(wǎng)回包無(wú)法路由回去。nat source-policy rule name snat_server_out source-zone dmz destination-address any action source-nat easy-ip源 NAT 的策略名稱和命令格式因廠商差異較大這里只是示意。如果你的 Web 服務(wù)器完全不需要主動(dòng)上外網(wǎng)可以忽略這一步甚至在最終安全策略里禁止 DMZ 主動(dòng)訪問(wèn)外網(wǎng)進(jìn)一步收縮風(fēng)險(xiǎn)面。7. 配置后的功能驗(yàn)證流程配置完成后不能只看“策略已提交”就算結(jié)束。建議按照從底層到應(yīng)用層的方式逐步驗(yàn)證。7.1 Web 服務(wù)器本機(jī)驗(yàn)證在 Web 服務(wù)器上執(zhí)行# 檢查本機(jī) 443 監(jiān)聽(tīng) curl -I https://127.0.0.1 -k # 查看 Web 服務(wù)進(jìn)程確認(rèn)是 Nginx/Apache/httpd ps -ef | grep -E nginx|apache|httpd這一步確認(rèn)服務(wù)進(jìn)程存在并且監(jiān)聽(tīng)地址不限于回環(huán)接口。7.2 防火墻下聯(lián)內(nèi)網(wǎng)驗(yàn)證從防火墻信任區(qū)域或者辦公網(wǎng)內(nèi)一臺(tái)主機(jī)訪問(wèn)服務(wù)器內(nèi)網(wǎng)地址curl -I https://192.168.10.10 -k如果內(nèi)網(wǎng)能通說(shuō)明 Web 服務(wù)和后臺(tái)路由沒(méi)有問(wèn)題問(wèn)題范圍可以縮小到 NAT 和安全策略。7.3 公網(wǎng)側(cè)驗(yàn)證從外網(wǎng)主機(jī)或模擬外網(wǎng)流量的測(cè)試機(jī)執(zhí)行# 測(cè)試 TCP 端口是否可達(dá) nc -vz 203.0.113.10 443 # 使用 curl 觀察 HTTP 響應(yīng)碼和響應(yīng)頭 curl -I https://203.0.113.10 -k # 如果配置了域名和 Host用域名請(qǐng)求 curl -I https://www.example.com -k如果外網(wǎng)能返回 HTTP 200/301/302 等正常狀態(tài)碼說(shuō)明整條鏈路已經(jīng)通了。還可以觀察響應(yīng)頭里的 Server 字段判斷流量確實(shí)到達(dá)了后端 Web 服務(wù)器而不是被防火墻或 CDN 攔截。如果外網(wǎng) telnet 端口成功但 curl 失敗重點(diǎn)檢查 Web 服務(wù)里的域名/Host 配置是否匹配請(qǐng)求頭。例如多個(gè)虛擬主機(jī)共存時(shí)直接訪問(wèn) IP 可能返回默認(rèn)站點(diǎn)而不是目標(biāo)站點(diǎn)。7.4 Web 服務(wù)器訪問(wèn)日志驗(yàn)證在 Web 服務(wù)器查看訪問(wèn)日志# Nginx 默認(rèn)日志路徑 tail -f /var/log/nginx/access.log # Apache 默認(rèn)日志路徑 tail -f /var/log/httpd/access_log當(dāng)外網(wǎng)用戶訪問(wèn)時(shí)如果日志里出現(xiàn)來(lái)自公網(wǎng)源地址的請(qǐng)求記錄說(shuō)明從防火墻到服務(wù)器的轉(zhuǎn)發(fā)已經(jīng)成功。7.5 防火墻會(huì)話驗(yàn)證在防火墻查看 TCP 443 會(huì)話確認(rèn)是否有狀態(tài)為 established 的連接display session table protocol tcp destination-ip 192.168.10.10 verbose不同廠商命令名稱不同華為部分設(shè)備為 display session table思科 ASA 可用 show connH3C 可用 display session table。只要能看到目標(biāo)地址為 192.168.10.10 且端口為 443 的 established 會(huì)話大概率說(shuō)明 NAT 和策略都生效了。8. 防火墻資源占用與性能觀察防火墻不是個(gè)人電腦不存在顯存概念但同樣有資源瓶頸。配置外部訪問(wèn)后需要觀察三類資源。第一是設(shè)備 CPU 和內(nèi)存。Web 服務(wù)一旦被外部頻繁訪問(wèn)防火墻需要處理 NAT 轉(zhuǎn)換、策略匹配、會(huì)話建立和日志記錄。如果設(shè)備 CPU 持續(xù)接近 100%先看是不是日志量過(guò)大再看是否需要升級(jí)硬件或把 Web 服務(wù)遷移到專用負(fù)載均衡設(shè)備后面。第二是并發(fā)會(huì)話數(shù)和新建會(huì)話速率。目的 NAT 會(huì)讓每個(gè)外部請(qǐng)求占用一條會(huì)話表項(xiàng)。默認(rèn)會(huì)話老化時(shí)間如果太短大文件下載或 WebSocket 長(zhǎng)連接可能被中途斷開(kāi)如果太長(zhǎng)又可能造成會(huì)話表膨脹。生產(chǎn)環(huán)境建議針對(duì) Web 服務(wù)的 TCP 會(huì)話設(shè)置合理的空閑超時(shí)并對(duì)大流量下載場(chǎng)景做單獨(dú)驗(yàn)證。第三是帶寬和延遲。外部訪問(wèn)走的如果是普通寬帶或?qū)>€實(shí)際吞吐量會(huì)直接影響頁(yè)面打開(kāi)速度。可以分別在防火墻 WAN 口和下聯(lián) DMZ 口做流量統(tǒng)計(jì)確認(rèn)擁塞點(diǎn)是在公網(wǎng)鏈路、防火墻轉(zhuǎn)發(fā)還是 Web 服務(wù)器本身。更穩(wěn)妥的做法是先用單用戶小文件測(cè)試再逐步加大并發(fā)不要一上來(lái)就壓測(cè)避免把業(yè)務(wù)壓掛。9. 常見(jiàn)問(wèn)題與排查方法問(wèn)題現(xiàn)象可能原因排查方式解決方案外網(wǎng) ping 公網(wǎng) IP 通但訪問(wèn)端口不通NAT 沒(méi)生效或安全策略未放行防火墻查看會(huì)話表、策略命中計(jì)數(shù)補(bǔ)目的 NAT檢查 untrust - dmz 策略外網(wǎng) curl 返回 503/502/超時(shí)Web 服務(wù)后端異?;虮O(jiān)聽(tīng)地址不對(duì)內(nèi)網(wǎng)直接訪問(wèn)服務(wù)器 IP修復(fù) Web 服務(wù)確認(rèn)監(jiān)聽(tīng) 0.0.0.0 或?qū)?yīng)網(wǎng)卡外網(wǎng)可以訪問(wèn)內(nèi)網(wǎng)用公網(wǎng)域名訪問(wèn)不了防火墻未開(kāi)啟 NAT 回環(huán)在內(nèi)網(wǎng)同一網(wǎng)段嘗試 curl 內(nèi)網(wǎng) IP通過(guò)內(nèi)網(wǎng) DNS 解析到內(nèi)網(wǎng) IP或在防火墻配置 hairpin NAT外網(wǎng)端口通但頁(yè)面提示應(yīng)用級(jí)錯(cuò)誤防火墻已經(jīng)通了Web 配置問(wèn)題查看應(yīng)用日志和站點(diǎn)根路徑檢查虛擬目錄、反向路由、URL 路徑配置例如 ASP.NET 站點(diǎn)若報(bào)“您的 Web 服務(wù)器未正確設(shè)置以解析 /ocm-provider/”往往是站點(diǎn)根路徑或虛擬目錄未匹配而不是防火墻問(wèn)題Web 服務(wù)器日志里沒(méi)有來(lái)自公網(wǎng)的訪問(wèn)記錄流量沒(méi)有到達(dá)服務(wù)器抓包確認(rèn)目的 IP 是否被正確轉(zhuǎn)換檢查目的 NAT 中內(nèi)網(wǎng) IP 是否填錯(cuò)添加策略后仍被拒絕策略順序不對(duì)或被更高優(yōu)先級(jí)策略匹配查看策略命中計(jì)數(shù)調(diào)高目標(biāo)策略優(yōu)先級(jí)或檢查是否存在全局 deny 策略代理設(shè)備/反向流量設(shè)備轉(zhuǎn)發(fā)后源 IP 全是防火墻地址需要保留真實(shí)客戶端 IP查看 Web 日志中的 x-forwarded-for 字段在防火墻或 Web 層配置 X-Forwarded-For 傳遞其中“內(nèi)網(wǎng)訪問(wèn)公網(wǎng)域名失敗”是一個(gè)很典型的問(wèn)題。原因是內(nèi)部用戶訪問(wèn)目的地址為公網(wǎng) IP 時(shí)報(bào)文從內(nèi)網(wǎng)直接到防火墻但后續(xù)回包路徑和外部用戶的 NAT 會(huì)話不一致導(dǎo)致防火墻無(wú)法匹配會(huì)話。解決思路有兩種在公司內(nèi)部 DNS 上把域名解析為內(nèi)網(wǎng)服務(wù)器 IP或者開(kāi)啟防火墻的 NAT 回環(huán)功能。生產(chǎn)環(huán)境更推薦前者邏輯清楚且不增加防火墻負(fù)擔(dān)。10. 安全加固與日常運(yùn)維建議配置好外部訪問(wèn)只是開(kāi)始更關(guān)鍵的是控制風(fēng)險(xiǎn)。對(duì)外只開(kāi)放最小端口范圍。絕大多數(shù) Web 業(yè)務(wù)只開(kāi)放 443 即可80 僅用于跳轉(zhuǎn)或不開(kāi)放。不推薦把 22、3389、數(shù)據(jù)庫(kù)端口 3306/5432、Redis 6379 直接映射到公網(wǎng)。如果有人要求“順便把服務(wù)器遠(yuǎn)程端口也映射出去”應(yīng)該直接拒絕改成通過(guò)帶外管理、堡壘機(jī)或虛擬桌面方案訪問(wèn)。對(duì)管理地址做來(lái)源限制。防火墻 Web 管理界面如果暴露在公網(wǎng)本身就是巨大風(fēng)險(xiǎn)。華為、H3C、深信服、天融信等設(shè)備默認(rèn)通常限制管理口為 trust 區(qū)域或指定源地址配置時(shí)不要為了方便而改成 all。需要遠(yuǎn)程維護(hù)時(shí)先通過(guò)安全可控的管理通道接入內(nèi)網(wǎng)再訪問(wèn)防火墻管理地址。Web 服務(wù)器本身要注意加固。用 HTTPS 替換 HTTPTLS 協(xié)議至少啟用 1.2不要使用默認(rèn)自簽名證書(shū)對(duì)外提供服務(wù)定期更新 Web 服務(wù)軟件版本防止已知漏洞被利用。日志要單獨(dú)保存方便出現(xiàn)異常訪問(wèn)時(shí)追溯。外網(wǎng)流量接入后可以先觀察一周訪問(wèn)日志看看是否存在掃描、爆破、異常路徑探測(cè)等行為再?zèng)Q定是否加入更嚴(yán)格的訪問(wèn)控制。11. 防火墻配置變更與回滾管理第一次做這類發(fā)布不要把規(guī)則一把梭。建議按以下順序執(zhí)行先做最小范圍驗(yàn)證。在測(cè)試環(huán)境或業(yè)務(wù)低峰期創(chuàng)建目的 NAT 和安全策略用外網(wǎng)測(cè)試機(jī)訪問(wèn)確認(rèn)可以打開(kāi)頁(yè)面然后持續(xù)觀察 10 到 30 分鐘看是否有異常報(bào)錯(cuò)。保存當(dāng)前配置。大多數(shù)防火墻都有配置保存/備份功能。變更前導(dǎo)出一份當(dāng)前配置變更后再導(dǎo)出一次方便快速回滾。命令行設(shè)備可以用 save、write memory、copy running-config startup-config 等命令保存Web 設(shè)備通常有“保存配置”“備份配置”按鈕。在策略中添加描述和負(fù)責(zé)人字段。網(wǎng)絡(luò)團(tuán)隊(duì)共用一臺(tái)防火墻時(shí)如果不注明用途幾個(gè)月后沒(méi)人能說(shuō)清這條 NAT 是為誰(shuí)開(kāi)放的。建議在規(guī)則描述中寫(xiě)明業(yè)務(wù)名稱、負(fù)責(zé)人、聯(lián)系電話、過(guò)期時(shí)間。對(duì)臨時(shí)開(kāi)放策略設(shè)置定時(shí)失效。如果是給客戶演示三天可以在防火墻或上層安全設(shè)備上設(shè)置策略有效時(shí)間到期自動(dòng)阻斷。避免“臨時(shí)開(kāi)一下”變成永久規(guī)則。12. 總結(jié)與后續(xù)擴(kuò)展防火墻發(fā)布內(nèi)部 Web 服務(wù)最需要理解清楚的一點(diǎn)是目的 NAT 負(fù)責(zé)“把公網(wǎng)地址翻譯成內(nèi)網(wǎng)地址”安全策略負(fù)責(zé)“允許這條訪問(wèn)鏈路通過(guò)”。兩者配合好外部互聯(lián)網(wǎng)主機(jī)才能穩(wěn)定訪問(wèn)公司內(nèi)部 Web 服務(wù)器。驗(yàn)證時(shí)從本機(jī)、內(nèi)網(wǎng)、外網(wǎng)、防火墻會(huì)話四個(gè)層面逐級(jí)排查基本能快速定位絕大多數(shù)問(wèn)題。整個(gè)配置過(guò)程并不復(fù)雜難點(diǎn)在于安全邊界的把控。端口越少越好、策略越明確越好、日志越完整越好這三條會(huì)長(zhǎng)期保護(hù)你的網(wǎng)絡(luò)環(huán)境。如果后續(xù)業(yè)務(wù)量增長(zhǎng)可以在 Web 服務(wù)器前面增加一套負(fù)載均衡或 Web 應(yīng)用防火墻讓外部訪問(wèn)入口更專業(yè)也更容易擴(kuò)展。建議先把基礎(chǔ) NAT 發(fā)布流程收藏起來(lái)下次遇到類似需求時(shí)直接按清單操作。