如何透過 IPTables 阻止除少數 IP 之外的出站流量?

如何透過 IPTables 阻止除少數 IP 之外的出站流量?

我有一台華碩無線路由器,預載了 MERLIN。我還擁有幾台透過 Wifi 連接的網路攝影機。我想透過停用出站來防止 IP 攝影機嘗試打電話回家。我用這個做了什麼

不過,有幾件事我想做。

  1. 預設情況下防止網路攝影機向我的網路以外發送任何資料。
  2. 例外:網路攝影機需要連接並傳送到連接埠 465(SMTPS 連接埠)才能發送電子郵件。
  3. 例外:我想要一些 IP 位址(有些是 IP 範圍)能夠透過 PORT 遠端存取攝影機。所以我需要一個規則是預設的例外。

我已經設定了連接埠轉送。

例如:192.168.1.2:123(123是我用來透過瀏覽器存取相機的連接埠)是我可以透過瀏覽器線上連接到它的方式。我還希望它不僅可以在本地訪問,而且可以在家庭網路之外訪問,但可以使用少量 IP。如果您不是 IP 位址,那麼您會被刪除,如果您是的話,您就會被接受。就像保鑣一樣。因此,基本上我的工作電腦可以透過連接埠 123 存取該攝像頭,這就是我想要做的。

我了解 linux,並且知道 IPTABLES 的一些標誌,但還不夠,所以我需要專家。

謝謝!

答案1

如果您的攝影機位於標準子網路上,那麼工作會更容易。然後您可以在下面提到的每個規則中提及子網。否則,你最好看看這個帖子或類似的。

在處理如何指定攝影機的 IP 範圍後,您可以使用 --syn 選項輕鬆刪除攝影機發起的所有封包(假設它們是 tcp 連線)。此範例假設所有攝影機(<=8 台攝影機且沒有其他系統)均位於 192.168.1.0/29 的子網路上

#1    iptables -A FORWARD -s 192.168.1.0/29 -p tcp --dport 465 -j ACCEPT
#2    iptables -A FORWARD -d 192.168.1.0/29 -p tcp --sport 465 -j ACCEPT
#3    iptables -A FORWARD -s 192.168.1.0/29 -p tcp --syn -j DROP
#4    iptables -A FORWARD -s 192.168.1.0/29 -p udp -j DROP

僅當 Linux 機器上未完成 NAT 時才添加#2。

發布攝影機:

iptables -t nat -A PREROUTING -p tcp --dport 1202 -j DNAT 192.168.1.2:123
iptables -t nat -A PREROUTING -p tcp --dport 1203 -j DNAT 192.168.1.3:123
iptables -t nat -A PREROUTING -p tcp --dport 1204 -j DNAT 192.168.1.4:123

但只允許那些特定的 IP 位址存取它們:

iptables -A FORWARD -s trustedip1 -d 192.168.1.0/29 -p tcp --dport 123 -j ACCEPT
iptables -A FORWARD -s trustedip2 -d 192.168.1.0/29 -p tcp --dport 123 -j ACCEPT
iptables -A FORWARD -s trustedip3 -d 192.168.1.0/29 -p tcp --dport 123 -j ACCEPT
iptables -A FORWARD -d 192.168.1.0/29 -p tcp --dport 123 -j DROP

當然,如果攝影機位址不在一個子網路中,則必須將 192.168.1.0/29 與攝影機 IP 位址交換,並為每個攝影機重複該規則。

相關內容