OpenWrt використовує додаток firewall4 (fw4) — генератор правил netfilter/nftables.
Він працює в користувацькому просторі (user-space), перетворюючи конфігураційні файли у набір правил nftables та надсилаючи їх до модулів ядра netfilter.
Набір правил netfilter може бути досить складним для звичайного маршрутизатора.
Це необхідність, оскільки кожне правило відповідає окремій функції маршрутизатора:
захист підтримуваних мереж, надання NAT для економії IPv4-адрес, а також “модифікація” (mangle) пакетів під час маршрутизації.
Типовий маршрутизатор містить понад 100 правил, які забезпечують повноцінну обробку трафіку.
Застосунок fw4 використовується в OpenWrt для безпечного формування правил, приховуючи складні деталі конфігурації.
Якщо переглянути набір правил netfilter за допомогою команди fw4 print, можна побачити багато правил, які:
--comment для пояснень!).Типові правила netfilter включають:
_rule, для кожної зони або цілі.option syn_flood 1 або option mtu_fix 1 — кожен з них розгортається у складні правила nftables.option masq 1 — відповідає цілі NAT -j MASQUERADE.mangle, які зчитують біти TCP-заголовка і змінюють пакет.Формат конфігурації є достатньо простим та забезпечує базовий набір правил із можливістю легко додавати нові.
Правила netfilter можуть бути важкими для аналізу, однак кожне з них виконує корисну функцію або блокує шкідливі дії, тож усі вони необхідні.
fw4 керується службою firewall.
Цей shell-скрипт приймає такі аргументи:
boot — виконується під час завантаження системиstart — зчитує конфігураційні файли та записує правила у модулі ядра netfilterstop — очищує правила з ядра (але не вивантажує самі модулі)restart, reload — перечитує правила з файлів та оновлює їх у netfilterflush — ⚠️ небезпечна команда: повністю очищує всі правила, видаляє нестандартні ланцюжки і скидає політики до ACCEPT
При виклику
stop буде видалено лише ті правила, що містяться у конфігураційних файлах. Автоматично згенеровані правила fw4 залишаться.
Якщо виконати
flush, усі правила буде очищено, а політика за замовчуванням зміниться на ACCEPT — маршрутизатор дозволятиме всі з'єднання без будь-якого захисту!
Якщо маршрутизатор став недоступним через політику за замовчуванням DROP, можна відновити доступ одним із двох способів: