天天看點

雲伺服器 ECS 安全 > ECS安全組實踐(三)

ecs安全組實踐(三)

在安全組的使用過程中,通常會将所有的雲伺服器放置在同一個安全組中,進而可以減少初期配置的工作量。但從長遠來看,業務系統網絡的互動将變得複雜和不可控。在執行安全組變更時,您将無法明确添加和删除規則的影響範圍。

合理規劃和區分不同的安全組将使得您的系統更加便于調整,梳理應用提供的服務并對不同應用進行分層。這裡推薦您對不同的業務規劃不同的安全組,設定不同的安全組規則。

區分不同的安全組

公網服務的雲伺服器和内網伺服器盡量屬于不同的安全組

是否對外提供公網服務,包括主動暴露某些端口對外通路(例如 80、443 等),被動地提供(例如雲伺服器具有公網 ip、eip、nat 端口轉發規則等)端口轉發規則,都會導緻自己的應用可能被公網通路到。

2 種場景的雲伺服器所屬的安全組規則要采用最嚴格的規則,建議拒絕優先,預設情況下應當關閉所有的端口和協定,僅僅暴露對外提供需要服務的端口,例如 80、443。由于僅對屬于對外公網通路的伺服器編組,調整安全組規則時也比較容易控制。

對于對外提供伺服器編組的職責應該比較明晰和簡單,避免在同樣的伺服器上對外提供其它的服務。例如 mysql、redis 等,建議将這些服務安裝在沒有公網通路權限的雲伺服器上,然後通過安全組的組組授權來通路。

如果目前有公網雲伺服器已經和其它的應用在同一個安全組 sg_current。您可以通過下面的方法來進行變更。

1.梳理目前提供的公網服務暴露的端口和協定,例如 80、443。

2.新建立一個安全組,例如 sg_web, 然後添加相應的端口和規則。

說明:授權政策:允許,協定類型:all, 端口: 80/80,授權對象: 0.0.0.0/0, 授權政策:允許,協定類型:all,端口: 443/443 授權對象: 0.0.0.0/0。

3.選擇安全組 sg_current, 然後添加一條安全組規則,組組授權,允許 sg_web 中的資源通路sg_current。

說明:授權政策:允許,協定類型:all,端口:-1/-1,授權對象:sg_web,優先級:按照實際情況自定義[1-100]。

4.将一台需要切換安全組的執行個體 ecs_web_1 添加到新的安全組中。

在 ecs 控制台中,選擇 安全組管理。

選擇 sg_web > 管理執行個體 > 添加執行個體,選擇執行個體 ecs_web_1 加入到新的安全組 sg_web 中,确認 ecs_web_1 執行個體的流量和網絡工作正常。

5.将 ecs_web_1 從原來的安全組中移出。

選擇 sg_current > 管理執行個體 > 移出執行個體,選擇 ecs_web_1 ,從 sg_current 移除,測試網絡連通性,确認流量和網絡工作正常。

如果工作不正常,将 ecs_web_1 仍然加回到安全組 sg_current 中,檢查設定的 sg_web 暴露的端口是否符合預期,然後繼續變更。

6.執行其它的伺服器安全組變更。

不同的應用使用不同的安全組

在生産環境中,不同的作業系統大多情況下不會屬于同一個應用分組來提供負載均衡服務。提供不同的服務意味着需要暴露的端口和拒絕的端口是不同的,建議不同的作業系統盡量歸屬于不同的安全組。

例如,對于 linux 作業系統,可能需要暴露 tcp(22)端口來實作 ssh,對 windows 可能需要開通 tcp(3389) 遠端桌面連接配接。

除了不同的作業系統歸屬不同的安全組,即便同一個鏡像類型,提供不同的服務,如果之間不需要通過内網進行通路的話,最好也劃歸不同的安全組。這樣友善解耦,并對未來的安全組規則進行變更,做到職責單一。

在規劃和新增應用時,除了考慮劃分不同的虛拟交換機配置子網,也應該同時合理的規劃安全組。使用網段+安全組限制自己作為服務提供者和消費者的邊界。

具體的變更流程參見上面的操作步驟。

生産環境和測試環境使用不同的安全組

為了更好的做系統的隔離,在實際開發過程中,您可能會建構多套的測試環境和一套線上環境。為了更合理的做網絡隔離,您需要對不同的環境配置使用不通的安全政策,避免因為測試環境的變更重新整理到了線上影響線上的穩定性。

通過建立不同的安全組,限制應用的通路域,避免生産環境和測試環境聯通。同時也可以對不同的測試環境配置設定不同的安全組,避免多套測試環境之間互相幹擾,提升開發效率。

僅對需要公網通路子網或者雲伺服器配置設定公網 ip

不論是經典網絡還是專有網絡 (vpc) 中,合理的配置設定公網 ip 可以讓系統更加友善地進行公網管理,同時減少系統受攻擊的風險。在專有網絡的場景下,建立虛拟交換機時,建議您盡量将需要公網通路的服務區的 ip 區間放在固定的幾個交換機(子網 cidr)中,友善審計和區分,避免不小心暴露公網通路。

在分布式應用中,大多數應用都有不同的分層和分組,對于不提供公網通路的雲伺服器盡量不提供公網ip,如果是有多台伺服器提供公網通路,建議您配置公網流量分發的負載均衡服務來公網服務,提升系統的可用性,避免單點。

對于不需要公網通路的雲伺服器盡量不要配置設定公網 ip。專有網絡中當您的雲伺服器需要通路公網的時候,優先建議您使用 nat 網關,用于為 vpc 内無公網 ip 的 ecs 執行個體提供通路網際網路的代理服務,您隻需要配置相應的 snat 規則即可為具體的 cidr 網段或者子網提供公網通路能力,具體配置參見 snat。避免因為隻需要通路公網的能力而在配置設定了公網 ip(eip) 之後也向公網暴露了服務。

最小原則

安全組應該是白名單性質的,是以需盡量開放和暴露最少的端口,同時盡可能少地配置設定公網 ip。若想通路線上機器進行任務日志或錯誤排查的時候直接配置設定公網 ip 或者挂載 eip 雖然簡便,但是畢竟會将整個機器暴露在公網之上,更安全的政策是建議通過跳闆機來管理。

使用跳闆機

跳闆機由于其自身的權限巨大,除了通過工具做好審計記錄。在專有網絡中,建議将跳闆機配置設定在專有的虛拟交換機之中,對其提供相應的 eip 或者 nat 端口轉發表。

首先建立專有的安全組 sg_bridge,例如開放相應的端口,例如 linux tcp(22) 或者 windows rdp(3389)。為了限制安全組的入網規則,可以限制可以登入的授權對象為企業的公網出口範圍,減少被登入和掃描的機率。

然後将作為跳闆機的雲伺服器加入到該安全組中。為了讓該機器能通路相應的雲伺服器,可以配置相應的組授權。例如在 sg_current 添加一條規則允許 sg_bridge 通路某些端口和協定。

使用跳闆機 ssh 時,建議您優先使用 ssh 密鑰對而不是密碼登入。

總之,合理的安全組規劃使您在擴容應用時更加遊刃有餘,同時讓您的系統更加安全。

<a href="https://help.aliyun.com/document_detail/53141.html?spm=5176.doc51171.6.739.cgd0vw">原文連結</a>

繼續閱讀