Назад к обновлениям
New releaseAug 6, 2026

easywall v2.4.1

Веб-интерфейс для межсетевого экрана nftables в Linux, написанный на Go. Применение автоматически откатывается через 120 секунд, если вы не подтвердите его — вы не сможете заблокировать себе доступ. Установка на Debian и Docker.

Поделиться

easywall

Ваш брандмауэр. Ваши правила. Без сюрпризов.

Tests Build Security Coverage

Latest release Go version GPL-3.0 Discord Support on Ko-fi

Живое демо · Документация · Changelog

nftables через веб-интерфейс, который не сможет вас заблокировать: каждое применение откатывается само, если вы его не подтвердите.

Панель easywall: статус брандмауэра с состоянием принятия, ожидающие изменения и последнее применение; плитки со счётчиками TCP-портов, UDP-портов, чёрного списка, белого списка, пользовательских правил и проброса портов; и список недавней активности.

Идея

Редактирование правила ничего не меняет. Применение меняет всё — на 120 секунд. Если новые правила обрывают ваше соединение, вы не сможете нажать «Подтвердить», и именно отсутствие подтверждения возвращает прежние правила.

Конечный автомат: редактирование ведёт к Staged, применение — к Live, подтверждение в пределах окна — к Confirmed, а истечение окна — к Rolled back, откуда отложенные изменения по-прежнему доступны.

Архитектура

Два процесса. Тот, что доступен из сети, не обладает привилегиями, которые стоило бы красть.

Браузер общается по HTTPS с easywall-web, который работает без привилегий; easywall-web передаёт типизированный JSON через Unix-сокет процессу easywall-core, который работает от root и через netlink обращается к таблице nftables inet easywall.

Полная переработка оригинального easywall — Python, Flask, iptables через subprocess — который был заархивирован в 2022 году после CVE. Обе первопричины устранены: привилегии живут в другом процессе, а путь применения собирает Go-структуры вместо командной строки. Как это работает →

Установка

Дерево решений: просто посмотреть → демо-режим; Debian или Ubuntu → пакет .deb; уже используются контейнеры → Docker; в остальных случаях — сборка из исходников.
# 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
Argon2idgolang.org/x/crypto, 16-байтовая соль на каждый пароль
CSRFnet/http.CrossOriginProtection, нативно с Go 1.25
Дизайн-системаDESIGN.md + Tailwind v4 — без сторонних UI-библиотек
ШрифтыInter + JetBrains Mono, собственный хостинг, ~145 КБ — работает в изолированной сети
CIgovulncheck, gosec, CodeQL, -race и интеграционный набор тестов против реального ядра

Дорожная карта

Корректность прежде всего: брандмауэр, который молча делает меньше, чем заявлено, хуже того, который делает меньше и прямо говорит об этом.

2.6Интеграционные тесты, проверяющие смысл, а не количество правил
2.7Идентификация — пользователь в протоколе сокета, затем события входа, затем несколько учётных записей, затем 2FA
2.8REST API с аутентификацией по токенам, ACME как опция, опциональный доверенный обратный прокси
2.9Опциональный счётчик установок

Почему каждая из них появляется именно тогда, и что будет отправлять счётчик: Дорожная карта →

Получение помощи

Вопрос или что-то работает не такDiscord
Баг или желаемая функцияGitHub issues
Уязвимость в безопасностиSecurity advisoryне Discord и не публичный issue

Участие в разработке

Настройка, соглашения о коммитах и чек-лист ревью: CONTRIBUTING.md. Всё, что связано с визуалом, сначала проходит через DESIGN.md.

Проблемы безопасности: не как публичный issue — используйте GitHub Security Advisories.

Лицензия

GPL-3.0 — см. LICENSE.

Категории