mirror of
https://codeberg.org/postscriptum/devzone.org.ua.git
synced 2026-02-19 06:12:39 +00:00
99 lines
No EOL
6.8 KiB
Markdown
99 lines
No EOL
6.8 KiB
Markdown
# Перехід на iptables/ufw з firewalld (Fedora 43)
|
||
|
||
На дистрибутив Fedora я перейшов приблизно рік тому і він мені сподобався майже усім. Усім, окрім мабуть навороченого `firewalld`, який досі не розумію та не маю наміру його вивчати, бо за роки адміністрування серверів на базі Debian, приловчився до формування правил з `ufw`, перевіривши їх часом та практикою.
|
||
|
||
Через свою лінь та страх щось міняти зі стандартних пресетів без розуміння теми, довгий час таки сидів на `firewalld`, налаштовував його засобами графічної утиліти `firewall-config`, вештаючись зонами та переключалками тимчасових/перманентних правил. Так, цей інструмент можливо зручний для корпоративної інфраструктури, де потрібні оновлення правил маршрутизації без обриву з'єднання та гнучкість їх налаштувань. Але на ПК чи невеличкому приватному сервері - це реально для мене зайве.
|
||
|
||
До того ж, тільки днями на свіжій інсталяції помітив можливість підключатись до сусідньої машини Fedora на 22 порт, який від її встановлення не дозволяв там явно. Я користуюсь локальними мережами [Yggdrasil](https://devzone.org.ua/post/yggdrasil-mereza-z-detsentralizovanym-routynhom) та [Mycelium](https://devzone.org.ua/post/vstanovlennia-routera-merezi-mycelium-v-linux), де "локальними" тут є потенційно тисячі анонімних користувачів цих мереж і будь хто з них може брутфорсити мій обліковий запис `root` не подаючи при цьому жодних ознак активності, а логи при цьому я не читаю. Хоч сам `sshd` не увімкнений з коробки, він може періодично пускатись вручну. Цей мій провтик у дебрях переключалок `firewall-config` став останньою краплею терпіння і я все таки вирішив повернутись назад, на `iptables`.
|
||
|
||
## Видалення залежностей firewalld
|
||
|
||
Попередньо спинив сервіси:
|
||
|
||
``` bash
|
||
sudo systemctl stop firewalld
|
||
sudo systemctl disable firewalld
|
||
```
|
||
|
||
Видалив саму службу та її залежності, включно з `firewall-config`:
|
||
|
||
``` bash
|
||
sudo dnf remove firewalld
|
||
```
|
||
* наскільки це правильно - я не знаю, можливо тут варто переглянути залежні служби, але сподіваюсь systemd все відрезольвить автоматично
|
||
|
||
## Встановлення iptables/ufw
|
||
|
||
На цьому кроці, я згідно гугло-інструкцій спочатку поставив `iptables-services`, а потім `ufw`. Але в мене сталась якась плутанина з `iptables-nft`, `iptables-legacy`, `ip6tables` та ще бог зна чим. Тому я це все діло дропнув та виконав встановлення лише одного пакунку `ufw`:
|
||
|
||
``` bash
|
||
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](https://devzone.org.ua/post/obmezennia-vykhidnykh-zyednan-na-internet-z-ufw)
|
||
* це суто окремий сценарій бо я там блокую вихідний трафік для запобігання діркам в SMTP/ActivityPub та інших "балакучих" протоколах.
|
||
|
||
Тепер, важливо запустити сервіс нашого високорівневого фаєрволу:
|
||
|
||
``` bash
|
||
sudo systemctl start ufw
|
||
```
|
||
|
||
Не менш важливо увімкнути сервіс, щоб запускався після ребуту системи:
|
||
|
||
``` bash
|
||
sudo systemctl enable ufw
|
||
```
|
||
|
||
І власне увімкнути сам ufw:
|
||
|
||
``` bash
|
||
sudo ufw enable
|
||
```
|
||
|
||
### Тестування
|
||
|
||
Після першого ребуту, бажано перевірити чи все пішло як планувалось:
|
||
|
||
``` bash
|
||
sudo systemctl status ufw
|
||
```
|
||
* `active`/`enabled`
|
||
|
||
``` bash
|
||
sudo ufw status
|
||
```
|
||
* має бути активним (`active`)
|
||
|
||
Активні правила `iptables`:
|
||
|
||
``` bash
|
||
sudo iptables -L -v -n
|
||
```
|
||
|
||
Щоб переконатись, що це дійсно працює фактично, можна спробувати підключитись з іншої машини на неоголошений правилами порт.
|
||
|
||
## Дивіться також
|
||
|
||
* [Тред на LOU](https://linux.org.ua/index.php?topic=12318.0) |