كيفية تأمين OpenClaw وتقويته على VeerHost VPS

القراءة المقدرة:2دقائق

Summary: تشغيل OpenClaw على خادم VPS يمنحك تحكمًا كاملًا، لكنه يجعلك أيضًا مسؤولًا عن أمان الخادم. يوضح هذا الدليل كيفية تقوية خادم VeerHost VPS لتصبح عملية نشر

تشغيل OpenClaw على خادم VPS يمنحك تحكمًا كاملًا، لكنه يجعلك أيضًا مسؤولًا عن أمان الخادم. يوضح هذا الدليل كيفية تقوية خادم VeerHost VPS لتصبح عملية نشر OpenClaw أصعب في المسح والاستغلال وإساءة الاستخدام.

ملاحظة: قد تشير بعض الأدلة القديمة إلى OpenClaw باسم Moltbot أو Clawdbot. يستخدم هذا المستند الاسم الحالي: OpenClaw.

مبادئ الأمان

قبل تغيير أي شيء، اتبع هذه القواعد:

  • اكشف أقل عدد ممكن من المنافذ
  • شغّل الخدمات بأقل الصلاحيات
  • أبقِ الأسرار خارج المستودعات العامة
  • استخدم HTTPS للنقاط الموجهة للعامة
  • أبقِ نظام التشغيل والحزم محدّثة
  • راقب السجلات وأعد تشغيل الخدمات الفاشلة بسرعة

1) أبقِ النظام محدّثًا

شغّل التحديثات بانتظام:

sudo apt update && sudo apt -y upgrade

فعّل التحديثات الأمنية التلقائية إذا كانت مناسبة لسير عملك:

sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades

2) أنشئ مستخدم sudo وتجنب تسجيل دخول root اليومي

إذا كنت لا تزال تعمل بصلاحيات root، فأنشئ مستخدم مسؤول مخصصًا:

adduser openclawadmin
usermod -aG sudo openclawadmin

اختبر صلاحية sudo:

su - openclawadmin
sudo whoami

3) استخدم مفاتيح SSH

أنشئ مفتاحًا على جهازك المحلي إذا لم يكن لديك مفتاح بالفعل:

ssh-keygen -t ed25519

انسخه إلى الخادم:

ssh-copy-id openclawadmin@YOUR_VPS_IP

اختبر تسجيل الدخول:

ssh openclawadmin@YOUR_VPS_IP

4) قوِّ إعدادات SSH

عدّل تكوين SSH:

sudo nano /etc/ssh/sshd_config

الإعدادات الموصى بها:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding no

أعد تحميل SSH:

sudo systemctl reload ssh

مهم: تأكد من أن مفتاح SSH يعمل قبل تعطيل تسجيل الدخول بكلمة المرور.

5) اضبط جدار الحماية

اسمح بالحركة المطلوبة فقط:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable
sudo ufw status verbose

إذا كان OpenClaw يعمل خلف Nginx، فلا تكشف منفذ تطبيقه الداخلي للعامة.

6) اربط OpenClaw بـ localhost فقط

إذا كان OpenClaw يستمع على المنفذ 3000، فاربطه بـ 127.0.0.1 بدلًا من 0.0.0.0.

مثال على ربط منفذ Docker:

ports:
  - "127.0.0.1:3000:3000"

يمنع هذا الوصول العام المباشر مع السماح لـ Nginx بتمرير الطلبات محليًا.

7) ضع Nginx أمام OpenClaw

يساعد الوكيل العكسي في:

  • إنهاء التشفير HTTPS
  • توجيه أنظف للنطاقات
  • مصادقة أساسية اختيارية
  • تحديد معدل الطلبات
  • إخفاء المنافذ الداخلية

مثال أساسي:

server {
    listen 80;
    server_name bot.yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

8) فعّل HTTPS

ثبّت Certbot:

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d bot.yourdomain.com

هذا مهم بشكل خاص إذا كان OpenClaw يستخدم webhooks أو لوحات تحكم أو نقاط إدارة عبر الويب.

9) احمِ ملفات البيئة والأسرار

يجب ألا يكون ملف .env قابلًا للقراءة من الجميع أبدًا.

تحقق من الأذونات:

ls -l .env

اضبط أذونات آمنة:

chmod 600 .env

أفضل الممارسات:

  • لا ترفع ملف .env إلى Git أبدًا
  • غيّر الرموز بعد أي تسريب
  • استخدم كلمات مرور قوية لقاعدة البيانات
  • أبقِ مفاتيح API خارج لقطات الشاشة والسجلات والشروحات

10) أمِّن قاعدة البيانات

إذا كانت PostgreSQL أو MySQL يُستخدمان من OpenClaw فقط، فأبقِهما خاصين.

ممارسة جيدة:

  • اربط خدمات قاعدة البيانات بـ localhost أو بشبكة Docker الداخلية
  • لا تكشف منافذ قاعدة البيانات للعامة
  • استخدم مستخدم قاعدة بيانات مخصصًا بصلاحيات محدودة
  • انسخ قاعدة البيانات احتياطيًا بانتظام

تحقق من المنافذ المفتوحة قيد الاستماع:

sudo ss -tulpn

11) أضف Fail2ban

ثبّت Fail2ban لتقليل هجمات القوة الغاشمة:

sudo apt install -y fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

تحقق من الحالة:

sudo fail2ban-client status

12) قيّد التعرض للوحة التحكم ونقاط webhook

إذا كان OpenClaw يتضمن لوحة إدارة أو لوحة تحكم أو نقطة webhook:

  • احمِها بـ HTTPS
  • أضف المصادقة حيثما أمكن
  • قيّد الوصول حسب عنوان IP إذا كان الوصول مطلوبًا منك فقط
  • استخدم أسرارًا عشوائية قوية
  • عطّل نقاط النهاية غير المستخدمة

13) راقب السجلات

تحقق من السجلات كثيرًا لاكتشاف محاولات تسجيل الدخول الفاشلة أو الانهيارات المتكررة أو الطلبات المشبوهة.

سجلات Docker:

docker compose logs -f openclaw

سجلات مصادقة النظام:

sudo journalctl -u ssh -n 100 --no-pager

سجلات Nginx:

sudo tail -f /var/log/nginx/access.log /var/log/nginx/error.log

14) انسخ الملفات الحرجة احتياطيًا

على الأقل، انسخ احتياطيًا:

  • .env
  • docker-compose.yml
  • تكوين Nginx
  • نسخة قاعدة البيانات (dumps)

مثال على نسخ PostgreSQL الاحتياطي:

docker exec -t openclaw_postgres pg_dump -U openclaw_user openclaw > openclaw_backup.sql

15) أعد التشغيل بأمان بعد التغييرات

كلما غيّرت متغيرات البيئة أو إعدادات الوكيل أو تكوين Docker، أعد تشغيل الحزمة بشكل نظيف:

docker compose down
docker compose up -d

ثم تحقق:

docker compose ps
docker compose logs --tail=50

أخطاء شائعة يجب تجنبها

  • ترك المنفذ 3000 مفتوحًا لإنترنت العامة
  • إبقاء تسجيل دخول root عبر SSH مفعّلًا
  • استخدام كلمات مرور ضعيفة لقاعدة البيانات أو لرموز البوت
  • تخزين الأسرار في مستودعات GitHub
  • تشغيل صور Docker قديمة لأشهر
  • كشف منافذ قواعد البيانات مثل 5432 أو 3306 للعامة

قائمة تحقق سريعة للتقوية

  • النظام محدّث
  • مفاتيح SSH مفعّلة
  • تسجيل دخول root عبر SSH معطّل
  • جدار الحماية مفعّل
  • OpenClaw مربوط بـ localhost
  • تم ضبط وكيل Nginx العكسي
  • HTTPS مفعّل
  • .env مقيَّد الأذونات
  • قاعدة البيانات غير مكشوفة للعامة
  • Fail2ban مثبّت
  • تم اختبار النسخ الاحتياطية
  • السجلات تحت المراقبة
Launchpad