
我如何配置某種防火牆,只允許特定程式使用系統中的開放連接埠(最好是 RHEL)?
例如,如果我希望yum
能夠正常連接和更新,但我想阻止出站 Web 請求(例如瀏覽),我仍然需要打開連接埠 80、443、53 和 UDP-53。
但是,我需要防火牆能夠區分yum
網頁瀏覽器。
答案1
iptables
能夠檢查該程式的使用者。
使用--uid-owner
或--gid-owner
標誌,您可以將網路限制為僅限指定使用者(root?),並且您的網頁伺服器(可能以 身分執行www-data
)資料包將被丟棄。
當然,這限制了每個用戶/群組,而不是每個程序,但當今大多數服務都以其自己的用戶和群組運行。
例子:
iptables -I OUTPUT -m owner --uid-owner www-data -jDROP
將出站網路限制為 root 以外的任何人的範例:
iptables -P OUTPUT DROP
iptables -I OUTPUT -m owner --uid-owner root -jALLOW
另一種方法是設定規則SELinux
(通常與 RedHat 產品捆綁在一起)。我個人認為管理會比較困難。