アップデート一覧に戻る
New releaseAug 6, 2026

easywall v2.4.1

Linux 上の nftables ファイアウォール向け Web インターフェース(Go 製)。適用は確認しない限り 120 秒後に自動的に元に戻るため、自分自身をロックアウトすることはありません。Debian & Docker インストール。

共有

easywall

あなたのファイアウォール。あなたのルール。想定外はありません。

Tests Build Security Coverage

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

ライブデモ · ドキュメント · 変更履歴

nftablesを、あなたを締め出せないWebインターフェースで: すべての適用は、確認しない限り元に戻ります。

easywallダッシュボード: 受理状態、保留中の変更、最後の適用を含むファイアウォールステータス。TCPポート、UDPポート、ブラックリスト、ホワイトリスト、カスタムルール、フォワーディングを数えるタイル。そして最近のアクティビティリスト。

コンセプト

ルールを編集しても何も変わりません。適用するとすべてが変わります — 120秒間だけ。 新しいルールによって接続が遮断された場合、確認(Confirm)をクリックできなくなり、確認をしないことが旧ルールを復活させます。

状態遷移: 編集は Staged に、適用は Live に、ウィンドウ内での確認は Confirmed に、ウィンドウの期限切れは Rolled back に遷移し、ロールバック後もステージングされた編集は引き続き利用できます。

アーキテクチャ

2つのプロセス。ネットワークに晒されるプロセスは、奪う価値のある特権を一切保持しません。

ブラウザは非特権で動作する easywall-web と HTTPS で通信します。easywall-web は Unix ソケット経由で型付き JSON を easywall-core に送信し、easywall-core は root で動作し、nftables のテーブル inet easywall と netlink で通信します。

オリジナルの easywall — Python、Flask、subprocess経由のiptables — はCVEを受けて2022年にアーカイブされましたが、これはその完全な書き直しです。両方の根本原因は解消されています。特権は別のプロセスに移り、適用パスはコマンドラインではなく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に対応。すべてのポートルールより先に評価されます
保護モジュール12種類、デフォルトで5つ有効 — フラッド、スキャン、ボゴン、フラグメント、ブロードキャスト/マルチキャスト/エニーキャスト
ポートフォワーディングプロトコル選択付きのNATリダイレクト
カスタムルール生のnftables。適用前に構文チェックされます
エクスポート / インポートルールセット全体をJSONとして
監査ログ何がいつ変わったかを、1行につき1つのJSONオブジェクトで記録
Dockerとの共存table inet easywall のみを管理し、他のものには一切触れません
英語 & ドイツ語インターフェースで切り替え可能。サインイン前でもOK
ライト & ダークOSに追従し、手動トグルも可能。両方コントラスト検査済み

使用技術

Go 1.26、単一バイナリgo-chi/chi · html/template
google/nftables による nftables直接netlinkを使用し、nft サブプロセスは不使用
Argon2idgolang.org/x/crypto、パスワードごとに16バイトのソルト
CSRFnet/http.CrossOriginProtection、Go 1.25ネイティブ
デザインシステムDESIGN.md + Tailwind v4 — サードパーティ製UIライブラリなし
フォントInter + JetBrains Mono、セルフホスト、約145KB — オフライン環境でも動作
CIgovulncheckgosec、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 を参照。

カテゴリ