Making Linux Firewalls Transparent, Smart, and Beautiful.
NiftyWall — це професійний веб-дашборд для керування фаєрволом nftables. У версії v3.0.0 проект пройшов повний аудит для досягнення Enterprise-стабільності та безпеки. Ця редакція (main) оптимізована для швидкого розгортання в ізольованому середовищі Docker.
- 🛡️ SAFE Mode (Екстрене блокування): Ваш цифровий "стоп-кран" для сервера. Кнопка SAFE Mode активує режим екстреного захисту:
- Миттєвий Snapshot: Автоматично створюється знімок усіх правил фаєрвола.
- Стерилізація: Повне очищення (Flush) таблиці
niftywall— усі неавторизовані з'єднання розриваються. - Білий список: Застосовується мінімальна конфігурація, що дозволяє трафік лише для критичних сервісів: SSH (22), NiftyWall (8080) та довірених інтерфейсів (Tailscale, Loopback).
- Ізоляція: Усі публічні сервіси (HTTP, DB тощо) стають недоступними до моменту виходу з режиму.
- ❄️ Panic Mode (Заморожування процесів): Інтелектуальний моніторинг ресурсів. Якщо система виявляє аномальне споживання CPU або RAM, ви можете заморозити (
SIGSTOP) шкідливі процеси одним кліком. Заморожені процеси автоматично закріплюються вгорі списку, звільняючи ресурси без повної зупинки (kill), що дозволяє зберегти їх стан для аналізу.
Примітка: SAFE Mode керує мережею, тоді як Panic Mode керує ресурсами (процесами).
graph TD
User((Адміністратор)) -->|HTTPS / PWA| UI[Web Dashboard]
subgraph "Docker Container (Host Network)"
subgraph "NiftyWall Core"
UI -->|REST API / JWT| API[FastAPI Backend]
API -->|Pydantic| VAL{Input Validator}
VAL -->|Subprocess / JSON| NFT[nftables Engine]
VAL -->|Socket / Logs| F2B[Fail2Ban Parser]
VAL -->|Metrics| SYS[psutil System Monitor]
API -->|Persistence| DB[(SQLite Database)]
API -->|Isolated Backup| TM[Time Machine]
end
end
subgraph "Host OS"
F2B -.->|Volume Mount| HostF2B[fail2ban sockets & logs]
subgraph "Linux Kernel"
NFT -->|Netlink| Netfilter[Kernel Hooks]
Netfilter -->|Packet Counters| NFT
end
end
F2B -.->|GeoIP| WHO[Whois API]
- 🔐 SQLite Backend: Усі стани (користувачі, логи, історія) перенесені в надійну БД SQLite. Вирішено проблему Race Conditions.
- 🛡️ Strict Input Validation: Сувора валідація всіх вхідних даних через Pydantic. Повний захист від NFT-ін'єкцій.
- 🕰️ Isolated Time Machine: Бекапи працюють виключно з таблицею
niftywall, не зачіпаючи правила Docker чи VPN. - 🔄 Smart DNAT + SNAT: Автоматичне додавання правил маскарадінгу для усунення проблем асиметричної маршрутизації.
- 🕵️ Resilient Fail2Ban: Нова логіка парсингу, що працює напряму через
fail2ban-client.
Цей метод забезпечує повну ізоляцію коду від хост-системи, використовуючи лише необхідні Kernel Hooks.
- Docker Engine 24.0+ та Docker Compose v2.
- Наявність
nftablesу хост-системі (для завантаження модулів ядра).
Створіть docker-compose.yml:
services:
niftywall:
image: webyhomelab/niftywall:latest
container_name: niftywall
privileged: true # Необхідно для керування nftables
network_mode: host # Необхідно для прямого доступу до інтерфейсів
restart: always
environment:
- SECRET_KEY=${SECRET_KEY} # openssl rand -hex 32
- PANIC_ALLOWED_PORTS=22,80,443
- TZ=Europe/Kyiv
volumes:
- /var/log/fail2ban.log:/var/log/fail2ban.log:ro
- /var/run/fail2ban:/var/run/fail2ban
- /opt/niftywall/data:/app/data
- /opt/niftywall/snapshots:/app/snapshotsdocker compose up -dПроект NiftyWall побудовано за принципом абсолютної автономії. Завдяки використанню ізольованої таблиці inet niftywall з найвищим пріоритетом ланцюгів, система гарантує стабільність у складних мережевих середовищах.
Сервери без додаткових прошарків сторонніх фаєрволів.
- Як працює: NiftyWall є єдиним хазяїном мережевого трафіку. Він ініціалізує ланцюги
inputтаforwardз типомfilterта пріоритетом -100, що дозволяє обробляти пакети на самому початку мережевого стеку ядра. - Особливості: Найвища швидкість обробки правил, 100% передбачуваність та нульовий оверхед.
Сервери, де активно використовується контейнеризація.
- Сумісність: Повна (v2.0+). NiftyWall більше не конфліктує з Docker.
- Концепція "Shield-First": Завдяки пріоритету -100, правила NiftyWall спрацьовують РАНІШЕ, ніж правила Docker (які зазвичай мають пріоритет 0). Це дозволяє вам заблокувати загрозу на рівні ядра до того, як вона взагалі потрапить у віртуальні мости контейнерів.
- Ізоляція: Робота у власному просторі імен (
table inet niftywall) виключає випадкове видалення правил Docker при скиданні конфігурації.
Сервери, де вже активний інший високорівневий менеджер.
- Сумісність: Не рекомендовано.
- Проблема "Затінення":
nftablesдозволяє паралельну роботу кількох таблиць. Пакет має бути дозволений в обох системах одночасно. Якщо NiftyWall дозволяє трафік, а забутий UFW його блокує — ви отримаєте важку в діагностиці проблему. - Рішення: Рекомендується виконати
systemctl disable --now ufwабоfirewalldперед використанням NiftyWall. Якщо вам потрібен GUI саме для них, використовуйте: UFW-GUI або Firewalld-GUI.
Built in Ukraine under air raid sirens & blackouts ⚡
© 2026 Weby Homelab





