Випуск Firewalld 1.0

Представлено реліз динамічно керованого міжмережевого екрану firewalld 1.0, реалізованого у формі обв'язки над пакетними nftables фільтрами і iptables. Firewalld запускається у вигляді фонового процесу, що дозволяє динамічно змінювати правила пакетного фільтра через D-Bus без необхідності перезавантаження правил пакетного фільтра і без розриву встановлених з'єднань. Проект вже застосовується у багатьох дистрибутивах Linux, включаючи RHEL 7+, Fedora 18+ та SUSE/openSUSE 15+. Код firewalld написаний мовою Python та поширюється під ліцензією GPLv2.

Для керування міжмережевим екраном використовується утиліта firewall-cmd, яка при створенні правил відштовхується не від IP-адрес, мережевих інтерфейсів та номерів портів, а від назв служб (наприклад, для відкриття доступу до SSH потрібно виконати firewall-cmd -add -service= ssh», для закриття SSH - "firewall-cmd - remove -service = ssh"). Для зміни конфігурації міжмережевого екрану також можна використовувати графічний інтерфейс firewall-config (GTK) і аплет firewall-applet (Qt). Підтримка управління міжмережевим екраном через D-BUS API firewalld є у таких проектах, як NetworkManager, libvirt, podman, docker та fail2ban.

Значна зміна номера версії пов'язана із внесенням змін, що порушують зворотну сумісність та змінюють поведінку роботи з зонами. Усі визначені в зоні параметри фільтрації тепер застосовуються тільки для трафіку, адресованого хосту, на якому запущено firewalld, а для фільтрації транзитного трафіку потрібне налаштування політик. Найбільш помітні зміни:

  • Оголошено застарілим бекендом, що дозволяв працювати поверх iptables. Підтримка iptables буде збережена в найближчому майбутньому, але розвиватися даний бекенд не буде.
  • Увімкнено та активовано за умовчанням для всіх нових зон режим intra-zone-forwarding, що дозволяє вільне переміщення пакетів між мережевими інтерфейсами або джерелами трафіку всередині однієї зони (public, block, trusted, internal тощо). Для повернення старої поведінки та заборони перенаправлення пакетів всередині однієї зони можна використовувати команду firewall-cmd - permanent - zone public - remove-forward.
  • Правила, пов'язані з трансляцією адрес (NAT), переміщені в сімейство протоколів inet (раніше додавалися в сімействах ip і ip6, що призводило до необхідності дублювання правил для IPv4 і IPv6). Зміна дозволила позбавитися дублікатів при використанні ipset — замість трьох копій записів ipset тепер використовується одна.
  • Дія "default", що вказується в параметрі "-set-target", тепер еквівалентно "reject", тобто. всі пакети, які не підпадають під визначені в зоні правила, за замовчуванням блокуватимуться. Виняток зроблено лише для ICMP-пакетів, які, як і раніше, пропускаються. Для повернення старої поведінки для публічно доступної зони «trusted» можна використовувати правила: firewall-cmd — permanent — new-policy allow forward firewall — cmd — permanent — policy allow forward — set-target ACCEPT -zone public firewall-cmd -permanent-policy allowForward-add-egress-zone trusted firewall-cmd -reload
  • Політики з позитивним пріоритетом тепер виконуються до виконання правила «-set-target catch-all», тобто. у момент, що передує додаванню фінальних правил drop, reject або accept, у тому числі для зон, в яких використовуються "-set-target drop | reject | accept".
  • Блокування ICMP тепер застосовується лише до адресованих поточного хосту вхідних пакетів (input) і не торкається пакетів, що перенаправляються між зонами (forward).
  • Видалено сервіс tftp-client, призначений для відстеження з'єднань для протоколу TFTP, але перебував у непридатному для використання вигляді.
  • Оголошено застарілим інтерфейс "direct", що дозволяє безпосередньо підставляти готові правила пакетного фільтра. Потреба в даному інтерфейсі зникла після додавання можливості фільтрації перенаправлених та вихідних пакетів.
  • Додано параметр CleanupModulesOnExit, який за умовчанням змінено на значення "no". За допомогою цього параметра можна керувати вивантаженням модулів ядра після завершення роботи firewalld.
  • Дозволено використання ipset щодо цільової системи (destination).
  • Додано визначення сервісів WireGuard, Kubernetes та netbios-ns.
  • Реалізовано правила автодоповнення для zsh.
  • Припинено підтримку Python 2.
  • Скорочено список залежностей. Для роботи firewalld, крім ядра Linux, тепер обов'язково потрібні тільки python-бібліотеки dbus, gobject і nftables, а пакети ebtables, ipset та iptables віднесені до опціональних. З-поміж залежностей видалені python-бібліотеки decorator і slip.

Джерело: opennet.ru

Додати коментар або відгук