乘長假回顧十年工作,深感運維安全是企業安全保障的基石。
安全運維和運維安全是兩個概念。運維是工程師對各種安全設備和軟件進行運維保障系統安全,而運維安全相比之下是涵蓋了整個云計算系統和安全有關的方方面面。本文主要探討公有云環境下運維安全常見的難題及解決方案。
公有云運維安全四大風險
目前使用公有云的用戶可以分為兩類:
一開始業務就部署在公有云上面,主要以新興互聯網公司為主。已經有自建的IT環境,需要向公有云上遷移。伴隨著用戶IT環境從傳統自建IDC向公有云環境的轉變,運維工作也從內網環境遷移到公網中,這對用戶來說是一個非常大的改變。本文主要討論傳統IT環境向公有云遷移面臨的運維安全問題,要知道,傳統IT環境下所有IT基礎設施和數據都是用戶自己掌控。從心理上來講用戶感覺會更安全,對公網的暴露面也更小。一旦用戶將業務和數據都遷移到公共云上,用戶可能會有不安全感。
事實上,公共云在基礎架構安全性方面遠超一般用戶自建的IDC,主要體現在以下四個方面:
因為公有云IDC機房建設規格非常高,所以公有云的IDC機房在電力、空調等方面可用性更有保障;公有云有比較好的網絡資源,所以公有云的網絡質量更好;公有云的服務器都是批量采購和檢測,并且一般都有可靠的存儲系統,公有云的硬件可靠性也更有保障;公有云系統、安全方面都有非常專業的團隊,都是業界頂級水平,使用公有云在系統、安全方面的風險更小。但是,筆者從事運維工作十年,最近在公共云運維實踐過程中也發現:計算環境從本地到云端自身安全性是提高了,但云上的運維工作卻面臨著一些新的安全風險和挑戰。
因為公共云的運維管理工作必須通過互聯網完成,和傳統IT環境運維有很大不同,總結起來風險主要來自以下四個方面:
運維流量被劫持:公共云場景下運維最大的變化就是運維通道不在內網,而是完全通過互聯網直接訪問公共云上的各種運維管理接口。很容易被嗅探或中間人劫持攻擊,造成運維管理賬號和憑證泄露。運維管理接口暴露面增大:原來黑客需要入侵到內網才能暴力破解運維管理接口的密碼,而現在公共云上的用戶一般都是將SSH、RDP或其它應用系統的管理接口直接暴露在互聯網。只能依靠認證這一道防線來保證安全,黑客僅需破解密碼或繞過認證機制就能直接獲取管理員權限。賬號及權限管理困難:多人共享系統賬號密碼,都使用超級管理員權限,存在賬號信息泄露和越權操作風險。操作記錄缺失:公共云中的資源可以通過管理控制臺、API、操作系統、應用系統多個層面進行操作。如果沒有操作記錄,一旦出現被入侵或內部越權濫用的情況將無法追查損失和定位入侵者。這些風險都是公共云場景下進行運維工作的常見風險。
公有云運維安全八大措施阿里云在創立第一天就認定安全是頭等重要的事情。針對這些問題,阿里云提供了多種安全防護措施供用戶使用。用戶可以利用阿里云平臺產品自身的安全機制、云盾、云市場中的第三方安全產品配合,來緩解或消除這些風險。
加強運維安全工作可以采取的具體措施如下:
1.使用VPC網絡幫助用戶基于阿里云(http://click.aliyun.com/m/2185/ )構建出一個隔離的網絡環境。用戶可以完全掌控自己的虛擬網絡,包括選擇自有IP地址范圍、劃分網段、配置路由表和網關等。
從運維安全的角度出發使用VPC網絡還需要再對VPC網絡內部網段進行劃分,一般建議分為三個網段:互聯網應用組、內網應用組、安全管理組。
三個網段之間采用安全組隔離,并設置相應的訪問控制策略,限制所有實例SSH、RDP等運維管理端口只允許安全管理組訪問。建議策略如下:
互聯網應用組建議策略
安全管理組建議策略
內網應用組建議策略
2.搭建從運維工作地到阿里云的加密運維通道,用戶可以在阿里云安全市場購買專業的VPN設備來搭建加密運維通道,保證運維流量不被劫持。
運維用的VPN一般建議采用L2TP/IPSEC VPN,可以采用Site To Site或撥號兩種模式。如果是有大量運維人員在固定辦公地點辦公可以使用Site to Site模式,建立一條從運維辦公地到公共云的長連接加密通道,公共云上的安全管理組網段就相當于本地運維網絡的延伸。如果運維人員較少并且經常移動辦公,可以采用撥號VPN的模式,需要運維時再撥號連入安全管理組網段。當然也可以同時采用這兩種模式,兼顧固定地點和移動辦公運維。
最后再建議如果使用撥號模式VPN時,一定要啟用雙因素認證,配合數字證書或動態口令令牌使用,提高VPN接入安全性。
3.使用阿里云RAM,將阿里云主賬號與日常運維賬號分離,限定運維賬號管理權限和范圍。這樣即使運維賬號信息泄露也不會危及整個云基礎設施安全。RAM最佳實踐如下:
為根賬戶和RAM用戶啟用MFA
建議您為根賬戶綁定MFA,每次使用根賬戶時都強制使用多因素認證。如果您創建了RAM用戶,并且給用戶授予了高風險操作權限(比如,停止虛擬機,刪除存儲桶),那么建議您給RAM用戶綁定MFA。詳細了解多因素認證請參考管理MFA設備
使用群組給RAM用戶分配權限
一般情況下,您不必對RAM用戶直接綁定授權策略,更方便的做法是創建與人員工作職責相關的群組(如admins、developers、accounting等),為每個群組綁定合適的授權策略,然后把用戶加入這些群組。群組內的所有用戶共享相同的權限。這樣,如果您需要修改群組內所有人的權限,只需在一處修改即可。當您的組織人員發生調動時,您只需更改用戶所屬的群組即可。
將用戶管理、權限管理與資源管理分離
一個好的分權體系應該支持權力制衡,盡可能地降低安全風險。在使用RAM時,您應該考慮創建不同的RAM用戶,其職責分別是RAM用戶管理、RAM權限權限、以及各產品的資源操作管理。
為用戶登錄配置強密碼策略
如果您允許用戶更改登錄密碼,那么應該要求他們創建強密碼并且定期輪換。您可以通過RAM控制臺為RAM用戶創建密碼策略,如最短長度、是否需要非字母字符、必須進行輪換的頻率等等。
定期輪轉用戶登錄密碼和訪問密鑰
建議您或RAM用戶要定期輪換登錄密碼或訪問密鑰。在您不知情的時候,如果出現憑證泄露,那么憑證的使用期限也是受限制的。您可以通過設置密碼策略來強制RAM用戶輪換登錄密碼或訪問密鑰的周期。
撤銷用戶不再需要的權限
當一個用戶由于工作職責變更而不再使用權限時,您應該及時將該用戶的權限進行撤銷。這樣,如果在不知情的時候,當用戶的訪問憑證泄露時對您帶來的安全風險最小。
將控制臺用戶與API用戶分離
不建議給一個RAM用戶同時創建用于控制臺操作的登錄密碼和用于API操作的訪問密鑰。通常只給員工創建登錄密碼,給系統或應用程序只創建訪問密鑰。
使用策略限制條件來增強安全性
建議您給用戶授權時設置策略限制條件,這樣可以增強安全性。比如,授權用戶Alice可以關停ECS實例,限制條件是Alice必須在指定時間、并且您公司網絡中執行該操作。
不要為根賬戶創建訪問密鑰
由于根賬戶對名下資源有完全控制權限,所以為了避免因訪問密鑰泄露所帶來的災難性損失,我們不建議創建根賬號訪問密鑰并使用該密鑰進行日常工作。創建根賬號的訪問密鑰需要通過登錄阿里云控制臺才能完成,該操作需要多因素認證,并且還支持嚴格的風控檢查。只要根賬戶不主動創建訪問密鑰,賬號名下的資產安全風險可控。
遵循最小授權原則
最小授權原則是安全設計的基本原則。當您需要給用戶授權時,請授予剛好滿足他工作所需的權限,而不要過渡授權。比如,在您的組織中,如果Developers組員(或者一個應用系統)的工作職責只需要讀取OSS存儲桶里的數據,那么就只給這個組(或應用系統)授予OSS資源的只讀權限,而不要授權OSS資源的所有權限,更不要授予對所有產品資源的訪問權限。
4.Linux使用密鑰登錄,不要使用賬號密碼登錄,一勞永逸的解決賬號暴力破解問題。具體配置方法如下(Ubuntu 14.04.1為例):
一. 生成密鑰的公鑰和私鑰
# ssh-keygen -t rsa
Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): #輸入密碼 Enter same passphrase again: #輸入密碼 Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 1c:37:a8:a3:65:a2:4a:89:ab:46:30:ad:54:d1:40:eb root@iZ28vo50eu5Z
二. 將生成的私鑰(id_rsa)下載到本地的windows機器上,并把公鑰導入到.ssh/authorized_keys 文件中去
# cd /root/.ssh/
#cat id_rsa.pub > authorized_keys
三. 設置sshd 服務器服務,打開以下設置:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile /root/.ssh/authorized_keys
修改以下設置:
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
四. 重啟ssh服務
#service ssh restart
五. 導入私鑰到遠程工具中,比如xshell。
5.可以修改ECS Windows 服務器的默認遠程桌面3389端口,以降低針對遠程桌面的惡意掃描和攻擊。具體配置方法如下:
一.使用工具進行自動修改
您可以在云市場中購買和使用【3389遠程端口修改工具】進行3389默認端口的自動修改。
二.手工修改:
1)【開始】----【運行】中輸入"regedit"打開注冊表編輯器;
2) 依次展開"HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminalServerWds dpwdTds cp"注冊表項;
3) 其下的"PortNumber”鍵值所對應的端口號就是遠程桌面端口,將其修改為用戶需要的端口即可;
4) 再依次展開注冊表中"HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminalServerWinStationsRDP-Tcp"注冊表項;
5) 同樣按照上面的方法將"PortNumber"鍵值進行更改保存。
注意:修改后需要檢查防火墻、tcp/ip篩選中是否有安全規則限制,并需要重啟服務器后生效。
1) Windows 2003開啟端口方法:
遠程登陸服務器后,進入控制面板雙擊“windows防火墻”,打開防火墻后,點擊“例外”選項卡可以看到服務器上已添加的開放端口,點擊“添加端口”,在彈出的框中輸入您需要添加的端口號,確定完成。再進入控制面板點擊“網絡連接”,在外網網卡上點擊鼠標右鍵“屬性”,并雙擊“Internet 協議 (TCP/IP)”,點擊“高級”,在彈出的框中點擊“選項”,點擊“屬性”,在TCP/IP篩選的彈出框中,添加TCP協議的端口,確定后重啟服務器,端口就開通了。
2) Windows 2008 開啟端口方法:
遠程登陸服務器后,進入控制面板--wiindows防火墻,打開windows防火墻,選擇“高級設置”,左上方選擇“入站規則”,在右上方選擇“新建規則”,進入規則向導頁面選擇“端口”,下一步協議選擇“TCP”,選擇特定本地端口填寫您要開啟的端口號,下一步選擇“允許連接”,下一步設置允許應用到的規則域區域,建議全部選擇,下一步設置端口名稱,完成即可。
6.安裝云盾安騎士客戶端,安騎士不僅能攔截密碼破解和發現異地登錄問題,還能提高主機安全防護能力,推薦用戶都安裝。
7.使用集中的特權及賬號管理系統統一管理運維賬號和權限,比如阿里云安全市場中的專業堡壘機,解決系統賬號復用、運維權限混亂、運維過程不透明等運維難題,并將系統操作日志記錄下來以備審計。
8.開啟阿里云ActionTrail,記錄用戶的云賬戶資源操作,提供操作記錄查詢,并可以將記錄文件保存到用戶指定的OSS存儲空間。利用 ActionTrail保存的所有操作記錄,可以實現云端用戶權限安全分析、資源變更追蹤以及合規性審計。
打開ActionTrail控制臺,進入“歷史事件查詢”,將可以看到最近7天的操作記錄。
總體架構示意圖
結束語安全防護是一個系統性的工作,上面這些建議僅是云端運維安全最基本的一些要求。如果需要更深入的解決方案可以聯系阿里云安全解決方案團隊。
作者:阿里云高級安全專家 安忍