如何防止使用者使用 server.domain.com 訪問網站但允許通過 vip.domain.com?
我們將我們的網站設置為在 play 框架上執行。它在 9000 上執行 http。我們可以通過訪問http://servername.domain.com:9000訪問該站點,其中 servername 是 Web 伺服器的名稱。
我們還設置了 F5 負載均衡器,將所有流量從 http 重定向到 https,將流量從埠 443 重定向到 9000。我們為 F5 設置了一個域名 vip.domain.com,它連接到後端的這個網路伺服器。我們從池中取出其他網路伺服器進行調試,因此池中目前只有 1 台伺服器。
當我在 Chrome 上訪問該站點時,如果我們訪問http: //vip.domain.com,F5會將我們重定向到https://vip.domain.com,我們會看到綠色掛鎖,上面寫著“安全”。
當我輸入http://server.domain.com:9000時,它顯示“不安全”並且我們沒有得到掛鎖。
有人進行了安全掃描,並說我們正在以未加密的明文發送內容。我們已經完成了所有測試並告訴大家去http://vip.domain.com>,但我猜掃描使用了<http://servername.domain.com:9000。
有沒有辦法使http://servername.domain.com:9000>不起作用但仍然為<http://vip.domain.com保留埠 9000 ?如果需要,我們有權對伺服器和 VIP 進行更改。
最簡單的方法是設置防火牆,阻止埠 9000 訪問負載均衡器 IP 以外的任何主機(前提是它不是動態的)
簡單的規則:
iptables -A INPUT -p tcp --dport 9000 -m comment --comment 'allow LB traffic' -s LB.IP.ADDR.HERE -j ACCEPT
iptables -A INPUT -p tcp --dport 9000 -m comment --comment 'drop all other requests to 9000' -j DROP
這些將:
- 允許來自 LB 機器的埠 9000(您可以為更多 LB 添加更多規則
- 阻止其他流量到埠 9000
更好的方法是在您的應用程序中檢測連接中使用了哪個域,並在使用錯誤地址時重定向到安全地址。我不確定您的框架/應用程序,但大多數較大的框架/應用程序都提供了這樣的機制。