![鎖定 Linux 應用程式的網路訪問](https://rvso.com/image/1638105/%E9%8E%96%E5%AE%9A%20Linux%20%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F%E7%9A%84%E7%B6%B2%E8%B7%AF%E8%A8%AA%E5%95%8F.png)
我想在 Linux VM 中執行一個不受信任的應用程式(主機是執行 VirtualBox 的 Windows 10)。它需要存取我的 LAN 上的另一台伺服器,但我想阻止一個 IP 上除此連接埠之外的任何其他網路存取。
AppArmor 似乎不允許這種細粒度的網路限制。
我不想阻止整個來賓作業系統的網路訪問,因為我希望能夠運行 eg sudo apt-get update
,但如果這是我能做的最好的事情,那就可以接受。
最好的解決方案是什麼?也許是在啟動該程式之前設定臨時系統範圍防火牆規則的腳本?
答案1
由於您的虛擬機器是 Linux,我會利用 Linux命名空間運行該應用程式沙箱化的環境,例如使用火獄。在你的情況下,一種可能的方法是創建一個虛擬網路介面範圍有限,只能到達 LAN 上的其他伺服器。
然後使用 Firejail 啟動您的應用程序,以便它只能「看到」一個網路介面 - 受限制的網路介面。
從命令列產生的命令將類似於以下內容:
firejail --net=veth0 yourapp
但您也可以建立自訂設定檔。