Categories: linux

Проброс портов (port forwarding) в Linux с помощью Firewalld

Firewalld – утилита для управления брандмауэром, доступная практически во всех дистрибутивах Linux. Работает как интерфейс для iptables. В этой статье мы рассмотрим, как настроить проброс портов в Linux с помощью firewalld .

Технология Port Forwarding широко используется для прозрачного перенаправления входящего трафика с определенного порта на другой порт и/или IP адрес. Чаще всего применяется, когда нужно получить доступ снаружи в локальную сеть за NAT (проброс порта с белого IP адреса на серый). Внешний клиент подключается к определенному порту на маршрутизаторе, а тот перенаправляет его на нужных хост внутри локальной сети. Или, например, когда вы хотите закрыть потенциально опасные для атаки порты сервера, но не потерять связь с ними.

Статус сервиса firewalld проверяется командой:

# service firewalld status

В моем случае сервис запущен, но никаких настроек в нем нет, так как сервер тестовый. На сервере из активных служб работает только SSH со стандартным портом 22. Давайте попробуем настроить forwarding с нового TCP порта 6666 на 22, чтобы в дальнейшем закрыть доступ на стандартный SSH порт из внешнего мира (своеобразная защита ssh от типичных атак автоматическими сканерами; дополнительно можете использовать fail2ban ):

# firewall-cmd --zone=public --add-masquerade --permanent
# firewall-cmd --zone=public --add-forward-port=port=6666:proto=tcp:toport=22:toaddr=IP --permanent
# firewall-cmd --reload

Где IP — это адрес вашего сервера. После изменения правил firewalld, его нужно перезагрузить. В качестве IP-адреса может указать адрес любого другого хоста в сети, куда вы хотите перенаправить все запросы.

Обратите внимание, что firewalld позволяет пробрасывать как TCP, так и UDP порты. В Windows встроенные средства позволяют перенаправлять только TCP порты.

Теперь можно попробовать подключится с Windows компьютера в локальной сети на порт 6666 Linux сервера. Можно использовать встроенный ssh клиент :

ssh root@server2 -p 6666

При подключении firewalld должен автоматически перенаправить трафик с порта 666 на порт 22, а вы увидеть баннер SSH.

В SSH есть собственные возможности по пробросу портов через туннель .

Аналогичным образом можно пробросить трафик с других служб. Например, пробросим порт 3333 на порт mysql (tcp/3306). Такой сценарий может замаскировать ваш сервис mysql, опубликованный наружу.

# firewall-cmd --zone=public --add-forward-port=port=3333:proto=tcp:toport=3306:toaddr=IP --permanent
# firewall-cmd --reload

Вы можете перенаправлять входящий трафик с определенных подсетей или IP отдельных адресов на нужный вам порт. Например:

# firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=IP-client forward-port port=2222 protocol=tcp to-port=22 to-addr=IP-server'

Где:

  • IP-client – это адрес клиента или отдельная подсеть, для которых должно срабатывать трафила перенаправления трафика;
  • IP-server — это адрес вашего сервера или удаленного, куда будет направляться трафик через forwarding портов.

Все запросы с указанного адреса или подсети, будут фильтроваться через созданное вами правило. Если IP адрес источника не соответствует правилу в зоне public, то он не получит доступ на целевой хост.

Проверить созданные правила firewalld, можно с помощью команды:

# firewall-cmd --permanent --list-all --zone=public

Обратите внимание, при написании статьи мы работали с зоной public. Вы можете использовать любую другую и в таком случае при настройке нужно будет указывать ее.

Чтобы очистить все правила, настроенные в firewalld, нужно выполнить несколько команд:

# cp -pR /etc/firewalld/zones /etc/firewalld/zones.bak
# rm -f /etc/firewalld/zones/*
# systemctl restart firewalld

Как видите, все правила были очищены.

В firewalld есть мощные возможности по настройке различных правил не только для открытия/закрытия портов сервера или фильтрации, но он также умеет тонко и довольно просто настраивать forwarding портов.

admin

Share
Published by
admin

Recent Posts

После включения диагностического запуска не удается войти в Windows — как исправить?

Некоторые пользователи, экспериментируя с конфигурацией системы в окне msconfig могут столкнуться с ситуацией, когда после…

2 недели ago

WinScript — очистка и настройка Windows 11 и 10

На сайте не раз публиковались обзоры программ, предназначенных для очистки или настройки последних версий Windows.…

2 недели ago

Предварительный просмотр накопительного обновления не устанавливается — решение

При установке некоторых обновлений Windows 11, имеющих в названии «Предварительный просмотр накопительного обновления», многие пользователи…

2 недели ago

FixExec — восстановление ассоциаций .exe, .bat и .com файлов

Некоторые пользователи Windows 11, 10 и предыдущих версий системы могут столкнуться с ситуацией, когда исполняемые…

2 недели ago

Ошибка 0x800705b4 при обновлении Windows 11 и 10 — как исправить?

При установке обновлений Windows 11/10 некоторые пользователи могут столкнуться с ошибкой с кодом 0x800705b4 и…

2 недели ago

Обслуживание вашей версии Windows 11 окончено — что делать?

Пользователи Windows 11 могут столкнуться с сообщением «Обслуживание вашей версии Windows окончено» (Your version of…

2 недели ago