Die Frage
Wie leitet man mit Firewalld einen privilegierten Sub-1024-Port an einen nicht privilegierten 1024+-Port weiter?
Der Grund
Warum machen wir das? Wir möchten den nicht privilegierten Port 1050 auf dem Gateway wechseln und einen anderen Upstream-Mailserver verwenden können. Um beispielsweise eine andere Spam-Lösung zu testen, verwenden Sie Port 1051, um E-Mails an einen anderen Mailserver mit einer anderen Spam-Filterlösung zu senden.
Die Mailserver stellen beim Start automatisch eine Verbindung zum Gateway her. Die automatische Verbindung kann nur auf nicht privilegierten Ports mit der Nummer 1024+ erfolgen.
Das Layout und Setup
Layout
+--------+ +---------------------+ +----------------+
| WAN | | 1050 | <- | |
| Client | | Gateway | \ | Mail Server |
| | <---> | 25 | -> | 25 |
+--------+ +---------------------+ +----------------+
Firewall einrichten
Löschen Sie die Firewall, öffnen Sie den Port, richten Sie die Portweiterleitung ein und fügen Sie einige Dienste hinzu.
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}
Firewall überprüfen
Bestätigen Sie die Firewall-Einstellungen ...
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:
Dies haben wir in den Firewall-Regeln erwartet.
Das Ergebnis
Dies ist, was wir erhalten, wenn wir eine Telnet-Verbindung zum Upstream-Mailserver auf dem Gateway herstellen ...
root@gateway:~# telnet localhost 1050
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 debian10email.debian10email ESMTP Postfix (Debian/GNU)
Dies ist, was wir von einem Remote-Client-Computer erhalten ...
client@client123:~$ telnet gateway.example.org 25
Trying <IP_of_gateway>...
Connected to gateway.example.org.
Escape character is '^]'.
Wir erwarten, die 220 debian10email.debian10email ESMTP Postfix (Debian/GNU)
Linie auch zu sehen, aber das ist nicht der Fall.
Gesundheitsüberprüfung...
Der Test
Nur um zu bestätigen, dass die Portweiterleitungsregeln richtig geschrieben sind, wir...
- Öffnen Sie Port 1025 der Firewall.
- Portweiterleitung 1025 bis 1050
- Und dann überprüfen Sie, was wir auf dem Remote-Client sehen.
Firewall anpassen
Löschen Sie die Firewall, öffnen Sie den Port, richten Sie die Portweiterleitung und einige Dienste ein.
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}
Firewall überprüfen
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:
Das Ergebnis
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)
Wir haben die erwartete 220 debian10email.debian10email ESMTP Postfix (Debian/GNU)
Leitung, daher führt die Firewall die Portweiterleitung wie erwartet durch.
Abschluss
Die Weiterleitung zwischen privilegierten und nicht privilegierten Ports unterscheidet sich von der Weiterleitung zwischen nicht privilegierten Ports.
Wie leiten wir mit Firewalld unter Debian 10 Buster einen privilegierten Sub-1024-Port auf einen nicht privilegierten 1024+-Port weiter? Wenn es irgendwo eine Antwort gibt, weisen Sie bitte darauf hin. Wir konnten sie nicht finden.
Antwort1
Ihre Firewalld-Konfiguration sieht korrekt aus. Darf die Maschine, von der aus Sie getestet haben, ausgehende Verbindungen zu Port 25 herstellen? Versuchen Sie es von einer anderen Maschine aus.