DanLevy.net

مساعدك الذكي منحني وصولًا إلى الصدفة

كيفية تأمين إعداد OpenClaw/Moltbot المحلي أو على الخادم الافتراضي الخاص (VPS)

OpenClaw (المعروف سابقًا باسم Clawdbot/Moltbot) يوفّر لك مساعدًا ذكيًا شخصيًا يعمل عبر WhatsApp وSlack وDiscord وiMessage وغيرها من القنوات. لكن إذا وضعت بوابته أو تحكم العقد أو SSH على الإنترنت العام دون مصادقة قوية، فإنك تمنح الغرباء مسارًا للوصول إلى سطر الأوامر على جهازك.

هذا الدليل يوضح الإعداد الآمن الافتراضي: إبقاء بوابة OpenClaw على واجهة الحلقة الخلفية فقط، وتعريضها فقط لشبكة Tailnet عبر Tailscale Serve، وتقوية SSH، والتحقق من خارج الشبكة أن البوابة ليست عامة.

اعتماد المشروع السريع كشف عن مخاوف أمنية حقيقية: مسح Shodan وجد 2,847 نسخة مكشوفة في الأسابيع القليلة الأولى، وقضية تدقيق أمان على GitHub أبلغت عن 512 مشكلة في قاعدة الشيفرة. جزء من ذلك كان ناتجًا عن ماسحات آلية وبعضها تغير منذ إعادة تسمية يناير 2026 إلى OpenClaw، لذا اعتبر الرقم إشارة تحذيرية وليس عددًا دقيقًا للثغرات الحالية. لا تحتاج لأن تكون خبيرًا أمنيًا—ما عليك سوى تجنّب نشر أسطح التشغيل قبل النشر.

ما الذي تكشفه فعليًا

اعتمادًا على طريقة التثبيت والتعريض، هناك ثلاث أسطح تستحق الفحص:

توثيق الوصول عن بُعد الحالي لـ OpenClaw يوضح أن WebSocket للبوابة يرتبط بواجهة الحلقة الخلفية افتراضيًا ويوصي بالحفاظ على هذا الإعداد ما لم تقم عمدًا باختيار LAN أو Tailnet أو ربط مخصص. هذا جيد. تظهر المخاطر عندما تتجاوز هذا الإعداد الافتراضي، تنشر منافذ Docker، تضيف وكيلًا عكسيًا، تُفعّل Funnel، أو تترك SSH مفتوحًا للعالم.

البوابة هي الأكبر. إنها سطح التشغيل لمساعدك، بما في ذلك مسارات استدعاء الأدوات. إذا كانت قابلة للوصول من الإنترنت وغيّرت المصادقة أو كانت ضعيفة أو تم تجاوزها أو تسريبها، قد يتمكن المهاجم من توجيه الوكيل أو استدعاء الأدوات بصلاحيات مستخدمك.

تحكم المتصفح حساس تقريبًا بنفس الدرجة. توثيق OpenClaw الحالي يوصي بتشغيل تحكم المتصفح عبر عقدة مقترنة على جهاز المتصفح ومعاملة إقران العقدة كالوصول التشغيلي. إذا كانت البوابة قادرة على استدعاء system.run على عقدة مقترنة، فهذا يعني تنفيذ شفرة عن بُعد على تلك العقدة، وفقًا لسياسة العقدة في البوابة وموافقات التنفيذ الخاصة بالعقدة نفسها.

SSH هو SSH. إذا كنت تستخدم المصادقة بكلمة مرور، فإن محاولات القوة الغاشمة لا مفر منها على خادم VPS عام.


حل Tailscale

بالنسبة إلى OpenClaw، يوفر Tailscale وصولًا عن بُعد دون نشر خدمات المشغل:

  1. تشغيل نسخة OpenClaw على خادم VPS أو جهاز محلي
  2. تبقى البوابة مقيدة بواجهة loopback وتُوصل عبر Tailscale Serve، أو تُربط مباشرةً بعنوان IP الخاص بالشبكة مع مصادقة صريحة
  3. تثبيت Tailscale على كل من الخادم وأجهزتك الشخصية
  4. الوصول إلى OpenClaw عبر عنوان IP الخاص بـ Tailscale أو اسم MagicDNS
  5. لا يرى أحد على الإنترنت شيئًا، ما لم تقم بتمكين Funnel أو أي وكيل عام عن قصد

هل يجب أن يدير OpenClaw إعدادات Tailscale؟

OpenClaw يحتوي على تكامل مدمج مع Tailscale يمكنه تكوين tailscale serve أو tailscale funnel للبوابة.

وضع Serve يبقي الأمور داخل شبكة tailnet فقط. تظل البوابة مقيدة بـ 127.0.0.1 بينما يتولى Tailscale توجيه الحركة وHTTPS. عندما يُفعَّل gateway.auth.allowTailscale، يستطيع OpenClaw مصادقة حركة تحكم UI/WebSocket باستخدام رؤوس هوية Tailscale والتحقق من المصدر عبر tailscale whois. هذا هو الوضع المناسب لمعظم النشرات الشخصية.

وضع Funnel يعرّض البوابة للجمهور عبر ميزة نقطة النهاية العامة في Tailscale. توضح وثائق Tailscale نفسها أن Funnel يوجه الحركة من الإنترنت إلى خدمة محلية. يرفض OpenClaw تشغيل Funnel ما لم يكن وضع مصادقة البوابة password، لكنك لا تزال تختار كشفًا عامًا لسطح المشغل.

توثيق الأمان في OpenClaw يوضح أن حقن الأوامر والوصول إلى الأدوات هما من المخاطر الأساسية للمساعد الشخصي. لا تمنح الوكيل مسارًا لجعل نفسه عامًّا بصمت. استخدم Serve عن قصد، وتجنب Funnel إلا إذا كنت بحاجة فعلية للوصول العام، واطلب موافقة تنفيذ لأي أمر tailscale.


إعداد OpenClaw بأمان

الخطوة 1: تثبيت Tailscale

على خادم VPS أو الخادم المحلي الخاص بك:

Terminal window
# Install Tailscale
curl -fsSL https://tailscale.com/install.sh | sh
# Authenticate (opens a browser to log in)
sudo tailscale up
# Get your Tailscale IP
tailscale ip -4
# Output: 100.x.x.x

على جهاز العميل، قم بتثبيت Tailscale من صفحة التحميل الرسمية وسجِّل الدخول إلى نفس الـ tailnet.

الآن كلا الجهازين على نفس الشبكة الخاصة. يمكنك اختبار الاتصال بـ VPS باستخدام عنوان IP الخاص بـ Tailscale، وسيتم توجيه الحركة عبر النفق المشفر.

الخطوة 2: ضبط OpenClaw لاستخدام Tailscale

النمط الأكثر أمانًا حاليًا هو: إبقاء البوابة على واجهة loopback وتعريضها لشبكة tailnet عبر وضع Serve في Tailscale.

في ملف إعداد OpenClaw:

{
gateway: {
bind: "loopback",
tailscale: { mode: "serve" },
},
}

بعد ذلك شغِّل البوابة باستخدام Serve:

Terminal window
openclaw gateway --tailscale serve

توضح وثائق OpenClaw أن هذا يبقي البوابة على 127.0.0.1 بينما يوفر Tailscale HTTPS وتوجيه الـ tailnet. تُفتح البوابة عبر https://<magicdns-name>/، وليس عبر عنوان الـ IP العام لخادم VPS.

إذا كنت تفضّل ربط مباشر إلى الـ tailnet بدلاً من وضع Serve، استخدم مصادقة صريحة للبوابة:

{
gateway: {
bind: "tailnet",
auth: {
mode: "token",
token: "replace-with-a-long-random-token",
},
},
}

ثم اتصل من جهاز tailnet آخر:

http://<tailscale-ip>:18789/
ws://<tailscale-ip>:18789

عند تشغيل OpenClaw داخل Docker أو أي بيئة حاويات أخرى، كن حذرًا جدًا مع نشر المنافذ. النشر مثل -p 18789:18789 عادةً ما يربط جميع واجهات المضيف. يفضَّل ربط الـ loopback مع Tailscale Serve، أو ربط جانب المضيف صراحةً إلى عنوان IP الخاص بـ Tailscale بعد التأكد من أن الحاوية ما زالت تستقبل الحركة:

Terminal window
TAILSCALE_IP=$(tailscale ip -4)
docker run ... -p "$TAILSCALE_IP:18789:18789" ...

بعد أي تعديل في Docker، تحقق من الخارج باستخدام nmap ومن داخل النظام باستخدام ss. يمكن لـ Docker أن يتجاوز أو يعيد ترتيب افتراضات جدار الحماية على المضيف إذا لم تأخذ ذلك في الاعتبار.

الخطوة 3: تأمين SSH

حتى مع Tailscale، يجب تأمين SSH بشكل صحيح:

Terminal window
# احتفظ بجلسة SSH الحالية مفتوحة أثناء تنفيذ هذه الخطوات.
# أولاً، من جهاز العميل، تأكد من إمكانية SSH عبر Tailscale:
ssh your-user@SERVER_TAILSCALE_IP
# ضع إعدادات التعزيز في ملف drop‑in بدلاً من تعديل sshd_config بالكامل.
sudo tee /etc/ssh/sshd_config.d/99-openclaw-hardening.conf >/dev/null <<'EOF'
PasswordAuthentication no
PermitRootLogin no
KbdInteractiveAuthentication no
EOF
# تحقق من صحة الإعداد قبل إعادة التحميل. لا تتخطى هذه الخطوة.
sudo sshd -t
sudo systemctl reload ssh || sudo systemctl reload sshd

هذا يعطل تسجيل الدخول باستخدام كلمة مرور ويمنع الدخول كـ root. الخطوة التالية تستخدم UFW لمنع SSH العام تمامًا مع الاستمرار في السماح بـ SSH عبر tailscale0.

الخطوة 4: قواعد جدار الحماية

قم بإعداد جدار حماية كطبقة أمان ثانية:

Terminal window
# Using UFW (Ubuntu/Debian)
sudo ufw allow in on tailscale0
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable
sudo ufw delete allow 22/tcp || true
sudo ufw reload
sudo ufw status verbose

دليل تقوية الأمان الخاص بـ Tailscale على Ubuntu يستخدم نفس النمط: السماح لـ tailscale0، رفض كل حركة الدخول الأخرى، ثم التحقق من أن اتصال SSH العام ينتهي بمهلة بينما يظل SSH إلى العنوان 100.x.y.z يعمل. إذا كنت تشغل موقعًا عامًا على نفس الـ VPS، احتفظ فقط بالقواعد العامة التي تحتاجها فعلاً، مثل 80/tcp و 443/tcp.


فحص التعرض

التحقق من المنافذ المفتوحة من الخارج

من جهاز ليس على شبكة Tailscale الخاصة بك:

Terminal window
# تحقق ما إذا كانت المنافذ العامة الشائعة مكشوفة
nmap -p 22,80,443,18789 YOUR_PUBLIC_IP
# النتيجة المتوقعة لجهاز مؤمن:
# 22/tcp filtered ssh
# 18789/tcp filtered unknown

إذا ظهر 22 أو 18789 كـ open بدلاً من filtered أو closed، فهناك مشكلة. إذا كان 80 أو 443 مفتوحًا، تأكد أن ذلك يعود فقط إلى موقعك العام المقصود أو نقطة نهاية Tailscale Funnel، وليس إلى بوابة OpenClaw عن طريق الخطأ.

التحقق مما يستمع محليًا

على خادم OpenClaw الخاص بك:

Terminal window
# عرض جميع المنافذ المستمعة وما الذي ترتبط به
sudo ss -tulpn | grep LISTEN
# ابحث عن أسطر مشابهة لهذه (مناسبة لـ Serve):
# tcp LISTEN 0 128 127.0.0.1:18789 *:*
#
# أو هذه (مقبولة للربط المباشر على tailnet مع المصادقة):
# tcp LISTEN 0 128 100.x.y.z:18789 *:*
#
# **ليس** مثل هذه (سيئة):
# tcp LISTEN 0 128 0.0.0.0:18789 *:*

إذا رأيت 0.0.0.0 أو ::: (ما يعادل IPv6)، فهذا يعني أن الخدمة مكشوفة للعالم.

تدقيق الأمان المدمج

OpenClaw يتضمن أمرًا لتدقيق الأمان security audit command يتحقق من تكوينك مقابل أفضل ممارسات الأمان:

Terminal window
openclaw security audit --deep
openclaw security audit --deep --fix

التدقيق يفحص تعريض البوابة، وضع Tailscale، إعدادات المصادقة، وصول القنوات، سياسة الأدوات، جرد الإضافات، وأذونات الملفات. اعتبر --fix أداة مساعدة مفيدة، لا بديلًا عن قراءة النتائج.


ما لا يحله هذا

Tailscale يزيل أكبر خطأ: تعريض المشغل للجمهور. لكنه لا يحل كل شيء:

تخزين الاعتمادات: OpenClaw يخزن نصوص الجلسات، رموز OAuth، ومفاتيح API على القرص. تأكد من أن لهذه الملفات أذونات صحيحة (chmod 600 للملفات، chmod 700 لأدلة الإعداد الخاصة) ولا تكون ضمن نظام التحكم بالإصدارات. التدقيق المدمج يتحقق من ذلك.

عزل الإضافات: الإضافات تُشغَّل بصلاحيات المستخدم الكامل. لا تثبّت إلا الإضافات من مصادر تثق بها، وراجع القدرات التي تطلبها. أداة التدقيق تُجرد الإضافات المثبتة.

أمان الجهاز: إذا تم اختراق حساب Tailscale الخاص بك أو سرق جهاز على الشبكة الخاصة، يمكن للمهاجم الوصول إلى نسخة OpenClaw. فعّل تفويض أجهزة Tailscale لطلب موافقة على الأجهزة الجديدة.


قائمة التحقق من النشر

قبل اعتبار نسخة OpenClaw/Moltbot جاهزة للإنتاج:

الموارد