Skip to content
تم إنشاء هذه الصفحة وترجمتها بمساعدة الذكاء الاصطناعي. إذا لاحظت أي أخطاء، لا تتردد في المساهمة في تحسينها. تعديل على GitHub

استكشاف الأخطاء وإصلاحها ​

تغطي هذه الصفحة أكثر المشكلات شيوعاً عند تشغيل PRX-WAF مع أسبابها وحلولها.

فشل اتصال قاعدة البيانات ​

الأعراض: يفشل PRX-WAF في البدء مع أخطاء "connection refused" أو "authentication failed".

الحلول:

  1. تحقق من تشغيل PostgreSQL:
bash
# Docker
docker compose ps postgres

# systemd
sudo systemctl status postgresql
  1. اختبر الاتصال:
bash
psql "postgresql://prx_waf:[email protected]:5432/prx_waf"
  1. تحقق من سلسلة الاتصال في إعداد TOML:
toml
[storage]
database_url = "postgresql://prx_waf:[email protected]:5432/prx_waf"
  1. شغِّل الترحيلات إذا كانت قاعدة البيانات موجودة لكن الجداول مفقودة:
bash
prx-waf -c configs/default.toml migrate

القواعد لا تُحمَّل ​

الأعراض: يبدأ PRX-WAF لكن لا قواعد نشطة. الهجمات لا تُكشف.

الحلول:

  1. تحقق من إحصاءات القواعد:
bash
prx-waf rules stats

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

  1. تحقق من مسار دليل القواعد في إعدادك:
toml
[rules]
dir = "rules/"
  1. تحقق من ملفات القواعد:
bash
python rules/tools/validate.py rules/
  1. تحقق من أخطاء بنية YAML -- ملف واحد مشوه يمكنه منع تحميل جميع القواعد:
bash
# التحقق من ملف واحد في كل مرة للعثور على المشكلة
python rules/tools/validate.py rules/owasp-crs/sqli.yaml
  1. تأكد من تفعيل القواعد المدمجة:
toml
[rules]
enable_builtin_owasp   = true
enable_builtin_bot     = true
enable_builtin_scanner = true

إعادة التحميل الساخنة لا تعمل ​

الأعراض: تُعدَّل ملفات القواعد لكن التغييرات لا تسري.

الحلول:

  1. تحقق من تفعيل إعادة التحميل الساخنة:
toml
[rules]
hot_reload = true
reload_debounce_ms = 500
  1. شغِّل إعادة تحميل يدوية:
bash
prx-waf rules reload
  1. أرسل SIGHUP:
bash
kill -HUP $(pgrep prx-waf)
  1. تحقق من حدود مشاهدة نظام الملفات (Linux):
bash
cat /proc/sys/fs/inotify/max_user_watches
# If too low, increase:
echo "fs.inotify.max_user_watches=524288" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

النتائج الإيجابية الخاطئة ​

الأعراض: الطلبات الشرعية تُحجب (403 Forbidden).

الحلول:

  1. حدِّد قاعدة الحجب من أحداث الأمن:
bash
curl -H "Authorization: Bearer $TOKEN" http://localhost:9527/api/security-events

ابحث عن حقل rule_id في الحدث.

  1. عطِّل القاعدة المحددة:
bash
prx-waf rules disable CRS-942100
  1. اخفِض مستوى الذعر. إذا كنت تعمل على مستوى ذعر 2 أو أعلى، جرِّب التخفيض إلى 1:
toml
# In your rules config, only load paranoia level 1 rules
  1. حوِّل القاعدة إلى وضع التسجيل للمراقبة بدلاً من الحجب:

حرِّر ملف القاعدة وغيِّر action: "block" إلى action: "log"، ثم أعِد التحميل:

bash
prx-waf rules reload
  1. أضِف قائمة سماح IP للمصادر الموثوقة:
bash
curl -X POST http://localhost:9527/api/rules/ip \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"ip": "10.0.0.0/8", "action": "allow"}'

TIP

عند نشر قواعد جديدة، ابدأ بـ action: log لمراقبة النتائج الإيجابية الخاطئة قبل التبديل إلى action: block.

مشكلات شهادة SSL ​

الأعراض: فشل اتصالات HTTPS أو أخطاء الشهادات أو فشل تجديد Let's Encrypt.

الحلول:

  1. تحقق من حالة الشهادة في واجهة المستخدم الإدارية تحت SSL Certificates.

  2. تحقق من إمكانية الوصول إلى المنفذ 80 من الإنترنت لتحديات ACME HTTP-01.

  3. تحقق من مسارات الشهادة إذا كنت تستخدم شهادات يدوية:

toml
[http3]
cert_pem = "/etc/prx-waf/tls/cert.pem"
key_pem  = "/etc/prx-waf/tls/key.pem"
  1. تحقق من تطابق الشهادة مع النطاق:
bash
openssl x509 -in /etc/prx-waf/tls/cert.pem -text -noout | grep -A1 "Subject Alternative Name"

عقد الكتلة لا تتصل ​

الأعراض: عقد العمال لا تستطيع الانضمام إلى الكتلة. تُظهر الحالة نظراء "disconnected".

الحلول:

  1. تحقق من الاتصال الشبكي على منفذ الكتلة (الافتراضي: UDP 16851):
bash
# From worker to main
nc -zuv node-a 16851
  1. تحقق من قواعد جدار الحماية -- تستخدم اتصالات الكتلة UDP:
bash
sudo ufw allow 16851/udp
  1. تحقق من الشهادات -- يجب أن تستخدم جميع العقد شهادات موقَّعة من نفس CA:
bash
openssl verify -CAfile cluster-ca.pem node-b.pem
  1. تحقق من إعداد البذور على عقد العمال:
toml
[cluster]
seeds = ["node-a:16851"]   # Must resolve to the main node
  1. راجع السجلات بتفاصيل debug:
bash
prx-waf -c config.toml run 2>&1 | grep -i "cluster\|quic\|peer"

استهلاك ذاكرة عالٍ ​

الأعراض: تستهلك عملية PRX-WAF ذاكرة أكثر من المتوقع.

الحلول:

  1. قلِّل حجم ذاكرة التخزين المؤقت للاستجابات:
toml
[cache]
max_size_mb = 128    # Reduce from default 256
  1. قلِّل مجمع اتصالات قاعدة البيانات:
toml
[storage]
max_connections = 10   # Reduce from default 20
  1. قلِّل خيوط العمل:
toml
[proxy]
worker_threads = 2    # Reduce from CPU count
  1. راقب استخدام الذاكرة:
bash
ps aux | grep prx-waf

مشكلات اتصال CrowdSec ​

الأعراض: يُظهر تكامل CrowdSec "disconnected" أو القرارات لا تُحمَّل.

الحلول:

  1. اختبر الاتصال بـ LAPI:
bash
prx-waf crowdsec test
  1. تحقق من مفتاح API:
bash
# On the CrowdSec machine
cscli bouncers list
  1. تحقق من عنوان URL لـ LAPI:
toml
[crowdsec]
lapi_url = "http://127.0.0.1:8080"
api_key  = "your-bouncer-key"
  1. اضبط إجراء احتياط آمن عند عدم إمكانية الوصول إلى LAPI:
toml
[crowdsec]
fallback_action = "log"    # Don't block when LAPI is down

ضبط الأداء ​

أوقات استجابة بطيئة ​

  1. فعِّل التخزين المؤقت للاستجابات:
toml
[cache]
enabled = true
max_size_mb = 512
  1. زِد خيوط العمل:
toml
[proxy]
worker_threads = 8
  1. زِد اتصالات قاعدة البيانات:
toml
[storage]
max_connections = 50

استهلاك CPU عالٍ ​

  1. قلِّل عدد القواعد النشطة. عطِّل قواعد مستوى الذعر 3-4 إذا لم تكن مطلوبة.

  2. عطِّل مراحل الكشف غير المستخدمة. مثلاً، إذا كنت لا تستخدم CrowdSec:

toml
[crowdsec]
enabled = false

الحصول على المساعدة ​

إذا لم تحل أيٌّ من الحلول أعلاه مشكلتك:

  1. تحقق من المشكلات الموجودة: github.com/openprx/prx-waf/issues
  2. أبلِغ عن مشكلة جديدة مع:
    • إصدار PRX-WAF
    • نظام التشغيل وإصدار النواة
    • ملف الإعداد (مع حذف كلمات المرور)
    • مخرجات السجل ذات الصلة
    • خطوات إعادة الإنتاج

الخطوات التالية ​

Released under the Apache-2.0 License.