Intrebarea
Cum redirecționați un port privilegiat sub-1024 către un port 1024+ non-privilegiat cu firewalld?
Motivul
De ce facem asta? Dorim să putem comuta portul 1050 neprivilegiat de pe gateway și să folosim un alt server de e-mail din amonte. De exemplu, pentru a testa o soluție diferită de spam, utilizați portul 1051 pentru a trimite e-mail la un alt server de e-mail cu o altă soluție de filtrare a spam-ului.
Serverele de e-mail se conectează automat la gateway când pornesc. Conectarea automată poate avea loc numai pe porturile neprivilegiate care sunt 1024+.
Aspectul și configurarea
Aspect
+--------+ +---------------------+ +---------------- +
| WAN | | 1050 | <- | |
| Client | | Gateway | \ | Server de e-mail |
| | <---> | 25 | -> | 25 |
+--------+ +---------------------+ +---------------- +
Configurați firewall
Ștergeți paravanul de protecție, deschideți portul, setați portul înainte și adăugați câteva servicii.
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}
Verificați firewall
Confirmați setările paravanului de protecție...
root@gateway:~# firewall-cmd --list-all
public (activ)
target: implicit
icmp-block-inversion: nu
interfețe: etho0
surse:
servicii: dhcpv6-client http https smtp ssh
porturi: 25/tcp
protocoale:
mascarada: nu
forward-ports: port=25:proto=tcp:toport=1050:toaddr=
porturi sursă:
icmp-blocks:
reguli bogate:
Acesta este ceea ce ne așteptam să vedem în regulile de firewall.
Rezultatul
Aceasta este ceea ce obținem când telnetăm serverul de e-mail din amonte de pe gateway...
root@gateway:~# telnet localhost 1050
Încercați 127.0.0.1...
Conectat la localhost.
Caracterul de evacuare este „^]”.
220 debian10email.debian10email ESMTP Postfix (Debian/GNU)
Aceasta este ceea ce obținem de la o mașină client la distanță...
client@client123:~$ telnet gateway.example.org 25
Se încearcă <IP_of_gateway>...
Conectat la gateway.example.org.
Caracterul de evacuare este „^]”.
Ne așteptăm să-l vedem și pe 220 debian10email.debian10email ESMTP Postfix (Debian/GNU)
linie, dar nu sunt.
Control mintal...
Testul
Doar pentru a confirma că regulile de redirecționare a portului sunt scrise corect, noi...
- Deschideți portul 1025 pe firewall.
- Port forward 1025 la 1050
- Și apoi verificați ce vedem pe clientul de la distanță.
Reglați firewall
Ștergeți paravanul de protecție, deschideți portul, setați portul înainte și câteva servicii.
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}
Verificați paravanul de protecție
root@gateway:~# firewall-cmd --list-all
public (activ)
target: implicit
icmp-block-inversion: nu
interfețe: etho0
surse:
servicii: dhcpv6-client http https smtp ssh
porturi: 1025/tcp
protocoale:
mascarada: nu
forward-ports: port=1025:proto=tcp:toport=1050:toaddr=
porturi sursă:
icmp-blocks:
reguli bogate:
Rezultatul
client@client123:~$ telnet gateway.example.org 1025
Se încearcă <IP_of_gateway>...
Conectat la gateway.example.org.
Caracterul de evacuare este „^]”.
220 debian10email.debian10email ESMTP Postfix (Debian/GNU)
Avem cele așteptate 220 debian10email.debian10email ESMTP Postfix (Debian/GNU)
linie, astfel încât firewall-ul redirecționează porturile așa cum era de așteptat.
Concluzie
Redirecționarea între porturi privilegiate și neprivilegiate este diferită de redirecționarea între porturi neprivilegiate.
Cum redirecționăm un port sub-1024 privilegiat către un port 1024+ non-privilegiat cu firewalld pe Debian 10 Buster? Dacă există un răspuns undeva, vă rugăm să-l indicați.Nu am reușit să-l găsim.