如果不允许 ufw 上使用 8443,则无法将端口 443 转发到 8443

如果不允许 ufw 上使用 8443,则无法将端口 443 转发到 8443

我通过 iptables 和 ufw 配置了端口转发。但有一点我不明白,我就是无法让 iptables 将端口 443 转发到 8443不允许端口 8443在 UFW 上。

我希望端口 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)

有什么想法吗?提前致谢。

答案1

这里给出的解决方案对我来说应该是转发端口的默认方式,我真的不明白为什么大多数人使用 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、网络和 xinetd。

答案2

您可以使用 ,而不是使用 PREROUTING 来重定向数据包rinetd。此程序侦听给定端口,当有人连接到该端口时,rinetd 会连接到给定目标端口,并实质上代理两者之间的流量。使用 rinetd 侦听端口 443 并将连接转发到端口 8443,您可以允许来自本地主机的 8443 上的连接并阻止所有其他连接。

相关内容