除少數(shù)特殊情況以外,AWS客戶(hù)很少會(huì)關(guān)心或者考慮控制云基礎(chǔ)設(shè)施的位置或配置。EC2安全組和網(wǎng)絡(luò)訪問(wèn)控制列表將有助于保護(hù)工作負(fù)載。
當(dāng)企業(yè)架構(gòu)師們?cè)跒樵圃O(shè)計(jì)應(yīng)用架構(gòu)時(shí),他們會(huì)面臨眾多的挑戰(zhàn)。這些挑戰(zhàn)之一就包括他們無(wú)法掌控物理硬件或網(wǎng)絡(luò)的無(wú)所適從感。了解如何確保資源安全性將是一項(xiàng)棘手的工作,因?yàn)檫@些資源從物理上來(lái)說(shuō)都是不在用戶(hù)控制范圍內(nèi)的,但是作為工程師,他們必須將未知的、抽象的實(shí)施與已知的、熟悉的概念一一聯(lián)系起來(lái)。
確保云應(yīng)用安全性的基本要求是,了解如何實(shí)現(xiàn)資源隔離。在內(nèi)部部署環(huán)境中,這一點(diǎn)涉及到路由器、子網(wǎng)和防火墻。而在云環(huán)境中,當(dāng)在共享基礎(chǔ)設(shè)施上運(yùn)行時(shí),服務(wù)器隔離似乎是有一點(diǎn)問(wèn)題的,因?yàn)槠渲心撑_(tái)特定虛擬機(jī)的物理位置不僅是未知的而且是有可能會(huì)發(fā)生變化的。虛擬機(jī)管理程序提供了針對(duì)服務(wù)器上其他應(yīng)用程序的內(nèi)存保護(hù),但這一做法可能還無(wú)法讓所有的IT團(tuán)隊(duì)感到滿(mǎn)意。所以,企業(yè)用戶(hù)應(yīng)如何在AWS中實(shí)現(xiàn)針對(duì)其他用戶(hù)的網(wǎng)絡(luò)隔離,以及在其自有虛擬機(jī)組中的網(wǎng)絡(luò)隔離?彈性計(jì)算云(EC2)安全組是回答這個(gè)問(wèn)題的關(guān)鍵部分。
EC2安全組可作為虛擬子網(wǎng)和客戶(hù)端防火墻的一個(gè)組合。EC2安全組中的每一個(gè)實(shí)例都共享著一個(gè)通用安全策略;類(lèi)似于防火墻的規(guī)則控制著各個(gè)組之間的流量。防火墻的默認(rèn)行為是拒絕流量的,而特定規(guī)則可允許出入站的連接。
安全組與亞馬遜虛擬私有云(VPC)密切相關(guān),后者可作為某家用戶(hù)AWS基礎(chǔ)設(shè)施中的子網(wǎng)。兩者都提供了基于端口的訪問(wèn)控制,安全組就如同基于服務(wù)器的防火墻(例如Linux iptables),而VPC則類(lèi)似于基于網(wǎng)絡(luò)的傳統(tǒng)路由器或防火墻,其預(yù)定義安全策略覆蓋了整個(gè)子網(wǎng)。下表重點(diǎn)突出了AWS安全組和VPC之間的差異。
安全組為每個(gè)虛擬機(jī)控制著出入站的流量,而一個(gè)組內(nèi)的所有實(shí)例共享著相同的策略;VPC ACL則為網(wǎng)絡(luò)子網(wǎng)做著相同的工作。兩個(gè)安全構(gòu)建體是正交的:特定VPC中的EC2實(shí)例(即共享通用網(wǎng)絡(luò)安全策略的多個(gè)EC2實(shí)例)可以屬于不同的安全組。但是,如果管理員在實(shí)例化一個(gè)實(shí)例時(shí)沒(méi)有指定EC2安全組,那么系統(tǒng)會(huì)為VPC自動(dòng)分配默認(rèn)組。如果管理員還沒(méi)有定義任何的VPC,那么AWS會(huì)創(chuàng)建一個(gè)默認(rèn)網(wǎng)絡(luò)。
EC2安全組的大拇指規(guī)則
EC2安全組在AWS中為虛擬機(jī)網(wǎng)絡(luò)安全策略基線提供了一個(gè)結(jié)構(gòu),它應(yīng)當(dāng)被視為第一道防線——一個(gè)必要但不充分的安全組件。
企業(yè)AWS部署也應(yīng)包括一個(gè)或多個(gè)VPC以便為網(wǎng)絡(luò)安全策略增加一個(gè)層。
我們提出以下建議策略,以確保AWS部署:
為每一個(gè)應(yīng)用、應(yīng)用層和管理用戶(hù)組創(chuàng)建一個(gè)獨(dú)立的安全組,并使用專(zhuān)為特定工作負(fù)載或服務(wù)層需求而調(diào)整的策略:不要為每一個(gè)實(shí)例創(chuàng)建一個(gè)獨(dú)立的安全組;不要把所有的實(shí)例都放在同一個(gè)安全組。這種舊式的“護(hù)城河和城堡”式的防火墻策略明顯外強(qiáng)中干,面對(duì)如今使用多重攻擊和內(nèi)部試探在先針對(duì)性攻擊在后的攻擊方式已無(wú)法發(fā)揮防火墻作用;不要依靠VPC的默認(rèn)AWS安全組。在默認(rèn)情況下,AWS只允許默認(rèn)組中其他實(shí)例的入站流量和所有出站流量。這可能并不是用戶(hù)所需要的。
仔細(xì)規(guī)劃網(wǎng)絡(luò)路由和子網(wǎng)設(shè)計(jì)(VPC),并使用網(wǎng)絡(luò)之間的嚴(yán)格ACL。網(wǎng)絡(luò)ACL為互聯(lián)網(wǎng)和應(yīng)用程序協(xié)議提供了精細(xì)化控制,例如GRE、IPSec、ICMP、HTTP、SSL、DNS以及源/目的IP地址范圍之間的流量限制。一方面VPC ACL獨(dú)立于安全組,另一方面兩者又相互協(xié)作。在不必要的流量和潛在有害的流量到達(dá)EC2實(shí)例和安全組策略之前,VPC ACL和安全組就就把它們剔除了。
當(dāng)為網(wǎng)絡(luò)和實(shí)例進(jìn)行ACL規(guī)則定義時(shí),使用最低權(quán)限標(biāo)準(zhǔn)。只允許絕對(duì)需要的連接、端口和用戶(hù)。
特別關(guān)注出站安全組策略。出站規(guī)則限制對(duì)特定地址的連接,例如Dropbox或中國(guó)黑客,以及可用于未授權(quán)數(shù)據(jù)泄露的端口(FTP)。
支持無(wú)所不在的日志記錄:VPC流量日志、CloudTrail、亞馬遜身份與訪問(wèn)管理等等。事件日志可提供故障問(wèn)題排除、現(xiàn)場(chǎng)安全漏洞和隨時(shí)間推移安全策略完善所必須的詳細(xì)信息。
正如任何安全指南一樣,每一家IT組織都必須確定其安全配置文件,并根據(jù)適應(yīng)特定應(yīng)用和使用場(chǎng)景需要定義策略細(xì)節(jié)。盡管如此,正確睿智地使用EC2安全組是支持云計(jì)算安全策略的堅(jiān)實(shí)支柱之一。