我們有一臺運行Linux的設備,我們需要在此上運行不受信任的應用程序。我們正試圖減輕以下安全問題 -在沙箱中的Linux上運行不受信任的應用程序
- 不受信任的應用程序不應該能夠在覈心操作系統數據和二進制文件產生不利影響
- 不受信任的應用程序不應該能夠到另一個應用程序的數據和二進制文件產生不利影響
- 非信任應用程序不應該能夠佔用過多的CPU,內存或磁盤並導致DoS /資源匱乏情況一樣的核心操作系統或其它應用程序
從不受信任的應用程序的立場點,只需要能夠讀取和寫入自己的目錄,也許安裝USB驅動器
我們正在考慮使用以下方法之一 -
方法1 - 使用了SELinux的沙盒
- 這可能嗎?我已經閱讀了一些SELinux,在設置策略文件和在運行時強制執行它等方面看起來有點複雜。SELinux可以做到這一點,並限制不可信任的應用程序只讀/寫自己的目錄,並且能夠設定配額限制?
方法2 - 我們自己的
創建一個新的沙箱在安裝時
- 每個置信應用
- 郵票整個應用程序創建一個新的應用程序用戶目錄和具有權限的文件,以便只有應用程序用戶才能讀取和寫入 使用的ulimit應用程序用戶分
- 設置配額/配額
在運行時,推出採用
- 關閉所有打開的文件描述符/句柄
- 使用的chroot設置根的信任應用程序到應用程序目錄
- 在應用程序用戶環境下啓動應用程序
關於上述的想法?哪種方法比其他方法更安全?還有另一種方法可能會更好嗎?由於某些原因,我們沒有選擇移動Android,因此我們無法使用Android本身提供的沙盒功能...
讓我知道
感謝,
你的選擇數字2實際上聽起來很像Android的沙箱功能(除了chroot) - 那些工作到內核用戶安全模型保持完好的程度... – 2013-03-15 17:22:01
@ chris-stratton - Android是什麼我們用作參考來提出我們的方法-2。不幸的是,我們現在無法移動到Android本身,所以沒有可以選擇使用Android沙盒的選項...... – user967973 2013-03-15 18:57:46
如何使用Linux的命名空間和cgroups?老實說,我不太熟悉它,但根據我的卑微知識,你可以將流程的資源孤立於你所設定的內容。換句話說,你創建了自己的集裝箱系統,就像Docker一樣。每個進程/應用程序僅限於查看並使用分配給它的內容。 – 2017-04-18 21:58:20