devzone.org.ua/post/obmezennia-vykhidnykh-zyednan-na-internet-z-ufw.md
2025-11-01 14:28:20 +02:00

4.6 KiB
Raw Blame History

Обмеження вихідних з'єднань на Інтернет з ufw

ufw - це фронтенд утиліта командного рядка для спрощеного керування правилами iptables; зручна своєю простотою а також тим, що зберігає правила перманентно між системними сесіями.

Як відомо, стандартна конфігурація правил ufw блокує виключно вхідний трафік:

# ufw status verbose
Status: active
...
Default: deny (incoming), allow (outgoing), disabled (routed)
...

Тут, статус allow (outgoing) передбачає вихідні з'єднання, що може бути чутливим питанням у випадках, коли сервер має взаємодіяти виключно з мережами Yggdrasil / Mycelium, але його софт реалізує інтерактивний API (наприклад ActivitiPub, BitTorrent / PEX, SMTP, деякі реалізації FTP, тощо) і таким чином, можливі зовнішні звернення в Інтернет через вхідні запити з локальних мереж.

Найпростішим рішенням є блокування усіх вихідних з'єднань поряд з deny (incoming) та використання явних правил по білому списку, зокрема для DNS, NTP, apt, git, тощо:

ufw default deny outgoing

Після цього, дозволимо вихід на усі адреси Yggdrasil / Mycelium по відповідному діапазону:

ufw allow out to 0200::/7
ufw allow out to 0400::/7
  • можна явно задати порт, наприклад ... port 80 proto tcp

Для підключення оверлейних мереж вище до публічних вузлів:

ufw allow out to xx.xx.xx.xx port xxxx proto tcp
...

DNS

Далі, дивимось адреси DNS для системного резольвера (наприклад в /etc/systemd/resolved.conf), та додаємо їх до списку; для Cloudflare - це буде 1.1.1.1:53:

ufw allow out to 1.1.1.1 port 53 proto udp

або просто дозволяємо всі можливі:

ufw allow out to any port 53 proto udp

Якщо використовується локальний DNS для Yggdrasil або Mycelium, цей крок можна пропустити, адже вище ми вже дозволили усі вихідні з'єднання на ці мережі.

NTP

Важливо дозволити синхронізацію годинника:

ufw allow out 123/udp

apt

Для системних оновлень, найпростіше підключити локальні дзеркала або проксі, для Yggdrasil це:

#/etc/apt/apt.conf.d/proxy.conf
Acquire::http::Proxy "http://[xxx:xxxx:xxxx:xxxx::xxxx]:xxxx";
Acquire::https::Proxy "http://[xxx:xxxx:xxxx:xxxx::xxxx]:xxxx";

Для команди extrepo на прикладі додавання репозиторію LibreWolf:

https_proxy=http://[xxx:xxxx:xxxx:xxxx::xxxx]:xxxx/ extrepo enable librewolf
  • або/і http_proxy

Git

git config --global http.proxy http://[xxx:xxxx:xxxx:xxxx::xxxx]:xxxx
  • або/і https.proxy

Додаючи програмне забезпечення через сторонні проксі, важливо розуміти, що ви отримуєте через них й ключі. Відповідно, маєте усвідомлювати, що такий спосіб отримання системних оновлень може бути потенційно небезпечним і краще користуватись окремими джерелами або власним сервером (у даному випадку - локальним)

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