devzone.org.ua/post/perekhid-na-iptablesufw-z-firewalld-fedora-43.md
2025-12-18 16:41:56 +02:00

6.8 KiB
Raw Blame History

Перехід на iptables/ufw з firewalld (Fedora 43)

На дистрибутив Fedora я перейшов приблизно рік тому і він мені сподобався майже усім. Усім, окрім мабуть навороченого firewalld, який досі не розумію та не маю наміру його вивчати, бо за роки адміністрування серверів на базі Debian, приловчився до формування правил з ufw, перевіривши їх часом та практикою.

Через свою лінь та страх щось міняти зі стандартних пресетів без розуміння теми, довгий час таки сидів на firewalld, налаштовував його засобами графічної утиліти firewall-config, вештаючись зонами та переключалками тимчасових/перманентних правил. Так, цей інструмент можливо зручний для корпоративної інфраструктури, де потрібні оновлення правил маршрутизації без обриву з'єднання та гнучкість їх налаштувань. Але на ПК чи невеличкому приватному сервері - це реально для мене зайве.

До того ж, тільки днями на свіжій інсталяції помітив можливість підключатись до сусідньої машини Fedora на 22 порт, який від її встановлення не дозволяв там явно. Я користуюсь локальними мережами Yggdrasil та Mycelium, де "локальними" тут є потенційно тисячі анонімних користувачів цих мереж і будь хто з них може брутфорсити мій обліковий запис root не подаючи при цьому жодних ознак активності, а логи при цьому я не читаю. Хоч сам sshd не увімкнений з коробки, він може періодично пускатись вручну. Цей мій провтик у дебрях переключалок firewall-config став останньою краплею терпіння і я все таки вирішив повернутись назад, на iptables.

Видалення залежностей firewalld

Попередньо спинив сервіси:

sudo systemctl stop firewalld
sudo systemctl disable firewalld

Видалив саму службу та її залежності, включно з firewall-config:

sudo dnf remove firewalld
  • наскільки це правильно - я не знаю, можливо тут варто переглянути залежні служби, але сподіваюсь systemd все відрезольвить автоматично

Встановлення iptables/ufw

На цьому кроці, я згідно гугло-інструкцій спочатку поставив iptables-services, а потім ufw. Але в мене сталась якась плутанина з iptables-nft, iptables-legacy, ip6tables та ще бог зна чим. Тому я це все діло дропнув та виконав встановлення лише одного пакунку ufw:

sudo dnf install ufw
  • на Fedora 43 передвстановлено iptables-nft, якщо його видалити, то при встановленні ufw - буде запропоновано залежність iptables-legacy: тут обирайте, кому який бекенд подобається.

Базове налаштування ufw

Якщо глянути стандартні правила:

sudo ufw status verbose

побачимо дозволи на 22/tcp і 5353/udp, тому я видалив їх послідовністю нумерованих команд:

sudo ufw delete 1
sudo ufw delete 1
...
  • допоки не буде чисто.
  • можна видалити командами по ключу SSH але ті що з айпішниками реально не вийшло підібрати, тому видалення номерами - тут стало в нагоді.

Також, при перевірці статусу з verbose, буде показано стандартну політику фаєрволу: в мене заборонені всі вхідні та дозволені всі вихідні з'єднання. Тобто, стандартно, якщо список порожній - ніхто не зможе нікуди підключатись на вхідних, чого цілком достатньо для більшості юзерів ПК.

Інакше, додаємо ті порти, які кому потрібно. Деякі приклади для одного зі своїх асетів занотував в матеріалі Обмеження вихідних з'єднань на Інтернет з ufw

  • це суто окремий сценарій бо я там блокую вихідний трафік для запобігання діркам в SMTP/ActivityPub та інших "балакучих" протоколах.

Тепер, важливо запустити сервіс нашого високорівневого фаєрволу:

sudo systemctl start ufw

Не менш важливо увімкнути сервіс, щоб запускався після ребуту системи:

sudo systemctl enable ufw

І власне увімкнути сам ufw:

sudo ufw enable

Тестування

Після першого ребуту, бажано перевірити чи все пішло як планувалось:

sudo systemctl status ufw
  • active/enabled
sudo ufw status
  • має бути активним (active)

Активні правила iptables:

sudo iptables -L -v -n

Щоб переконатись, що це дійсно працює фактично, можна спробувати підключитись з іншої машини на неоголошений правилами порт.

Дивіться також