La redirección de puerto 443 a 8443 no funciona para mi instancia de Tomcat

La redirección de puerto 443 a 8443 no funciona para mi instancia de Tomcat

Estoy usando el servidor sin cabeza de Ubuntu 18.04 en un servidor host dedicado. El proveedor de alojamiento tiene un firewall externo, donde abrí los puertos 8443,443 (tcp). En mi servidor Ubuntu estoy usando iptables, donde redirigí el puerto 443 al 8443 con la tabla nat.

iptables -A PREROUTING -t nat -p tcp --dport 443 -j REDIRECT --to-ports 8443

También abrí en entrada y salida los puertos 443 y 8443.

Todavía puedo acceder a la instancia de Tomcat con example.com:8443 y no tengo ningún problema, pero example.com no responde. Mirando en iptables no veo ningún paquete desplegable. En mi instancia de Tomcat, no cambio server.xml. El conector escucha 8443. No sé, ¿dónde está el problema? Espero que algunos expertos puedan ayudarme a solucionar el problema.

atentamente

barba negra

Respuesta1

Lo que realmente necesita aquí es un proxy inverso (como Nginx) que pueda realizar la terminación SSL por usted en el puerto 443 y luego pasar la solicitud a Tomcat en el puerto 8443.

SSL/TLS es complejo y, en mi opinión, confiar en IPTABLES para manejar el protocolo de enlace SSL y enviar su solicitud a la aplicación Tomcat no es una buena idea.

Si realmente necesita utilizar IPTABLES, conéctese al servicio openssly descubra exactamente qué está sucediendo. Informe el resultado aquí y es posible que haya más ayuda disponible.

openssl s_client -connect www.example.com:443

El problema también puede ser que estés usando la nattabla. Tengo entendido que las reglas para esta tabla solo se aplican si las solicitudes se enrutana través deel servidor, en lugar de ser enrutado a un puerto diferente en la misma dirección IP.

Un proxy inverso eliminaría gran parte de esta complejidad y le brindaría muchas más funciones (por ejemplo, limitación de velocidad, control de acceso, etc., etc.) para arrancar.

Respuesta2

Esto podría depender de a qué interfaz esté vinculado su gato. Si está vinculado a la interfaz de loopback, entonces esto no funcionará en absoluto.

Principalmente, el objetivo REDIRECT se usa con una interfaz específica como:

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 -j REDIRECT --to-port 8443

(reemplace eth1 con la interfaz de red real en la que se ejecuta Tomcat)

REDIRECT es un método conveniente para el objetivo DNAT, por lo que si lo anterior no funciona, puede intentar algo como:

iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 10.0.0.1:8443

(reemplace 10.0.0.1 con la dirección IP de su máquina)

información relacionada