
Веб-интерфейс для межсетевого экрана nftables в Linux, написанный на Go. Применение автоматически откатывается через 120 секунд, если вы не подтвердите его — вы не сможете заблокировать себе доступ. Установка на Debian и Docker.
Ваш фаервол. Ваши правила. Без сюрпризов.
Живое демо · Документация · Список изменений
nftables через веб-интерфейс, который не может заблокировать вам доступ: каждое применение откатывается само, если вы его не подтвердите.
Редактирование правила ничего не меняет. Его применение меняет всё — на 120 секунд. Если новые правила оборвут ваше соединение, вы не сможете нажать «Подтвердить», а неподтверждение — это именно то, что возвращает старые правила.
Два процесса. Тот, что открыт в сеть, не обладает привилегиями, которые стоило бы украсть.
Полная переработка оригинального easywall — Python, Flask, iptables через
subprocess — который был заархивирован в 2022 году после CVE. Обе первопричины устранены:
привилегии находятся в другом процессе, а путь применения строит структуры Go,
а не командную строку. Как это работает →
# Debian / Ubuntu — amd64 and arm64
ARCH=$(dpkg --print-architecture)
wget https://github.com/jp1337/easywall/releases/latest/download/easywall_$ARCH.deb
sudo dpkg -i easywall_$ARCH.deb && sudo apt-get install -f
# Docker
git clone https://github.com/jp1337/easywall.git && cd easywall && docker compose up -d
# From source — Go 1.27+, nftables
git clone https://github.com/jp1337/easywall.git && cd easywall
make build && sudo make install
sudo systemctl enable --now easywall-core easywall-web
Затем откройте https://localhost:12227. Первый визит
настраивает учётную запись и подготавливает первые правила.
| Порты | TCP и UDP, отдельные или диапазон, с маршрутизацией SSH brute-force для каждого правила |
| Блок-лист и разрешённый список | IPv4, IPv6 и CIDR, проверяются до любого правила порта |
| Модули защиты | Двенадцать, пять включены по умолчанию — флуды, сканирования, bogon-адреса, фрагменты, broadcast/multicast/anycast |
| Перенаправление портов | NAT-редиректы с выбором протокола |
| Пользовательские правила | Сырой nftables, проверяется на синтаксис перед применением |
| Экспорт / импорт | Весь набор правил в виде JSON |
| Журнал аудита | Что изменилось и когда, один JSON-объект на строку |
| Сосуществование с Docker | Владеет table inet easywall, не трогает ничего другого |
| English, Deutsch, Français | Переключается в интерфейсе, в том числе до входа. Язык может быть частичным: то, чего в нём не хватает, отображается на английском, а пробел сообщается, а не скрывается |
| Светлая и тёмная темы | Следует за ОС, с ручным переключателем; обе проверены на контраст |
| Go 1.27, единый бинарник | go-chi/chi · html/template |
nftables через google/nftables | напрямую netlink, без subprocess nft |
| Argon2id | golang.org/x/crypto, 16-байтовая соль на каждый пароль |
| CSRF | net/http.CrossOriginProtection, нативный в Go 1.25 |
| Система дизайна | DESIGN.md + Tailwind v4 — без сторонних UI-библиотек |
| Шрифты | Inter + JetBrains Mono, self-hosted, ~145 КБ — работает в изолированной сети |
| CI | govulncheck, gosec, CodeQL, -race и набор интеграционных тестов на реальном ядре |