
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، تُقيَّم قبل أي قاعدة منافذ |
| وحدات الحماية | اثنتا عشرة، خمس منها مفعلة افتراضيًا — الفيضانات، الفحوصات، البوجونات، الشظايا، البث/البث المتعدد/أي كاست |
| إعادة توجيه المنافذ | تحويلات NAT مع اختيار البروتوكول |
| قواعد مخصصة | nftables خام، تُفحص صياغيًا قبل تطبيقها |
| تصدير / استيراد | مجموعة القواعد كاملة بصيغة JSON |
| سجل التدقيق | ما الذي تغير ومتى، كائن JSON واحد لكل سطر |
| التعايش مع Docker | يملك table inet easywall، ولا يلمس أي شيء آخر |
| الإنجليزية، الألمانية، الفرنسية | قابلة للتبديل في الواجهة، بما في ذلك قبل تسجيل الدخول. قد تكون اللغة جزئية: ما ينقصها يُعرض بالإنجليزية، ويُبلَّغ عن الفجوة بدلاً من إخفائها |
| الوضع الفاتح والداكن | يتبع نظام التشغيل، مع مفتاح يدوي؛ كلاهما مُفحص للتباين |
بُني باستخدام
| Go 1.27، ثنائي واحد | go-chi/chi · html/template |
nftables عبر google/nftables | netlink مباشر، بدون subprocess لـ 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، ومجموعة اختبارات تكاملية ضد نواة حقيقية |
الحصول على المساعدة
| سؤال، أو شيء لا يعمل كما يجب | Discord |
| خطأ برمجي، أو ميزة تريدها | قضايا GitHub |
| ثغرة أمنية | التنبيه الأمني — ليس عبر Discord، وليس كقضية عامة |
المساهمة
الإعداد، واصطلاحات الالتزام، وقائمة المراجعة: CONTRIBUTING.md.
أي شيء بصري يمر عبر DESIGN.md أولاً.
القضايا الأمنية: ليست كقضية عامة — استخدم GitHub Security Advisories.
الترخيص
GPL-3.0 — انظر LICENSE.