Cloudflare已經(jīng)提供了“始終使用HTTPS”設(shè)置,用于將所有HTTP流量重定向到HTTPS。例如,當用戶訪問 http://www.example.com 時,系統(tǒng)會通過HTTP 3XX重定向狀態(tài)碼將其跳轉(zhuǎn)到 https://www.example.com。然而,這種方法存在一個潛在風險:初始的明文HTTP請求可能包含敏感信息,在重定向之前就已暴露。
風險示例
在公共網(wǎng)絡(luò)中,初始的明文HTTP請求可能被第三方攔截,甚至可能導(dǎo)致中間人攻擊(MITM),從而泄露敏感數(shù)據(jù)。
通過完全關(guān)閉HTTP端口,我們可以從根本上杜絕這種風險,確保敏感信息不會在傳輸層暴露。
相比于事后檢測和撤銷受損憑據(jù),預(yù)防性方法更高效。通過在傳輸層直接拒絕HTTP連接,可以在任何應(yīng)用層數(shù)據(jù)交換之前阻止?jié)撛诘男孤丁_@種方法不僅更安全,還能簡化操作流程,避免頻繁的密鑰輪換。
應(yīng)用層請求需要依賴底層傳輸層(如TCP或QUIC)建立連接。端口號和IP地址的組合用于標識傳輸信道。例如:
通過禁用HTTP端口(如80),可以在傳輸層阻止連接建立,從而避免敏感數(shù)據(jù)在客戶端發(fā)送之前被暴露。
為了實現(xiàn)強制HTTPS,Cloudflare計劃逐步關(guān)閉全球范圍內(nèi)的HTTP端口。以下是關(guān)鍵步驟:
配置IPv4和IPv6地址空間
使用工具如Tubular,將套接字與特定的IP:端口對解耦,便于大規(guī)模管理端點。
更新防火墻規(guī)則
擴展全局防火墻配置,拒絕HTTP端口上的任何入站數(shù)據(jù)包。例如:
iptables -A INPUT -p tcp -d --dport -j REJECT --reject-with tcp-reset
iptables -A OUTPUT -p udp -d --dport -j REJECT --reject-with icmp-port-unreachable
更新DNS策略
在權(quán)威DNS服務(wù)器中為僅HTTPS接口的API請求都路由到正確的HTTPS接口。
在完全關(guān)閉HTTP端口之前,Cloudflare建議客戶通過儀表板監(jiān)控未加密的流量。具體步驟如下:
注意
選擇加入后,您的網(wǎng)站將不再通過HTTP提供服務(wù),未加密流量的比例應(yīng)降為零。
關(guān)閉HTTP接口后,任何試圖通過HTTP訪問API的請求都會被直接拒絕,而不是返回403 Forbidden響應(yīng)。這種“快速失敗”機制可以幫助開發(fā)者迅速發(fā)現(xiàn)問題并糾正錯誤,例如將 http:// 更改為 https://。
此外,Cloudflare將逐步停止對不包含SNI值的傳統(tǒng)API客戶端的支持。我們將與受影響的客戶密切合作,確保平穩(wěn)過渡。
除了Cloudflare API的用例外,我們還在探索其他領(lǐng)域的明文流量端口關(guān)閉方案。盡管未加密流量的完全消除可能需要時間,但每一個小的改進都能為構(gòu)建更安全的互聯(lián)網(wǎng)做出貢獻。
到2025年最后一個季度,Cloudflare將為所有客戶提供通過儀表板或API啟用強制HTTPS的能力。我們相信,安全應(yīng)該對所有人免費!
原文鏈接: https://blog.cloudflare.com/https-only-for-cloudflare-apis-shutting-the-door-on-cleartext-traffic/