يشرح هذا الدليل كيفية تأمين خادم Coolify وجميع المواقع المستضافة عليه باستخدام CrowdSec. سنثبت CrowdSec مباشرةً على خادم Ubuntu، ونربطه بـfirewall bouncer، ثم نطبق الحماية على حركة الويب عبر CrowdSec Traefik plugin.
لماذا تستخدم CrowdSec كجدار حماية لـCoolify؟
- CrowdSec Host Agent: يحمي الخادم وخدمات مثل SSH.
- Firewall bouncer باستخدام nftables: يحظر المهاجمين تلقائياً على مستوى الشبكة.
- CrowdSec bouncer plugin لـTraefik: يحظر العناوين الضارة في طبقة HTTP وHTTPS.
- Traefik middleware موحد: يطبق الحماية على كل النطاقات من دون labels منفصلة.
- إعداد خفيف يستهلك موارد محدودة ويضيف طبقات حماية متعددة.
إذا كنت تريد حماية المواقع فقط من دون جدار حماية شامل للخادم، استخدم دليل CrowdSec وTraefik الأبسط.
ملاحظة: اختبر الإعداد أولاً على خادم تطوير قبل تطبيقه على بيئة الإنتاج.
ما هو CrowdSec؟
CrowdSec نظام مفتوح المصدر لمنع التسلل يعتمد على المجتمع. يحلل سجلات الخادم مباشرةً، ويرصد السلوك المريب ويحظر عناوين IP الضارة، مع الاستفادة من شبكة عالمية لمعلومات التهديدات.
يمكنك من لوحة CrowdSec:
- عرض عناوين المهاجمين ومصادرها.
- مراقبة أنماط مثل XSS وSQLi وهجمات SSH بالقوة الغاشمة.
- مراجعة درجات الخطورة والسجل.
- مشاركة قرارات الحظر بين الخوادم.
يوضح الرسم التالي علاقة المكونات:

الخطوة الأولى: تثبيت CrowdSec على خادم Coolify
curl -s https://install.crowdsec.net | sudo bash
sudo apt install crowdsec
تحقق من الخدمة:
sudo systemctl status crowdsec
تأكد من أن المنفذ 8080 متاح وغير مستخدم من حاوية أخرى. يمكنك تغييره في /etc/crowdsec/config.yaml:
sudo nano /etc/crowdsec/config.yaml
غيّر:
listen_uri: 127.0.0.1:8080
إلى:
listen_uri: 0.0.0.0:8080
ثم أعد تشغيل CrowdSec:
sudo systemctl restart crowdsec
الخطوة الثانية: تثبيت firewall bouncer باستخدام nftables
sudo apt install crowdsec-firewall-bouncer-nftables -y
sudo systemctl enable crowdsec-firewall-bouncer-nftables --now
اعرض المقاييس:
sudo cscli metrics
ابحث عن cs-firewall-bouncer ضمن Local API Bouncers Metrics.
ربط CrowdSec Console اختيارياً
ربط CrowdSec بـالخدمة المجتمعية اختياري. يعمل التحليل والحظر محلياً من دونها، لكن الاتصال بالـConsole يمنحك لوحة مركزية ومعلومات مجتمعية عن التهديدات وبيانات الموقع الجغرافي وقوائم حظر مشتركة.
توجد ثلاث طرق رئيسية للمراقبة:
- لوحة محلية باستخدام Metabase.
- CrowdSec Console للإدارة المركزية.
- أداة CLI المضمنة.
أنشئ حساباً على صفحة التسجيل، ثم انسخ أمر enrollment وشغله على الخادم:
sudo cscli console enroll XXXXX

ستظهر نتيجة مشابهة:

ارجع إلى Console ووافق على enrollment لتفعيل لوحة المتابعة:

أصبح جدار الحماية يعمل، لكنه لم يبدأ تحليل سجلات Traefik بعد. نحتاج إلى Remediation Component وسجلات Traefik حتى يصدر قرارات الحظر المناسبة.
تستخدم CrowdSec مكونات Remediation لتنفيذ قرارات مثل حظر عنوان IP، بعدما يحلل محرك LAPI السجلات القادمة من تطبيقات مثل Traefik.
الخطوة الثالثة: إنشاء مفتاح bouncer لـTraefik
sudo cscli bouncers add traefik-bouncer
انسخ المفتاح الناتج لاستخدامه في الخطوة التالية.

الخطوة الرابعة: ربط Traefik بـCrowdSec
تعمل الإضافة بوصفها Remediation Component بين Traefik وCrowdSec. كما سنتيح لـCrowdSec قراءة ملف access.log حتى يحلل الحركة ويطبق الحماية مباشرةً.
إنشاء crowdsec-plugin.yaml داخل Traefik
http:
middlewares:
crowdsec:
plugin:
crowdsec-bouncer:
crowdsecMode: live
crowdsecLapiHost: 'host.docker.internal:8080'
crowdsecLapiKey: 'PASTE_YOUR_KEY_HERE'
enabled: true
تحديث docker-compose.yml الخاص بـTraefik
طبق middleware على HTTP وHTTPS:
- '--entrypoints.http.http.middlewares=crowdsec@file'
- '--entrypoints.https.http.middlewares=crowdsec@file'
إذا كانت المواقع تستخدم Cloudflare DNS، أضف:
- "--entryPoints.http.forwardedHeaders.insecure=true"
- "--entryPoints.https.forwardedHeaders.insecure=true"
أضف إعداد plugin:
- '--experimental.plugins.crowdsec-bouncer.modulename=github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin'
- '--experimental.plugins.crowdsec-bouncer.version=v1.2.1'
فعّل سجل وصول Traefik:
- '--accesslog=true'
- '--accesslog.format=json'
- '--accesslog.bufferingsize=0'
- '--accesslog.fields.headers.defaultmode=drop'
- '--accesslog.fields.headers.names.User-Agent=keep'
- '--accesslog.filepath=/traefik/access.log'
ولسجلات أكثر تفصيلاً:
- '--log.level=INFO'
أعد تشغيل Traefik:
docker restart coolify-proxy
الخطوة الأخيرة: تمكين تحليل سجلات Traefik
ثبّت collection الخاصة بـTraefik ثم أعد تحميل CrowdSec:
cscli collections install crowdsecurity/traefik
sudo systemctl reload crowdsec
افتح إعداد acquisition:
sudo nano /etc/crowdsec/acquis.yaml
أضف مسار سجل Traefik:
filenames:
- /data/coolify/proxy/access.log
labels:
type: traefik
log_type: http_access-log
أعد تشغيل CrowdSec وTraefik:
docker restart coolify-proxy
sudo systemctl restart crowdsec
اختبار حماية خادم Coolify
أضف قرار حظر تجريبياً:
cscli decisions add -i 1.2.3.4 -d 10m
حاول بعد ذلك فتح أحد المواقع أو الوصول إلى SSH من العنوان المحظور.
إذا كنت تريد حماية المواقع فقط، استخدم الإعداد الأبسط لـCrowdSec وTraefik.
يمكن أن يحمي Fail2Ban خدمة SSH أيضاً، لكن CrowdSec يستطيع التعامل معها باستخدام SSH scenario. راجع دليل حماية Coolify باستخدام Fail2Ban للمقارنة.
الملخص والنتيجة
- يحمي CrowdSec Traefik bouncer حركة HTTP وHTTPS.
- يحمي firewall bouncer خدمة SSH ومنافذ الخادم.
- توجد سجلات Traefik في
/traefik/access.log. - يستخدم Traefik العنوان
host.docker.internalللوصول إلى CrowdSec LAPI.
أصبح لديك الآن:
- حماية عامة لـHTTP وHTTPS لجميع مواقع Coolify.
- حماية على مستوى النظام لـSSH والمنافذ المهمة.
- إعداد قابل للتوسع من دون labels لكل مشروع.
- أساس يمكن توسيعه لاحقاً باستخدام CrowdSec AppSec WAF.
يمكنك إضافة Traefik AppSec WAF لاحقاً لحظر هجمات متقدمة مثل XSS وSQLi واستغلالات CVE.
للبدء من إعداد Coolify نفسه، راجع إعداد Coolify ونشر أول مشروع.
إذا أفادك الدليل، يمكنك دعمي بفنجان قهوة. كل مساهمة تساعدني على مواصلة نشر هذه الشروحات — وتُبقي ذهني يقظاً.
هل تحتاج إلى مساعدة؟
أقدم خدمات إعداد وتأمين تشمل CrowdSec Firewall وAppSec WAF، وتحسين Traefik، وتحصين SSH والنظام، والمراقبة والتنبيهات، وتثبيت Coolify وإدارته.
تواصل معي لمناقشة إعداد خادمك.
