2012-07-03 88 views
2

我們有一個在亞馬遜的Beanstalk上運行的系統。 我們只想將服務器的訪問權限限制爲HTTPS。 在環境設置上阻止HTTP時 - 它阻止通過Beanstalk DNS進行訪問。 但是,如果有人知道任何服務器的公共IP(或名稱) - 他可以通過HTTP直接訪問它們。 LB似乎將請求轉發到端口80,所以我們不能更改安全組並刪除端口80. 有沒有簡單的方法來限制HTTP訪問只能來自LB? 謝謝防止對亞馬遜Elastic Beanstalk服務器的HTTP訪問

回答

0

您應該能夠通過EC2 Security Groups這是Elastic Beanstalk環境屬性來完成此操作。

默認情況下,它允許從任何IP地址連接到端口80,但是您可以刪除該規則或將其替換爲您自己的IP地址(用於測試目的)。

如果不成功,您可以在應用程序級別將所有HTTP通信重新路由到HTTPS,或者簡單地測試CGI屬性* server_port_secure *並拒絕回答。

+0

亞馬遜正在使用CloudWatch監控服務器,使用HTTP。如果監控失敗 - 服務器將被終止並啓動新的服務器。 Amazon不提供CloudWatch請求所來自的IP範圍,這意味着我們無法將安全組設置爲僅包含CloudWatch。我們需要提供對任何IP的訪問,這是我們試圖阻止的。 服務器本身不處理HTTPS(由LB處理),所以將所有通信路由到HTTPS將創建一個循環,其中服務器將HTTPS請求作爲HTTP轉發到服務器,並由服務器將其發回。 – user964797

+0

根據我的經驗,如果運行狀況檢查從未通過,它不會終止任何服務器實例以嘗試再次運行,但似乎沒有記錄。或者,您可以使用字符串HTTPS:443和TCP:80作爲運行狀況檢查地址,以獲得HTTPS或純TCP的工作。 –

0

是的,您需要http/80才能進行健康檢查。您的選擇是將所有其他請求(健康檢查URL除外)重定向爲使用https - 通過這種方式,雖然端口是開放的,但您「不以不安全的方式提供任何數據」。

0

您至少有兩種選擇:

1 - 設置安全組策略,允許僅從負載平衡器端口80訪問。重要!!!不要在實例的安全組中使用負載平衡器IP。改爲使用負載均衡器安全組ID。

2 - 從實例中刪除公共IP。如果您的所有EC2實例都擁有私有IP,並且ELB擁有公共IP,那麼您應該很好。