مرجع الإعداد
توثِّق هذه الصفحة كل مفتاح إعداد في ملف إعداد PRX-WAF بصيغة TOML. ملف الإعداد الافتراضي هو configs/default.toml.
إعدادات الوكيل ([proxy])
الإعدادات التي تتحكم في مُستمع الوكيل العكسي.
| المفتاح | النوع | الافتراضي | الوصف |
|---|---|---|---|
listen_addr | string | "0.0.0.0:80" | عنوان مُستمع HTTP |
listen_addr_tls | string | "0.0.0.0:443" | عنوان مُستمع HTTPS |
worker_threads | integer | null | null (عدد وحدات CPU) | عدد خيوط عمل الوكيل. عند null، يستخدم عدد أنوية CPU المنطقية. |
إعدادات API ([api])
إعدادات واجهة برمجة الإدارة وواجهة المستخدم الإدارية.
| المفتاح | النوع | الافتراضي | الوصف |
|---|---|---|---|
listen_addr | string | "127.0.0.1:9527" | عنوان مُستمع API الإدارة + واجهة المستخدم. اربط بـ 127.0.0.1 في الإنتاج لتقييد الوصول على المضيف المحلي. |
إعدادات التخزين ([storage])
اتصال قاعدة بيانات PostgreSQL.
| المفتاح | النوع | الافتراضي | الوصف |
|---|---|---|---|
database_url | string | "postgresql://prx_waf:[email protected]:5432/prx_waf" | عنوان URL لاتصال PostgreSQL |
max_connections | integer | 20 | الحد الأقصى لعدد اتصالات قاعدة البيانات في المجمع |
إعدادات التخزين المؤقت ([cache])
إعداد تخزين الاستجابات المؤقت باستخدام ذاكرة تخزين مؤقت moka LRU في الذاكرة.
| المفتاح | النوع | الافتراضي | الوصف |
|---|---|---|---|
enabled | boolean | true | تفعيل تخزين الاستجابات المؤقت |
max_size_mb | integer | 256 | الحجم الأقصى للتخزين المؤقت بالميغابايت |
default_ttl_secs | integer | 60 | مدة الصلاحية الافتراضية للاستجابات المخزَّنة مؤقتاً (بالثواني) |
max_ttl_secs | integer | 3600 | الحد الأقصى لمدة الصلاحية (بالثواني). لا يمكن تخزين الاستجابات مؤقتاً لمدة أطول من هذه بغض النظر عن رؤوس الخادم الخلفي. |
إعدادات HTTP/3 ([http3])
HTTP/3 عبر QUIC (مكتبة Quinn).
| المفتاح | النوع | الافتراضي | الوصف |
|---|---|---|---|
enabled | boolean | false | تفعيل دعم HTTP/3 |
listen_addr | string | "0.0.0.0:443" | عنوان مُستمع QUIC (UDP) |
cert_pem | string | -- | مسار شهادة TLS (تنسيق PEM) |
key_pem | string | -- | مسار مفتاح TLS الخاص (تنسيق PEM) |
WARNING
يتطلب HTTP/3 شهادات TLS صالحة. يجب تعيين كلاً من cert_pem وkey_pem عند تعيين enabled = true.
إعدادات الأمن ([security])
إعداد أمن API الإدارة والوكيل.
| المفتاح | النوع | الافتراضي | الوصف |
|---|---|---|---|
admin_ip_allowlist | string[] | [] | قائمة IPs/CIDRs المسموح لها بالوصول إلى API الإدارة. فارغة تعني السماح للجميع. |
max_request_body_bytes | integer | 10485760 (10 ميغابايت) | الحجم الأقصى لجسم الطلب بالبايت. الطلبات التي تتجاوز هذا تُرفض بـ 413. |
api_rate_limit_rps | integer | 0 | حد معدل لكل IP لـ API الإدارة (طلب في الثانية). 0 يعني مُعطَّل. |
cors_origins | string[] | [] | مصادر CORS المسموح بها لـ API الإدارة. فارغة تعني السماح لجميع المصادر. |
إعدادات القواعد ([rules])
إعداد محرك القواعد.
| المفتاح | النوع | الافتراضي | الوصف |
|---|---|---|---|
dir | string | "rules/" | الدليل الحاوي على ملفات القواعد |
hot_reload | boolean | true | تفعيل مراقبة نظام الملفات لإعادة التحميل التلقائية للقواعد |
reload_debounce_ms | integer | 500 | نافذة debounce لأحداث تغيير الملفات (بالميلي ثانية) |
enable_builtin_owasp | boolean | true | تفعيل قواعد OWASP CRS المدمجة |
enable_builtin_bot | boolean | true | تفعيل قواعد كشف الروبوتات المدمجة |
enable_builtin_scanner | boolean | true | تفعيل قواعد كشف الماسحات المدمجة |
مصادر القواعد ([[rules.sources]])
تهيئة مصادر قواعد متعددة (أدلة محلية أو URLs بعيدة):
| المفتاح | النوع | مطلوب | الوصف |
|---|---|---|---|
name | string | نعم | اسم المصدر (مثل "custom" أو "owasp-crs") |
path | string | لا | مسار الدليل المحلي |
url | string | لا | URL بعيد لجلب القواعد |
format | string | نعم | تنسيق القاعدة: "yaml" أو "json" أو "modsec" |
update_interval | integer | لا | فترة التحديث التلقائي بالثواني (للمصادر البعيدة فقط) |
toml
[[rules.sources]]
name = "custom"
path = "rules/custom/"
format = "yaml"
[[rules.sources]]
name = "owasp-crs"
url = "https://example.com/rules/owasp.yaml"
format = "yaml"
update_interval = 86400إعدادات CrowdSec ([crowdsec])
تكامل استخبارات تهديدات CrowdSec.
| المفتاح | النوع | الافتراضي | الوصف |
|---|---|---|---|
enabled | boolean | false | تفعيل تكامل CrowdSec |
mode | string | "bouncer" | وضع التكامل: "bouncer" أو "appsec" أو "both" |
lapi_url | string | "http://127.0.0.1:8080" | عنوان URL لـ CrowdSec LAPI |
api_key | string | "" | مفتاح API لـ Bouncer |
update_frequency_secs | integer | 10 | فترة تحديث ذاكرة التخزين المؤقت للقرارات (بالثواني) |
fallback_action | string | "allow" | الإجراء عند عدم إمكانية الوصول إلى LAPI: "allow" أو "block" أو "log" |
appsec_endpoint | string | -- | عنوان URL لنقطة نهاية فحص AppSec HTTP (اختياري) |
appsec_key | string | -- | مفتاح API لـ AppSec (اختياري) |
إعداد المضيف ([[hosts]])
إدخالات المضيف الثابتة (يمكن أيضاً إدارتها عبر واجهة المستخدم الإدارية/API):
| المفتاح | النوع | مطلوب | الوصف |
|---|---|---|---|
host | string | نعم | اسم النطاق للمطابقة |
port | integer | نعم | منفذ الاستماع (عادةً 80 أو 443) |
remote_host | string | نعم | IP أو اسم مضيف الخادم الخلفي الخارج |
remote_port | integer | نعم | منفذ الخادم الخلفي الخارج |
ssl | boolean | لا | استخدام HTTPS للخادم الخلفي (الافتراضي: false) |
guard_status | boolean | لا | تفعيل حماية WAF لهذا المضيف (الافتراضي: true) |
إعدادات الكتلة ([cluster])
إعداد الكتلة متعددة العقد. راجع وضع الكتلة للتفاصيل.
| المفتاح | النوع | الافتراضي | الوصف |
|---|---|---|---|
enabled | boolean | false | تفعيل وضع الكتلة |
node_id | string | "" (تلقائي) | معرِّف عقدة فريد. يُنشَأ تلقائياً إذا كان فارغاً. |
role | string | "auto" | دور العقدة: "auto" أو "main" أو "worker" |
listen_addr | string | "0.0.0.0:16851" | عنوان استماع QUIC للاتصال بين العقد |
seeds | string[] | [] | عناوين العقد الأولية للانضمام إلى الكتلة |
تشفير الكتلة ([cluster.crypto])
| المفتاح | النوع | الافتراضي | الوصف |
|---|---|---|---|
ca_cert | string | -- | مسار شهادة CA (PEM) |
ca_key | string | -- | مسار المفتاح الخاص لـ CA (العقدة الرئيسية فقط) |
node_cert | string | -- | مسار شهادة العقدة (PEM) |
node_key | string | -- | مسار المفتاح الخاص للعقدة (PEM) |
auto_generate | boolean | true | إنشاء الشهادات تلقائياً عند أول تشغيل |
ca_validity_days | integer | 3650 | صلاحية شهادة CA (بالأيام) |
node_validity_days | integer | 365 | صلاحية شهادة العقدة (بالأيام) |
renewal_before_days | integer | 7 | تجديد تلقائي بهذا العدد من الأيام قبل انتهاء الصلاحية |
مزامنة الكتلة ([cluster.sync])
| المفتاح | النوع | الافتراضي | الوصف |
|---|---|---|---|
rules_interval_secs | integer | 10 | فترة التحقق من إصدار القاعدة |
config_interval_secs | integer | 30 | فترة مزامنة الإعداد |
events_batch_size | integer | 100 | تفريغ دفعة الأحداث عند هذا العدد |
events_flush_interval_secs | integer | 5 | تفريغ الأحداث حتى لو لم تمتلئ الدفعة |
stats_interval_secs | integer | 10 | فترة الإبلاغ عن الإحصاءات |
events_queue_size | integer | 10000 | حجم قائمة انتظار الأحداث (يُسقط الأقدم عند الامتلاء) |
انتخاب الكتلة ([cluster.election])
| المفتاح | النوع | الافتراضي | الوصف |
|---|---|---|---|
timeout_min_ms | integer | 150 | الحد الأدنى لمهلة الانتخاب (بالميلي ثانية) |
timeout_max_ms | integer | 300 | الحد الأقصى لمهلة الانتخاب (بالميلي ثانية) |
heartbeat_interval_ms | integer | 50 | فترة نبضة القلب من العقدة الرئيسية إلى العمال (بالميلي ثانية) |
phi_suspect | float | 8.0 | عتبة الشك لكاشف فشل phi accrual |
phi_dead | float | 12.0 | عتبة الموت لكاشف فشل phi accrual |
صحة الكتلة ([cluster.health])
| المفتاح | النوع | الافتراضي | الوصف |
|---|---|---|---|
check_interval_secs | integer | 5 | تكرار فحص الصحة |
max_missed_heartbeats | integer | 3 | وسم النظير بأنه غير صحي بعد N من الإغفالات |
الإعداد الافتراضي الكامل
للمرجع، راجع ملف default.toml في المستودع.
الخطوات التالية
- نظرة عامة على الإعداد -- كيف تعمل طبقات الإعداد معاً
- نشر الكتلة -- إعداد خاص بالكتلة
- محرك القواعد -- إعدادات محرك القواعد بالتفصيل