Iptables

無法在 ufw 上不允許 8443 的情況下將埠 443 轉發到 8443

  • October 30, 2017

我通過 iptables 和 ufw 配置了埠轉發。但是有些東西我不明白,我只是不能讓 iptables 將埠 443 轉發到 8443 ,而不允許UFW 上的埠 8443。

我希望埠 443 轉發到埠 8443,但我也希望埠 8443 從我的網路外部被禁止。

在簡歷中,如果我完全允許 UFW 上的 443 和 8443 埠,我只能將埠 443 轉發到 8443。

這是我在 before.rules 中的唯一規則:

-A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8443

這是我的 iptables 路由配置(非常簡單):

pkts bytes target     prot opt in     out     source               destination
0     0 REDIRECT   tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443 redir ports 8443

這是我的 UFW 狀態有效

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
443                        ALLOW       Anywhere
8443                       ALLOW       Anywhere       // THIS IS WHAT BOTHERS ME
22                         ALLOW       Anywhere (v6)
443                        ALLOW       Anywhere (v6)
8443                       ALLOW       Anywhere (v6)  // THIS IS WHAT BOTHERS ME

這就是我想要我的防火牆保護但不起作用的方式

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
443                        ALLOW       Anywhere
22                         ALLOW       Anywhere (v6)
443                        ALLOW       Anywhere (v6)

有任何想法嗎?提前致謝。

這裡的解決方案對我來說應該是轉發埠的預設方式,我真的不明白為什麼大多數人使用 iptables。

(1):如果您已經使用 iptables/ufw 或任何其他工具配置了埠轉發,請刪除規則。就我而言,來自 /etc/ufw/before.rules

(2):禁止您為了轉發而必須公開的埠。在我的情況下是 8443。

(3):我必須在 Ubuntu 12.04 中安裝 xinetd

#apt-get install xinetd

(4):創建將轉發埠的新服務:

vi /etc/xinetd.d/tomcat-https 有這個內容:

service tomcat-https
{
 disable                 = no
 flags                   = REUSE
 wait                    = no
 user                    = root
 socket_type             = stream
 protocol                = tcp
 port                    = 443
 redirect                = localhost 8443
 log_on_success  -= PID HOST DURATION EXIT

 #per_source = UNLIMITED
 #instances = UNLIMITED
}

(5):將服務添加到/etc/services

vi /etc/services

這一行:

https           443/tcp         # http protocol over TLS/SSL

應該是這樣的:

https           443/tcp         tomcat-https    # http protocol over TLS/SSL

最後我不得不完全重啟。您可以嘗試重新啟動 ufw、networking 和 xinetd。

除了使用 PREROUTING 來重定向數據包,您可以使用rinetd. 這個程序監聽給定的埠,當有人連接到它時,rinetd 連接到給定的目標埠,基本上代理了兩者之間的流量。通過 rinetd 偵聽埠 443 並將連接轉發到埠 8443,您可以允許來自 localhost 的 8443 上的連接並阻止所有其他連接。

引用自:https://serverfault.com/questions/419096