انتقل إلى المحتوى
العودة إلى المقالات

~/writing / من واقع التجربة

  • Coolify
  • CrowdSec
  • nftables
  • Traefik
  • أمن الخوادم

تأمين خادم Coolify ومواقعه باستخدام CrowdSec وnftables وTraefik

Mustafa Ramx pixel avatarبقلم Mustafa Ramx6 أبريل 20254 دقائق للقراءةآخر تحديث 12 نوفمبر 2025
صورة المقال تأمين خادم Coolify ومواقعه باستخدام CrowdSec وnftables وTraefik
محتويات المقال10 أقسام
  1. لماذا تستخدم CrowdSec كجدار حماية لـCoolify؟
  2. ما هو CrowdSec؟
  3. الخطوة الأولى: تثبيت CrowdSec على خادم Coolify
  4. الخطوة الثانية: تثبيت firewall bouncer باستخدام nftables
  5. الخطوة الثالثة: إنشاء مفتاح bouncer لـTraefik
  6. الخطوة الرابعة: ربط Traefik بـCrowdSec
  7. الخطوة الأخيرة: تمكين تحليل سجلات Traefik
  8. اختبار حماية خادم Coolify
  9. الملخص والنتيجة
  10. هل تحتاج إلى مساعدة؟

يشرح هذا الدليل كيفية تأمين خادم 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 وTraefik وfirewall bouncer على خادم Coolify

الخطوة الأولى: تثبيت 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

تسجيل خادم Coolify داخل CrowdSec Console

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

نتيجة أمر enrollment في CrowdSec

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

الموافقة على ربط الخادم داخل CrowdSec Console

أصبح جدار الحماية يعمل، لكنه لم يبدأ تحليل سجلات Traefik بعد. نحتاج إلى Remediation Component وسجلات Traefik حتى يصدر قرارات الحظر المناسبة.

تستخدم CrowdSec مكونات Remediation لتنفيذ قرارات مثل حظر عنوان IP، بعدما يحلل محرك LAPI السجلات القادمة من تطبيقات مثل Traefik.

الخطوة الثالثة: إنشاء مفتاح bouncer لـTraefik

sudo cscli bouncers add traefik-bouncer

انسخ المفتاح الناتج لاستخدامه في الخطوة التالية.

مفتاح API الخاص بـ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 وإدارته.

تواصل معي لمناقشة إعداد خادمك.

// شارك المقال

شارك على XLinkedIn