¿Cómo se reenvía un puerto privilegiado sub-1024 a un puerto 1024+ no privilegiado con firewalld?

¿Cómo se reenvía un puerto privilegiado sub-1024 a un puerto 1024+ no privilegiado con firewalld?

La pregunta

¿Cómo se reenvía un puerto privilegiado sub-1024 a un puerto 1024+ no privilegiado con firewalld?

La razón

¿Por qué estamos haciendo esto? Queremos poder cambiar el puerto 1050 sin privilegios en la puerta de enlace y utilizar un servidor de correo ascendente diferente. Por ejemplo, para probar una solución de spam diferente, utilice el puerto 1051 para enviar correo a un servidor de correo diferente con una solución de filtrado de spam diferente.

Los servidores de correo se conectan automáticamente a la puerta de enlace cuando se inician. La conexión automática solo puede ocurrir en puertos no privilegiados que sean 1024+.

El diseño y la configuración

Disposición

+--------+         +---------------------+         +----------------+
|  WAN   |         |                1050 | <-      |                |
| Client |         |       Gateway       |    \    |   Mail Server  |
|        |  <--->  | 25                  |      -> | 25             |
+--------+         +---------------------+         +----------------+

Configurar cortafuegos

Borre el firewall, abra el puerto, configure el puerto hacia adelante y agregue algunos servicios.

root@gateway:~# firewall-cmd --reload
root@gateway:~# firewall-cmd --zone=public --add-port=25/tcp
root@gateway:~# firewall-cmd --zone=public --add-forward-port=port=25:proto=tcp:toport=1050
root@gateway:~# firewall-cmd --add-service={http,https,smtp}

Verificar firewall

Confirme la configuración del firewall...

root@gateway:~# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: etho0
  sources: 
  services: dhcpv6-client http https smtp ssh
  ports: 25/tcp
  protocols: 
  masquerade: no
  forward-ports: port=25:proto=tcp:toport=1050:toaddr=
  source-ports: 
  icmp-blocks: 
  rich rules: 

Esto es lo que esperábamos ver en las reglas de firewall.

El resultado

Esto es lo que obtenemos cuando hacemos Telnet al servidor de correo ascendente en la puerta de enlace...

root@gateway:~# telnet localhost 1050
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 debian10email.debian10email ESMTP Postfix (Debian/GNU)

Esto es lo que obtenemos de una máquina cliente remota...

client@client123:~$ telnet gateway.example.org 25
Trying <IP_of_gateway>...
Connected to gateway.example.org.
Escape character is '^]'.

También esperábamos ver la 220 debian10email.debian10email ESMTP Postfix (Debian/GNU)línea, pero no es así.

Prueba de cordura...

La prueba

Sólo para confirmar que las reglas de reenvío de puertos están escritas correctamente, nosotros...

  • Abra el puerto 1025 en el firewall.
  • Reenvío de puertos 1025 a 1050
  • Y luego verifique lo que vemos en el cliente remoto.

Ajustar el cortafuegos

Borre el firewall, abra el puerto, configure el puerto hacia adelante y algunos servicios.

root@gateway:~# firewall-cmd --reload
root@gateway:~# firewall-cmd --zone=public --add-port=1025/tcp
root@gateway:~# firewall-cmd --zone=public --add-forward-port=port=1025:proto=tcp:toport=1050
root@gateway:~# firewall-cmd --add-service={http,https,smtp}

Verificar firewall

root@gateway:~# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: etho0
  sources: 
  services: dhcpv6-client http https smtp ssh
  ports: 1025/tcp
  protocols: 
  masquerade: no
  forward-ports: port=1025:proto=tcp:toport=1050:toaddr=
  source-ports: 
  icmp-blocks: 
  rich rules: 

El resultado

client@client123:~$ telnet gateway.example.org 1025
Trying <IP_of_gateway>...
Connected to gateway.example.org.
Escape character is '^]'.
220 debian10email.debian10email ESMTP Postfix (Debian/GNU)

Tenemos la 220 debian10email.debian10email ESMTP Postfix (Debian/GNU)línea esperada, por lo que el firewall reenvía el puerto como se esperaba.

Conclusión

El reenvío entre puertos privilegiados y no privilegiados es diferente del reenvío entre puertos no privilegiados.

¿Cómo reenviamos un puerto privilegiado sub-1024 a un puerto 1024+ no privilegiado con firewalld en Debian 10 Buster? Si hay una respuesta en alguna parte, indíquela. No hemos podido encontrarlo.

Respuesta1

La configuración de su firewalld parece correcta. ¿La máquina desde la que probó tiene permiso para realizar conexiones salientes al puerto 25? Pruebe desde alguna otra máquina.

información relacionada