Брандмауер – утиліта для управління брандмауером, доступна практично у всіх дистрибутивах Linux. Працює як інтерфейс для iptables. У цій статті ми розглянемо, як налаштувати кидок портів в Linux за допомогою firewalld.

технологія Переадресація портів широко використовується для прозорого перенаправлення вхідного трафіку з певного порту на інший порт і / або IP адреса. Найчастіше застосовується, коли потрібно отримати доступ зовні в локальну мережу за NAT (кидок порту з білого IP адреси на сірий). Зовнішній клієнт підключається до певного порту на маршрутизаторі, а той перенаправляє його на потрібних хост всередині локальної мережі. Або, наприклад, коли ви хочете закрити потенційно небезпечні для атаки порти сервера, але не втратити зв’язок з ними.

Статус сервісу firewalld перевіряється командою:

# service firewalld status

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-адреси може вказати адресу будь-якого іншого хоста в мережі, куди ви хочете перенаправити всі запити.

настройка port forwarding порту в linux за допомогою firewalld

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

ssh root@server2 -p 6666

При підключенні firewalld повинен автоматично перенаправляти трафік з порту 666 на порт 22, а ви побачити баннер SSH.

приклад проброса ssh порту в linux

Аналогічним чином можна прокинути трафік з інших служб. Наприклад, прокинув порт 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-клієнт – це адреса клієнта або окрема підмережа, для яких має спрацьовувати трафив перенаправлення трафіку;
  • IP-сервер – це адреса вашого сервера або віддаленого, куди буде направлятися трафік через forwarding портів.

Всі запити із зазначеної адреси або підмережі, будуть фільтруватися через створене вами правило. Якщо IP адреса джерела не відповідає правилу в зоні public, то він не отримає доступ на цільової хост.

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

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

список правил перенаправлення портів в firewalld

Зверніть увагу, при написанні статті ми працювали з зоною public. Ви можете використовувати будь-яку іншу і в такому випадку при налагодженні потрібно буде вказувати її.

Щоб очистити всі правила, налаштовані в firewalld, потрібно виконати кілька команд:

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

очищення правил firewalld

Як бачите, все правила були очищені.

У firewalld є потужні можливості по налаштуванню різних правил не тільки для відкриття / закриття портів сервера або фільтрації, але він також вміє тонко і досить просто налаштовувати forwarding портів.

Leave a Reply

Your email address will not be published. Required fields are marked *