避免直接為ECS執行個體分配彈性公網 IP(EIP)或固定公網 IP 位址並通過它來訪問 Internet 或提供網路服務。
安全風險
為ECS執行個體直接分配公網IP(EIP或固定公網IP)後,該執行個體即具備訪問Internet以及被Internet訪問的能力,這會直接擴大來自互連網的攻擊面,帶來以下安全風險:
被動掃描與發現:一旦ECS執行個體在公網暴露服務連接埠,就可能被掃描發現,進而面臨DDoS攻擊,或因連接埠對應服務存在遠程漏洞而被攻擊者利用,導致主機被入侵。
高危連接埠攻擊:敏感連接埠的暴露顯著增加安全風險。若安全性群組配置不當,可能導致登入、營運或管理類連接埠意外暴露在公網上,例如SSH(22連接埠)、RDP(3389連接埠)、SMB(445連接埠)等。這些連接埠一旦暴露在Internet上,極易遭受暴力破解、口令猜測、憑據泄露等攻擊,進而導致主機失陷、資料泄露等嚴重後果。
增加管理複雜性:執行個體直接綁定公網IP意味著需以執行個體為單位獨立管理公網IP地址和存取控制策略,增加了網路營運的複雜性。當執行個體數量較多時,更易出現配置錯誤、策略遺漏等安全風險,並可能形成單點故障,影響整體系統的可用性與安全性。
不符合等保合規要求:網路安全性是企業合規體系建設的重要組成部分。例如,《資訊安全技術—網路安全等級保護基本要求》等相關標準明確要求,所有公網訪問必須做到安全、可控、可審計。企業應避免將雲主機直接暴露於公網,優先採用負載平衡、NAT Gateway、Bastionhost等安全架構,實現對公網訪問的集中管控與防護。
最佳實務
正確使用安全性群組
討論進階網路方案之前,先掌握ECS最基礎、最核心的安全防線——安全性群組。它是一種虛擬防火牆,用於控制單台或多台ECS執行個體的入站和出站流量。
核心原則:最小許可權 無論配置入方向還是出方向規則,都應該嚴格遵循“非必要,不授權”的原則。這意味著:
明確授權對象: 授權IP地址時,應儘可能使用具體的IP地址或IP段(如公司的出口IP、其他雲資源的私網IP),堅決避免使用0.0.0.0/0,除非業務確實需要對全網開放(如Web服務的80/443連接埠)。
明確授權連接埠: 只開放業務必需的連接埠,對於遠端管理、資料庫等連接埠,絕不能對公網開放。
反面案例:
使用者小A為圖省事,給ECS執行個體綁定了公網IP,並在安全性群組中將SSH(22)和Redis(6379)連接埠的源地址都設定為0.0.0.0/0。同時,他為root使用者佈建了弱口令,Redis也未設定密碼。結果,在公網IP綁定後不到5分鐘,其伺服器就被自動化工具掃描發現並成功入侵,最終導致資料被竊取。
如果小A將22連接埠的源IP限制為僅公司IP訪問,將6379連接埠限制為僅VPC內網訪問,那麼即使存在弱口令,攻擊者也無法從公網直接利用這些漏洞。
常見高危連接埠列表 在配置安全性群組時,請對下表中的連接埠保持高度警惕,務必限制其訪問源IP範圍。
連接埠類別 | 連接埠號碼/協議 | 服務名稱 | 核心風險 |
遠端管理 | 22/TCP, 3389/TCP | SSH, RDP | 暴力破解,擷取伺服器完全控制權 |
資料庫 | 3306/TCP, 6379/TCP, 1433/TCP | MySQL, Redis, SQL Server | 未授權訪問,資料泄露,遠程代碼執行(RCE) |
檔案分享權限設定 | 445/TCP, 139/TCP | SMB, NetBIOS | 蠕蟲傳播(如永恒之藍),檔案竊取 |
Web應用管理 | 7001/TCP, 8080/TCP | WebLogic, Tomcat | 後台弱口令,還原序列化漏洞,導致RCE |
安全地遠端連線ECS執行個體
業務情境: 以命令列或圖形介面的方式遠程登入並管理Linux或Windows ECS執行個體。
直接暴露SSH(22)或RDP(3389)連接埠到公網容易讓主機受到攻擊。阿里雲提供了多種安全、便捷的營運工具,完全無需暴露這些高危連接埠。
為了更好地選擇,下表對比了三種主要方案:
方案 | 適用情境 |
Workbench終端串連 | 快速、臨時的日常管理,適合新手 |
會話管理 | 開發人員、營運人員的日常使用,零連接埠暴露 |
Bastionhost | 企業級、有嚴格合規和審計需求 |
方案一(便捷易用):使用Workbench遠端連線
通過Workbench串連執行個體是推薦的日常管理方式。它允許直接在瀏覽器中開啟一個安全的Shell或RDP會話來管理執行個體。
安全原理: 訪問請求首先經過阿里雲官方的、經過安全強化的Workbench服務叢集進行認證和中轉,再到達ECS執行個體。ECS執行個體只需在安全性群組中授權Workbench的服務IP段訪問管理連接埠即可,攻擊面極小。
使用方法:
方案二(靈活強大):使用會話管理
在控制台通過會話管理串連執行個體是一種更為靈活且零連接埠暴露的管理方式。
安全原理: ECS執行個體內的雲助手Agent會主動與雲助手服務端建立一個加密的反向串連。所有營運操作都通過這個已建立的隧道進行,無需在執行個體上監聽任何入方向連接埠。
使用方法:
讓ECS執行個體安全地訪問互連網(出站流量)
業務情境: ECS執行個體上啟動並執行程式需要訪問公網以下載軟體包、更新系統、或調用第三方API服務。
推薦方案:使用NAT Gateway
工作原理:
VPC內的多台ECS執行個體不綁定任何公網IP。
所有出站流量通過VPC路由指向NAT Gateway。
NAT Gateway將源私網IP地址轉換為其自身的公網IP地址,然後將請求發往互連網。
核心優勢:
隱藏後端執行個體: 互連網只能看到NAT Gateway的公網IP,無法發現或直接存取後端的ECS執行個體,極大地降低了被攻擊的風險。
集中管理: 統一管理VPC的出站流量出口,簡化網路設定。
節約公網IP: 多台ECS可共用一個或多個公網IP訪問互連網。
操作指南: 詳細配置步驟請參考官方文檔:使用公網NAT GatewaySNAT功能訪問互連網。
安全強化:配置出方向安全性群組規則
即使執行個體只能單向訪問互連網,也存在安全風險。如果執行個體不幸被植入木馬,惡意程式會主動串連外部的命令和控制伺服器(C&C)伺服器。通過配置安全性群組出方向規則,可以有效阻斷此類惡意串連。
配置步驟:
設定預設拒絕策略: 在安全性群組出方向規則中,添加一條優先順序最低(數值最大,如100)的規則,策略為“拒絕”,目標為0.0.0.0/0,所有連接埠。
允許存取必要的雲端服務: 添加高優先順序的允許規則,允許存取ECS正常運行所需的基礎雲端服務地址。例如:
Security Center Agent: 100.100.0.0/16, 106.11.0.0/16 等,連接埠 80/443。
雲助手 Agent: 100.100.100.200:80 及各地區的雲助手服務網域名稱。
阿里雲鏡像源/OSS/SLS: 根據所在地區,解析相應服務的網域名稱並添加其IP地址。
允許存取業務所需的目標地址: 如果業務需要訪問特定網域名稱(如github.com),請先在該ECS上通過dig或nslookup命令解析出其IP地址,然後將這些IP地址添加到出方向的允許規則中。
安全地向公網提供服務(入站流量)
業務情境:在ECS執行個體上部署了網站、App後端或API介面,需要為互連網使用者提供穩定、可靠的服務。
推薦方案:使用負載平衡(SLB)
直接在ECS上綁定公網IP來提供服務,會將真實伺服器暴露在公網,且不具備高可用性。生產環境的最佳實務是使用負載平衡(SLB)產品,如應用型負載平衡(ALB)或網路型負載平衡(NLB)。
工作原理:
使用者的請求首先到達負載平衡的公網服務地址。
負載平衡根據配置的轉寄規則和健全狀態檢查結果,將請求分發給後端一組健康的ECS執行個體進行處理。
ECS執行個體不直接對公網暴露,只與負載平衡進行內網通訊。
核心優勢:
隱藏後端伺服器: 使用者的訪問終點是負載平衡,無法得知後端ECS的真實IP,有效保護後端伺服器。
高可用性: 自動剔除不健康的ECS執行個體,實現容錯移轉,保障商務持續性。
負載分發: 將流量分發到多台ECS,輕鬆實現水平擴充,應對高並發情境。
安全防護整合: 可與WAF(Web Application Firewall)等安全產品聯動,提供應用程式層防護。
操作指南: 詳細配置步驟,請參見快速實現IPv4服務的負載平衡。
安全性群組聯動配置
為達到最佳安全效果,後端ECS執行個體的安全性群組應進行如下配置:
在入方向規則中,只允許來自負載平衡服務IP位址區段的流量訪問業務連接埠(如80/443)。
拒絕所有其他來源IP訪問該業務連接埠。
使用雲助手遠程連接埠轉寄實現本地訪問雲上服務
如果您的ECS執行個體規模較小,僅用於個人內網使用或臨時試用(不對外提供互連網服務),對網路通訊品質要求不高,且希望避免公網頻寬費用,推薦使用雲助手的連接埠轉寄功能。該方案適用於尚未建立完善安全防禦體系、但需要小範圍測試或遠程調用服務的情境。
應用樣本:通過本地訪問ECS上的PostgreSQL服務
假設您已在ECS執行個體上部署了 PostgreSQL 服務,並監聽在預設的 5432 連接埠。此時,您無需為ECS綁定公網IP,也無需在安全性群組中開放5432連接埠給任何外部IP,即可實現本地安全訪問。
通過會話管理CLI的連接埠轉寄訪問無公網執行個體,可將ECS執行個體的遠程連接埠(如 5432)映射到本機電腦的某個連接埠(如 8080)。當您訪問本地 127.0.0.1:8080 時,流量會經由雲助手服務與ECS上的雲助手Agent建立加密通道,實現安全的端到端轉寄。
在本機電腦中執行以下命令,將目標ECS執行個體的
5432連接埠映射到本地8080連接埠。ali-instance-cli.exe portforward -i <instance_id> -r <target_port> -l <local_port>instance_id:執行個體ID。target_port:目標執行個體的連接埠。local_port:本地連接埠。如下圖,在同一台本地機上啟動pgAdmin串連
127.0.0.1:8080。此時,所有請求將通過雲助手安全通道轉寄至ECS執行個體的5432連接埠,實現對資料庫的安全遠端存取。
合規能力
檢查
查詢繫結公網IP的ECS執行個體
在左側功能表列選擇,選擇雲產品配置風險頁簽,尋找名為使用SSH金鑰組登入的檢查項,單擊操作列的掃描按鈕。
若狀態顯示為未通過,表示存在未使用密鑰認證登入的Linux執行個體,可單擊詳情進行查看。
檢查有敏感連接埠暴露的問題安全性群組
選擇安全效能力頁簽,單擊檢查項安全性群組的特定連接埠無限制訪問,可以查看敏感連接埠無限制訪問的執行個體。
攔截
禁止為ECS執行個體綁定公網IP
針對企業使用者:
使用阿里雲主帳號登入資來源目錄控制台,單擊左側功能表列的管控策略,建立自訂權限原則,粘貼以下JSON內容。
{ "Version": "1", "Statement": [ { "Effect": "Deny", #拒絕 "Action": [ "ecs:RunInstances", #建立執行個體 "ecs:CreateInstance", #建立執行個體 "ecs:ModifyInstanceSpec", #修改執行個體 "ecs:ModifyInstanceNetworkSpec" #修改網卡 ], "Resource": "*", #對於所有資源 "Condition": { "Bool": { "ecs:AssociatePublicIpAddress": [ #綁定公網IP "true" ] } } }, { "Effect": "Deny", #拒絕 "Action": [ "vpc:AllocateEipAddress", #申請EIP "vpc:AllocateEipAddressPro", #申請EIP "vpc:AllocateEipSegmentAddress", #申請連續EIP "eipanycast:AllocateAnycastEipAddress" #申請Anycast EIP ], "Resource": "*" #對於所有資源 } ] }在資來源目錄中選擇合適的節點繫結原則,策略將對目錄下的帳號產生攔截效果。
針對非企業使用者:
使用阿里雲主帳號登入RAM控制台,單擊左側功能表列的權限原則,建立一條與上述內容相同的自訂策略。
通過系統管理權限策略授權將該條權限原則授權給RAM使用者、RAM使用者組或RAM角色。
限制敏感連接埠被任意地址訪問
針對企業使用者:
使用阿里雲主帳號登入資來源目錄控制台,單擊左側功能表列的管控策略,建立自訂權限原則,粘貼以下JSON內容。
{ "Version": "1", "Statement": [ { "Effect": "Deny", #拒絕 "Action": [ "ecs:AuthorizeSecurityGroup", #增加安全性群組入方向規則 "ecs:ConfigureSecurityGroupPermissions", #添加或修改安全性群組規則 "ecs:ModifySecurityGroupRule" #修改安全性群組規則 ], "Resource": "acs:ecs:*:*:securitygroup/*", #對於全部安全性群組 "Condition": { "StringEquals": { "ecs:SecurityGroupSourceCidrIps": [ #訪問來源IP "0.0.0.0/0", "::/0" ] }, "ForAllValue:StringEquals": { "ecs:SecurityGroupPort" : [ #包含以下目的連接埠號碼 "22", "3389", "445" ] } } } ] }在資來源目錄中選擇合適的節點繫結原則,策略將對目錄下的帳號產生攔截效果。
針對非企業使用者:
使用阿里雲主帳號登入RAM控制台,單擊左側功能表列的權限原則,建立一條與上述內容相同的自訂策略。
通過系統管理權限策略授權將該條權限原則授權給RAM使用者、RAM使用者組或RAM角色。
修複:為ECS執行個體解除綁定公網IP
解除綁定固定公網IP(Public IP):頻寬修改為 0 Mbps後固定公網IP即被釋放。具體操作,請參見訂用帳戶執行個體修改頻寬和隨用隨付執行個體修改頻寬。
解除綁定EIP:請參見解除綁定EIP。