我通过iptables和ufwconfiguration了端口转发。 但有一些我不明白,我只是不能让iptables转发端口443到8443, 而不允许在UFW 端口8443 。
我希望端口443转发到端口8443,但我也希望端口8443被禁止从我的networking外部。
在简历中,如果我完全允许UFW上的端口443和8443,我只能将端口443转发到8443。
这是我在以后的唯一规则:
-A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8443
这是我的iptables路由configuration(非常简单):
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)
有任何想法吗? 提前致谢。
而不是使用PREROUTINGredirect数据包,你可以使用rinetd 。 这个程序监听一个给定的端口,当有人连接到它时,rinetd连接到一个给定的目标端口,并实质上代理两者之间的stream量。 使用rinetd监听端口443并将连接转发到端口8443,可以允许来自本地主机的8443连接并阻止所有其他连接。
这里的解决scheme对我来说应该是转发端口的默认方式,我真的不明白为什么大多数人使用iptables。
(1):如果您已经使用iptables / ufw或任何其他工具configuration了端口转发,请删除规则。 在我的情况下从/etc/ufw/before.rules
(2):禁止为了转发而必须暴露的端口。 在我的情况8443。
(3):我必须在Ubuntu 12.04中安装xinetd
#apt-get install xinetd
(4):创build将转发端口的新服务:
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。