如何在 Linux 上設定特定於服務的防火牆?

如何在 Linux 上設定特定於服務的防火牆?

我如何配置某種防火牆,只允許特定程式使用系統中的開放連接埠(最好是 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 產品捆綁在一起)。我個人認為管理會比較困難。

相關內容