為 iptables 建立 IP“白名單”

為 iptables 建立 IP“白名單”

我正在使用具有 iptables 的蜂窩調製解調器/路由器。還有一個笨重的 WebUI,允許進行簡單的調整,例如開啟 WAN ICMP/HTTPS/SSH。我顯然不希望這些端口擴大並面向公眾。但我希望從預定的地址白名單對該設備進行遠端管理存取。可能最多有 10 個位址,其中一些是 IP 範圍/子網路。我已經使用單一位址進行了測試,規則如下

-A HTTPS_WAN_INPUT -i ppp0 -s x.x.x.x -p tcp -m tcp --dport 443 -j ACCEPT

但是為每個連接埠/協定編寫這樣的規則 10 次似乎很笨拙,所以我寫信是為了看看是否有更好的方法來做到這一點?我可以建立一個包含所有位址的 $WHITELIST 變數並在 -s 中使用它嗎?或者我可以將白名單應用到鏈上游的某些內容,例如其中一項策略嗎?

我只是想弄清楚是否有一種更優雅的方式來允許遠端存取一組 IP,而無需為每個規則編寫 10 行不同的行。

答案1

你實際上只有兩種選擇(或組合)......但其中一種比另一種風險稍大。請記住,該src欄位也接受子網路......即 192.168.1.0/24。

第一的,如果您的 iptables/kernel 是使用該模組建構的iprange,您可以使用它來指定 IP 範圍,而不僅僅是 1-2...但您無法提供 ip 的「清單」。例子:

-A HTTPS_WAN_INPUT -i ppp0 -m iprange --src-range x.x.x.x-y.y.y.y -p tcp -m tcp --dport 443 -j ACCEPT

其次,您可以設定一個新的特定目標,包括「列入白名單」的 IP,以保持乾淨。例子:

iptables -N RemoteManagement
iptables -P RemoteManagement DROP
iptables -A -A HTTPS_WAN_INPUT -i ppp0 -p tcp -m tcp --dport 443 -j RemoteManagement

....對於您想要允許的每個 IP...

iptables -I RemoteManagement -s x.x.x.x -j ACCEPT

這使您可以保持規則更加清晰,並且能夠根據需要簡單地刪除 IP/添加 IP。當然,如果您有iprange可用的模組,您也可以在 RemoteManagement 鏈中指定範圍。您也可以在其他適用的場景中重複使用同一條鏈。

相關內容