Firewalld – утилита для управления брандмауэром, доступная практически во всех дистрибутивах Linux. Работает как интерфейс для iptables. В этой статье мы рассмотрим, как настроить проброс портов в Linux с помощью firewalld .
Статус сервиса 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-адреса может указать адрес любого другого хоста в сети, куда вы хотите перенаправить все запросы.
Теперь можно попробовать подключится с Windows компьютера в локальной сети на порт 6666 Linux сервера. Можно использовать встроенный ssh клиент :
ssh root@server2 -p 6666
При подключении firewalld должен автоматически перенаправить трафик с порта 666 на порт 22, а вы увидеть баннер 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 адрес источника не соответствует правилу в зоне 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 портов.
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…