
easywall v2.4.1
Веб-интерфейс для межсетевого экрана nftables в Linux, написанный на Go. Применение автоматически откатывается через 120 секунд, если вы не подтвердите его — вы не сможете заблокировать себе доступ. Установка на Debian и Docker.
easywall
Ваш брандмауэр. Ваши правила. Без сюрпризов.
Живое демо · Документация · Changelog
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.26+, 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-брутфорса для каждого правила |
| Чёрный и белый списки | IPv4, IPv6 и CIDR, проверяются до любого правила портов |
| Модули защиты | Двенадцать, пять включены по умолчанию — флуды, сканирования, богоны, фрагменты, broadcast/multicast/anycast |
| Проброс портов | NAT-редиректы с выбором протокола |
| Пользовательские правила | Сырые nftables, синтаксис проверяется до применения |
| Экспорт / импорт | Весь набор правил в виде JSON |
| Журнал аудита | Что и когда изменилось, по одному JSON-объекту в строке |
| Сосуществование с Docker | Владеет table inet easywall, больше ничего не трогает |
| Английский и немецкий | Переключается в интерфейсе, в том числе до входа |
| Светлая и тёмная темы | Следует за ОС, с ручным переключателем; обе проверены на контрастность |
Технологии
| Go 1.26, один бинарник | go-chi/chi · html/template |
nftables через google/nftables | прямой netlink, без подпроцесса nft |
| Argon2id | golang.org/x/crypto, 16-байтовая соль на каждый пароль |
| CSRF | net/http.CrossOriginProtection, нативно с Go 1.25 |
| Дизайн-система | DESIGN.md + Tailwind v4 — без сторонних UI-библиотек |
| Шрифты | Inter + JetBrains Mono, собственный хостинг, ~145 КБ — работает в изолированной сети |
| CI | govulncheck, gosec, CodeQL, -race и интеграционный набор тестов против реального ядра |
Дорожная карта
Корректность прежде всего: брандмауэр, который молча делает меньше, чем заявлено, хуже того, который делает меньше и прямо говорит об этом.
| 2.6 | Интеграционные тесты, проверяющие смысл, а не количество правил |
| 2.7 | Идентификация — пользователь в протоколе сокета, затем события входа, затем несколько учётных записей, затем 2FA |
| 2.8 | REST API с аутентификацией по токенам, ACME как опция, опциональный доверенный обратный прокси |
| 2.9 | Опциональный счётчик установок |
Почему каждая из них появляется именно тогда, и что будет отправлять счётчик: Дорожная карта →
Получение помощи
| Вопрос или что-то работает не так | Discord |
| Баг или желаемая функция | GitHub issues |
| Уязвимость в безопасности | Security advisory — не Discord и не публичный issue |
Участие в разработке
Настройка, соглашения о коммитах и чек-лист ревью: CONTRIBUTING.md.
Всё, что связано с визуалом, сначала проходит через DESIGN.md.
Проблемы безопасности: не как публичный issue — используйте GitHub Security Advisories.
Лицензия
GPL-3.0 — см. LICENSE.