Как перенаправить привилегированный порт sub-1024 на непривилегированный порт 1024+ с помощью firewalld?

Вопрос

How do you port forward a privileged sub-1024 port to a non-privileged 1024+ port with firewalld?

Причина

Зачем мы это делаем? Мы хотим иметь возможность переключить непривилегированный порт 1050 на шлюзе и использовать другой почтовый сервер. Например, чтобы протестировать другое решение для борьбы со спамом, используйте порт 1051 для отправки почты на другой почтовый сервер с другим решением для фильтрации спама.

Почтовые серверы автоматически подключаются к шлюзу при запуске. Автоматическое подключение может происходить только на непривилегированных портах с кодом 1024+.

Схема и настройка

Схема

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

Настройка брандмауэра

Очистите брандмауэр, откройте порт, установите проброс портов и добавьте несколько служб.

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}

Проверка брандмауэра

Подтверждаем настройки брандмауэра...

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: 

Это то, что мы ожидали увидеть в правилах брандмауэра.

Результат

Вот что мы получаем, когда подключаемся по telnet к почтовому серверу на шлюзе...

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

Вот что мы получаем с удаленной клиентской машины...

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

Мы ожидаем увидеть строку 220 debian10email.debian10email ESMTP Postfix (Debian/GNU), но не видим.

Проверка на благонадежность...

Тест

Чтобы убедиться, что правила проброса портов написаны правильно, мы...

  • Открываем порт 1025 на брандмауэре.
  • Port forward 1025 to 1050
  • А затем проверяем, что мы видим на удаленном клиенте.

Настраиваем брандмауэр

Очищаем брандмауэр, открываем порт, устанавливаем проброс порта и несколько служб.

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}

Проверяем брандмауэр

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: 

Результат

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)

У нас есть ожидаемая строка 220 debian10email.debian10email ESMTP Postfix (Debian/GNU), так что брандмауэр пробрасывает порт, как и ожидалось.

Заключение

Проброс между привилегированными и непривилегированными портами отличается от проброса между непривилегированными портами.

Как нам перенаправить привилегированный порт sub-1024 на непривилегированный порт 1024+ с помощью firewalld на Debian 10 Buster? Если где-то есть ответ, пожалуйста, укажите его. Мы не смогли его найти.

2
задан 2 September 2021 в 17:07
1 ответ

Ваша конфигурация брандмауэра выглядит правильной. Разрешается ли тестируемому компьютеру выполнять исходящие подключения к порту 25? Попробуйте с другой машины.

1
ответ дан 2 September 2021 в 19:58

Теги

Похожие вопросы