沙箱與容器之間有什么區(qū)別?
容器和沙箱是在談?wù)搻阂廛浖雷o(hù)時(shí)經(jīng)常提到的兩個(gè)術(shù)語(yǔ),很多企業(yè)想知道哪種方法最好。答案是兩者相結(jié)合,但是很多企業(yè)可能負(fù)擔(dān)不起或缺乏部署這兩種方法的專(zhuān)業(yè)技能。為了找到適合你企業(yè)特定需求的最佳選擇,重要的是要了解如何使用它們。
在談?wù)撋诚浜蛙浖萜髦g的區(qū)別前,你需要先了解一些事情?,F(xiàn)在,大多數(shù)企業(yè)已經(jīng)將應(yīng)用程序容器和虛擬化用于很多不同目的,其中很多與安全性息息相關(guān),其中包括:
- 他們使用VM在虛擬數(shù)據(jù)中心或IaaS中運(yùn)行安全工具。
- 他們使用虛擬機(jī)管理程序功能(例如快照)來(lái)幫助支持配置管理和修復(fù)。
- 他們使用容器來(lái)支持微服務(wù)和服務(wù)網(wǎng)格架構(gòu)。
- 他們同時(shí)使用VM和容器來(lái)支持DevOps工具鏈中安全活動(dòng)的自動(dòng)化。
不過(guò),在這篇文章中,我們將探討如何使用這些工具來(lái)專(zhuān)門(mén)支持沙箱。幾年前,沙箱開(kāi)始流行,當(dāng)時(shí)大家意識(shí)到惡意軟件仍然可能繞過(guò)防病毒軟件并感染網(wǎng)絡(luò)。防病毒的問(wèn)題在于,所有系統(tǒng)都需要在計(jì)算機(jī)上安裝基于簽名的代理,并且必須定期更新它們,為端點(diǎn)提供機(jī)會(huì)來(lái)抵御惡意軟件。由于防病毒并不能捕獲所有內(nèi)容-即使保持其更新并安裝在工作站,于是沙箱的使用開(kāi)始增加。
VM沙箱安全模型
從本質(zhì)上講,沙箱是關(guān)于創(chuàng)建隔離的獨(dú)立環(huán)境,你可將其用于特定安全目的,例如FreeBSD。例如,對(duì)于反惡意軟件,你可以使用隔離的沙箱引爆惡意軟件樣本以查看其行為。通過(guò)運(yùn)行可疑惡意軟件樣本并觀(guān)察其行為,你可以觀(guān)察攻擊方法,以了解你為何成為攻擊目標(biāo)。在未知軟件的情況下,你可以使用此方法來(lái)確定文件是否可以安全地在托管端點(diǎn)運(yùn)行。如果該軟件不執(zhí)行任何惡意操作,則可以將其中繼給最終用戶(hù)。同樣,對(duì)于可疑的惡意軟件樣本,你可以使用此技術(shù)來(lái)進(jìn)一步研究惡意軟件。這可以讓你知道你是否是復(fù)雜攻擊活動(dòng)(例如民族國(guó)家)的目標(biāo),還是只是被機(jī)器人或腳本小子隨機(jī)地作為目標(biāo)。
虛擬機(jī)管理程序提供兩個(gè)功能,使此技術(shù)更安全。首先,它們以無(wú)孔方式執(zhí)行分段。在現(xiàn)代環(huán)境中,我們使用虛擬化,這意味著分段邊界至關(guān)重要??紤]到現(xiàn)在很多企業(yè)使用多租戶(hù)IaaS,我們很可能看到數(shù)據(jù)被竊取或者嘗試跨VM分段邊界的攻擊,例如企業(yè)可以從同一虛擬機(jī)管理程序上竊取數(shù)據(jù)、破壞或以其他方式攻擊其他VM。其次,虛擬機(jī)監(jiān)控程序讓我們有選擇地限制或阻止VM可以執(zhí)行的操作。例如,它可以防止工作負(fù)載在網(wǎng)絡(luò)上發(fā)送或接收數(shù)據(jù),或者可以使用快照將損壞的VM恢復(fù)到已知可靠狀態(tài)。
在這種方式下,基于虛擬機(jī)的沙箱依賴(lài)于多個(gè)虛擬機(jī)來(lái)捕獲流量,使其進(jìn)入和流出網(wǎng)絡(luò),并充當(dāng)惡意活動(dòng)檢測(cè)的檢查點(diǎn)。這種沙箱的目的是獲取未知文件,并在其中一個(gè)VM中引爆它們,以確定該文件是否可安全安裝。由于惡意軟件作者可以使用多種逃避技術(shù)來(lái)使文件看起來(lái)安全,因此這并不總是萬(wàn)無(wú)一失的解決方案,但確實(shí)可提供額外的防御層。
容器沙箱安全模型
我們可以使用的另一種方法是軟件容器?,F(xiàn)在有多種不同的部署模式。Docker和Rocket等工具可創(chuàng)建隔離的應(yīng)用程序環(huán)境;分段是在OS級(jí)別執(zhí)行-在這種情況下,使用Linux名稱(chēng)空間和cgroup。某些操作系統(tǒng)中還內(nèi)置了基于容器的配置,例如Linux中的chroot jails或Windows的Windows Sandbox。
從使用的角度來(lái)看,你可以將容器中的所有內(nèi)容指定為始終不受信任,從而使你能夠創(chuàng)建單獨(dú)的隔離環(huán)境,該環(huán)境不會(huì)影響基礎(chǔ)主機(jī)。在這種使用情況下,該容器中的所有東西都被認(rèn)為具有潛在風(fēng)險(xiǎn)。而且容器不會(huì)嘗試確定文件是否損壞;它只是阻止惡意軟件活動(dòng)傳播或破壞基礎(chǔ)主機(jī)。例如,考慮這種情況,你擔(dān)心用戶(hù)容易受到偷渡式下載攻擊或其他虛假活動(dòng)攻擊。一種方法是在應(yīng)用程序沙箱中運(yùn)行瀏覽器,并在用戶(hù)的瀏覽會(huì)話(huà)完成后清除沙箱。用戶(hù)收集的任何潛在惡意軟件都會(huì)與沙箱一起清除。
當(dāng)采用這種方式時(shí),軟件容器不會(huì)使用防病毒產(chǎn)品之類(lèi)的簽名。它們不會(huì)阻止攻擊,只是限制攻擊所影響的范圍受,因?yàn)槿萜魇菄@特定應(yīng)用程序而構(gòu)建(上述示例中是瀏覽器),以隔離攻擊,防止攻擊擴(kuò)散到操作系統(tǒng)的其他部分。
在很多時(shí)候,這種方法會(huì)讓容器將沙箱帶到端點(diǎn)。你不必?fù)?dān)心下載的文件的內(nèi)容,只需要讓用戶(hù)使用完應(yīng)用程序后將其重置為良好狀態(tài)。
沙箱與容器的使用注意事項(xiàng)
究竟是使用沙箱還是容器,這很難選擇,最好在可能的情況下同時(shí)使用兩者。你的用法將在很大程度上決定方法。典型的基于VM的沙箱方法可能涉及系統(tǒng)挑選可疑文件-在其通過(guò)沙箱時(shí)。與傳統(tǒng)的防病毒軟件相比,這很吸引人,因?yàn)樗恍枰惭b代理即可查找簽名。反過(guò)來(lái),這意味著它有可能找到并正確標(biāo)記沒(méi)有先兆的惡意軟件樣本。
另一方面,另一個(gè)用例是使用軟件容器在高風(fēng)險(xiǎn)應(yīng)用程序(例如用戶(hù)的瀏覽器)周?chē)鷦?chuàng)建隔離墻。這種方法通常比較繁瑣,并且依賴(lài)于端點(diǎn)和/或應(yīng)用程序的配置。
為了確定哪種工具最適合你,請(qǐng)嘗試確定當(dāng)前哪個(gè)區(qū)域?qū)δ愕沫h(huán)境構(gòu)成最大的風(fēng)險(xiǎn),并確定這些選項(xiàng)中的哪一個(gè)將為你提供最大的前期保護(hù)。你希望加強(qiáng)對(duì)電子郵件惡意軟件的抵御?在這種情況下,集成到電子郵件網(wǎng)關(guān)中的基于VM的方法可能是不錯(cuò)的選擇。你是想減少偷渡式下載等攻擊?在這種情況下,軟件沙箱可能更適合你。
哪種架構(gòu)最適合你的環(huán)境取決于你的架構(gòu),但是了解容器和沙箱之間的區(qū)別無(wú)疑是第一步。