Огляд Firewall

OpenWrt використовує додаток firewall4 (fw4) — генератор правил netfilter/nftables.

Він працює в користувацькому просторі (user-space), перетворюючи конфігураційні файли у набір правил nftables та надсилаючи їх до модулів ядра netfilter.

Набір правил netfilter може бути досить складним для звичайного маршрутизатора.

Це необхідність, оскільки кожне правило відповідає окремій функції маршрутизатора: захист підтримуваних мереж, надання NAT для економії IPv4-адрес, а також “модифікація” (mangle) пакетів під час маршрутизації.

Типовий маршрутизатор містить понад 100 правил, які забезпечують повноцінну обробку трафіку.

Застосунок fw4 використовується в OpenWrt для безпечного формування правил, приховуючи складні деталі конфігурації.

Якщо переглянути набір правил netfilter за допомогою команди fw4 print, можна побачити багато правил, які:

  • не були явно вказані в конфігураційних файлах,
  • або складні для розуміння (на щастя, є параметр --comment для пояснень!).

Типові правила netfilter включають:

  • Ланцюжки (chains), часто з префіксом _rule, для кожної зони або цілі.
  • Правила для INPUT та OUTPUT інтерфейсу loopback (який часто ігнорують).
  • option syn_flood 1 або option mtu_fix 1 — кожен з них розгортається у складні правила nftables.
  • option masq 1 — відповідає цілі NAT -j MASQUERADE.
  • Правила mangle, які зчитують біти TCP-заголовка і змінюють пакет.

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

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

fw4 керується службою firewall.

Цей shell-скрипт приймає такі аргументи:

  • boot — виконується під час завантаження системи
  • start — зчитує конфігураційні файли та записує правила у модулі ядра netfilter
  • stop — очищує правила з ядра (але не вивантажує самі модулі)
  • restart, reload — перечитує правила з файлів та оновлює їх у netfilter
  • flush — ⚠️ небезпечна команда: повністю очищує всі правила, видаляє нестандартні ланцюжки і скидає політики до ACCEPT

:!: При виклику stop буде видалено лише ті правила, що містяться у конфігураційних файлах. Автоматично згенеровані правила fw4 залишаться.

:!: Якщо виконати flush, усі правила буде очищено, а політика за замовчуванням зміниться на ACCEPT — маршрутизатор дозволятиме всі з'єднання без будь-якого захисту!

Якщо маршрутизатор став недоступним через політику за замовчуванням DROP, можна відновити доступ одним із двох способів:

  • Last modified: 2025/06/01 08:36
  • by vazaz