
easywall v2.14.0
واجهة ويب لجدار الحماية nftables على لينكس، مكتوبة بلغة Go. تلغي عملية التطبيق نفسها بعد 120 ثانية ما لم تؤكدها — لن تتمكن من حبس نفسك خارج النظام. تثبيت عبر Debian و Docker.
easywall
جدار الحماية الخاص بك. قواعدك. لا مفاجآت.
عرض حي · التوثيق · سجل التغييرات
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 لكل قاعدة |
| قائمة الحظر وقائمة السماح | IPv4 وIPv6 وCIDR، تُقيَّم قبل أي قاعدة منفذ |
| وحدات الحماية | اثنتا عشرة وحدة، خمس منها مفعّلة افتراضيًا — الفيضانات، والمسح، وعناوين bogon، والقطع، والبث/البث المتعدد/البث الموجّه |
| إعادة توجيه المنافذ | إعادة توجيه NAT مع اختيار البروتوكول |
| قواعد مخصصة | nftables خام، يُفحص تركيبه قبل تطبيقه |
| التصدير / الاستيراد | مجموعة القواعد كاملة بصيغة JSON |
| سجل التدقيق | ما الذي تغيّر ومتى، كائن JSON واحد لكل سطر |
| التعايش مع Docker | يملك table inet easywall، ولا يمسّ أي شيء آخر |
| الإنجليزية، الألمانية، الفرنسية | قابلة للتبديل في الواجهة، بما في ذلك قبل تسجيل الدخول. قد تكون اللغة جزئية: ما ينقصها يُعرَض بالإنجليزية، ويُبلَّغ عن الفجوة بدلًا من إخفائها |
| الوضع الفاتح والداكن | يتبع نظام التشغيل، مع مفتاح تبديل يدوي؛ وكلاهما مُختبَر التباين |
مبني باستخدام
| Go 1.27، ملف تنفيذي واحد | 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 — دون أي مكتبة واجهة مستخدم خارجية |
| الخطوط | Inter + JetBrains Mono، مستضافة ذاتيًا، ~145 KB — تعمل دون اتصال بالشبكة |
| CI | govulncheck وgosec وCodeQL و-race، ومجموعة اختبارات تكامل على نواة حقيقية |
الحصول على المساعدة
| سؤال، أو شيء لا يعمل كما ينبغي | Discord |
| خطأ برمجي، أو ميزة تريدها | GitHub issues |
| ثغرة أمنية | Security advisory — ليس Discord، وليس مشكلة عامة |
المساهمة
الإعداد واصطلاحات الالتزام وقائمة مراجعة الكود: CONTRIBUTING.md.
أي شيء بصري يمر أولًا عبر DESIGN.md.