
easywall v2.4.1
واجهة ويب لجدار الحماية nftables على لينكس، مكتوبة بلغة Go. تلغي عملية التطبيق نفسها بعد 120 ثانية ما لم تؤكدها — لن تتمكن من حبس نفسك خارج النظام. تثبيت عبر Debian و Docker.
easywall
جدار الحماية الخاص بك. قواعدك أنت. لا مفاجآت.
عرض تجريبي مباشر · التوثيق · سجل التغييرات
nftables عبر واجهة ويب لا يمكنها أن تحبسك خارج النظام: كل عملية تطبيق تتراجع عن نفسها ما لم تؤكدها.
الفكرة
تعديل قاعدة لا يغيّر شيئًا. تطبيقها يغيّر كل شيء — لمدة 120 ثانية. إذا قطعت القواعد الجديدة اتصالك، فلن تتمكن من النقر على «تأكيد»، وعدم التأكيد هو ما يعيد القواعد القديمة.
البنية
عمليتان. العملية المكشوفة على الشبكة لا تحمل أي صلاحية تستحق السرقة.
إعادة كتابة كاملة لـ easywall الأصلي — Python وFlask وiptables عبر عملية فرعية — الذي أُرشِف في عام 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، تُقيَّم قبل أي قاعدة منافذ |
| وحدات الحماية | اثنتا عشرة وحدة، خمس منها مفعّلة افتراضيًا — الفيضانات، والمسح، وعناوين bogon، وتجزئة الحزم، والبث/البث المتعدد/أي كاست |
| إعادة توجيه المنافذ | تحويلات 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 — دون مكتبة واجهات خارجية |
| الخطوط | Inter + JetBrains Mono، مستضافة ذاتيًا، ~145 كيلوبايت — تعمل دون اتصال بالإنترنت |
| CI | govulncheck وgosec وCodeQL و-race، ومجموعة اختبارات تكامل ضد نواة حقيقية |
خارطة الطريق
الصحة أولًا: جدار حماية يفعل بصمت أقل مما يقول أسوأ من جدار حماية يفعل أقل ويقول ذلك.
| 2.6 | اختبارات تكامل تتحقق من المعنى، لا من عدد القواعد |
| 2.7 | الهوية — مستخدم في بروتوكول المقبس، ثم أحداث تسجيل الدخول، ثم حسابات متعددة، ثم 2FA |
| 2.8 | REST API بمصادقة عبر الرموز، مع ACME كخيار، ووكيل عكسي موثوق اختياري |
| 2.9 | عدّ اختياري لعمليات التثبيت |
لماذا يأتي كل منها في وقته، وما الذي سيرسله العدّ: خارطة الطريق ←
الحصول على المساعدة
| سؤال، أو شيء لا يتصرف كما ينبغي | Discord |
| خطأ برمجي، أو ميزة تريدها | قضايا GitHub |
| ثغرة أمنية | التنبيه الأمني — ليس عبر Discord، وليست قضية عامة |
المساهمة
الإعداد، واصطلاحات الـ commits، وقائمة التحقق للمراجعة: CONTRIBUTING.md. أي شيء بصري يمر عبر DESIGN.md أولًا.
المشكلات الأمنية: ليست كقضية عامة — استخدم التنبيهات الأمنية في GitHub.
الترخيص
GPL-3.0 — انظر LICENSE.