نحوه نصب امن OpenClaw روی VPS
برای جلوگیری از آسیبپذیری CVE-2026-32922، OpenClaw را با استفاده از unprivileged user، firewall و systemd روی VPS خود به صورت امن پیکربندی کنید.
OpenClaw چیست و چرا ابتدا باید آن را مستحکم (Harden) کنید
OpenClaw یک عامل هوش مصنوعی (AI agent) با قابلیت میزبانی شخصی است. شما آن را روی سرور خود اجرا میکنید، آن را به یک مدل زبانی بزرگ متصل میکنید، و این عامل میتواند دستورات shell را اجرا کند، یک مرورگر را کنترل کند، فایلهای شما را بخواند و بنویسد، و بر اساس پیامهایی که از اپلیکیشنهای چت برای آن میفرستید عمل کند. این سطح از دسترسی، هدف اصلی این ابزار و در عین حال، تمام ریسک آن است. عاملی که میتواند هر دستوری را اجرا کند، تنها به اندازه سیستمی که روی آن اجرا میشود و محدودیتهایی که برای آن تعیین میکنید، امن است.
دو واقعیت، لحن این راهنما را تعیین میکنند. اول، OpenClaw به گونهای طراحی شده است که توسط شما مستحکم شود. مدل امنیتی آن مسئولیت اعمال سیاستهای سختگیرانه، محیطهای ایزوله (sandboxing) و مجوزهای دقیق را بر عهده اپراتور میگذارد، نه بر اساس تنظیمات پیشفرض امن. دوم، این پروژه قبلاً یک حادثه امنیتی جدی داشته است: در مارس 2026، 9 مشکل امنیتی ظرف مدت 4 روز فاش شد، از جمله یک نقص بحرانی ارتقای سطح دسترسی (privilege-escalation) با شناسه CVE-2026-32922 و امتیاز 9.9 از 10. هیچکدام از این واقعیتها به معنای اجتناب از OpenClaw نیست؛ بلکه به این معناست که نباید آن را با بیدقتی اجرا کنید، و این راهنما روش دقیق و محتاطانه است.
خبر خوبی هم وجود دارد. OpenClaw از قبل یک انتخاب امن برای شما انجام داده است: gateway آن، که تنها فرآیند کنترلکننده همه چیز است، به صورت پیشفرض روی آدرس loopback گوش میدهد، بنابراین تا زمانی که خودتان آن را در معرض اینترنت قرار ندهید، از طریق اینترنت قابل دسترسی نیست. بیشتر کارهای زیر، برای حفظ این وضعیت و محدود کردن شعاع تخریب در صورت بروز مشکل است.
برای OpenClaw یک کاربر بدون امتیاز (unprivileged) اختصاصی بسازید
هرگز یک عامل را با کاربر root اجرا نکنید. اگر OpenClaw با کاربر root اجرا شود و هر مشکلی پیش بیاید (خواه یک باگ باشد، یا یک دستور اشتباه، یا یک CVE مانند مورد بالا)، میزان آسیب هیچ سقفی نخواهد داشت. یک کاربر سیستمی اختصاصی بدون shell برای ورود و بدون sudo بسازید و عامل را با آن کاربر اجرا کنید:
sudo useradd --system --home /opt/openclaw --shell /usr/sbin/nologin openclawهر آنچه OpenClaw مالک آن است، در مسیر /opt/openclaw و تحت مالکیت آن حساب کاربری قرار میگیرد. این مهمترین مرحله است و همان اصلی است که در running services as an unprivileged user بررسی شده است: کاربری که یک عامل با آن اجرا میشود، سقف میزان تخریبپذیری آن است.
نصب OpenClaw
OpenClaw به صورت یک بسته npm توزیع میشود، بنابراین اگر سرور Node.js ندارد، ابتدا آن را نصب کنید. بسته را به صورت global نصب کنید که باعث میشود فایل اجرایی openclaw در PATH تمام کاربران قرار گیرد، سپس مرحله یکباره onboarding را اجرا کنید:
sudo npm install -g openclaw@latest
sudo -u openclaw openclaw onboardاجرای onboarding با کاربر openclaw به این معناست که تنظیمات عامل در دایرکتوری home آن یعنی /opt/openclaw قرار میگیرد، نه در home کاربر root. این پروژه همچنین یک نصبکننده curl -fsSL https://openclaw.ai/install.sh | bash ارائه میدهد که همین کار را در یک خط انجام میدهد. در مرحله onboarding از فلگ --install-daemon صرفنظر کنید: این فلگ سرویس خود OpenClaw را ثبت میکند، در حالی که unit فایل systemd که در ادامه میسازید، سختگیرانهتر است.
نگه داشتن gateway در loopback و پشت یک فایروال
gateway به صورت پیشفرض به 127.0.0.1 متصل میشود. آن را در همان حالت رها کنید. تقریباً هیچ دلیلی برای انتشار آن پورت در اینترنت وجود ندارد و انجام این کار، هر کسی را که آن را پیدا کند، به یک دسترسی از راه دور به فرآیندی تبدیل میکند که وظیفهاش اجرای دستورات است.
یک فایروال با سیاست default-deny در مقابل سرور قرار دهید تا هیچ چیزی به طور تصادفی در معرض دسترسی نباشد:
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enableدو تله که باید از آنها اجتناب کنید: فایروالی که فقط IPv4 را پوشش میدهد، میتواند همان سرویس را در IPv6 کاملاً باز بگذارد، که دقیقاً همان IPv6 firewall gap است که افراد زیادی را گرفتار میکند. و اگر نیاز دارید از طریق لپتاپ به gateway دسترسی داشته باشید، پورت را باز نکنید. از طریق یک VPN یا یک SSH tunnel به آن متصل شوید تا عامل هرگز در معرض اینترنت عمومی نباشد.
ایزوله کردن اسرار (secrets)
OpenClaw برای هر مدل زبانی که به آن متصل میشوید، به یک API key نیاز دارد. آن کلید میتواند پول شما را خرج کند و از طریق عامل، از طرف شما اقدام کند، بنابراین با آن مانند یک رمز عبور رفتار کنید. آن را از unit file و از هر مخزنی (repository) دور نگه دارید. آن را در فایلی قرار دهید که فقط کاربر OpenClaw بتواند آن را بخواند:
sudo install -o openclaw -g openclaw -m 600 /dev/null /opt/openclaw/openclaw.env
sudoedit /opt/openclaw/openclaw.env # add ANTHROPIC_API_KEY=... or your model provider's keyواحد systemd آن فایل را با استفاده از EnvironmentFile بارگذاری میکند، بنابراین کلید بدون اینکه در خط فرمان، در لاگ یا در تاریخچه shell شما قرار بگیرد، به فرآیند میرسد.
اجرا به عنوان یک سرویس مستحکم systemd
اجرای عامل تحت systemd به شما قابلیتهای restart خودکار، لاگهای تمیز از طریق journalctl و مهمتر از همه، مجموعهای از گزینههای sandboxing در سطح هسته (kernel) میدهد که محدودیتهای فرآیند را حتی در صورت هک شدن، کاهش میدهد. گزینههایی که برای یک عامل بیشترین اهمیت را دارند عبارتند از: NoNewPrivileges برای اینکه هرگز قدرت جدیدی به دست نیاورد، ProtectSystem=strict برای اینکه فایلسیستم به جز جاهایی که اجازه نوشتن میدهید، read-only باشد، PrivateTmp برای دایرکتوری موقت ایزوله خودش، و ProtectHome برای اینکه نتواند دایرکتوریهای home را بخواند.
یک unit کامل و مستحکم در اینجا تولید کنید، سپس آن را به /etc/systemd/system/openclaw.service کپی کنید:
واحد مذکور openclaw gateway را اجرا میکند، یعنی همان فرآیند طولانیمدتی که عامل را کنترل میکند؛ اگر which openclaw مسیر متفاوتی را در سرور شما نشان داد، ExecStart را برای مطابقت با آن تنظیم کنید. راهنمای کامل این دستورات و همچنین daemon-reload و enable --now در running a program as a systemd service موجود است. نسخه کوتاه پس از چسباندن unit:
sudo systemctl daemon-reload
sudo systemctl enable --now openclawمستحکم کردن درگاه ورود (front door)
امنیت یک جعبه عامل، به اندازه امنیت سروری که آن را در بر گرفته است، است. دو لایه دیگر کار را تمام میکند. SSH را به احراز هویت فقط با کلید (key-only) تغییر دهید و ورود root را غیرفعال کنید، مشابه SSH hardening on a VPS، تا حسابی که با آن سرور را مدیریت میکنید، قابل brute-force نباشد. سپس Fail2ban را برای اخراج اسکنرهایی که به تمام پورتهای عمومی ضربه میزنند، اضافه کنید. هیچکدام مستقیماً با OpenClaw در تماس نیستند، اما هر دو مسیرهایی را که یک مهاجم برای رسیدن به آن استفاده میکند، مسدود میکنند.
بهروز نگه داشتن، به صورت آگاهانه
افشای اطلاعات در مارس 2026، واضحترین دلیل برای بهروز ماندن است. یک باگ ارتقای سطح دسترسی در یک عامل، بسیار جدیتر از یک اپلیکیشن وب معمولی است، زیرا عامل از قبل دستورات را اجرا میکند. اخبار انتشار پروژه را دنبال کنید، بهروزرسانیهای امنیتی را سریعاً اعمال کنید و ارتقای OpenClaw را به عنوان یک نگهداری روتین در نظر بگیرید، نه چیزی که بتوان آن را به تعویق انداخت.
برای درک آنچه واقعاً در حال مستحکم کردن آن هستید، the architecture of an OpenClaw-style agent اجزای متحرک را بررسی میکند و building your own AI agent on a VPS ساختار کلی هر عاملی را پوشش میدهد.
FAQ
آیا اجرای OpenClaw روی یک VPS عمومی ایمن است؟
اگر آن را مستحکم کنید، میتواند باشد. OpenClaw ذاتاً قدرتمند است: دستورات shell را اجرا میکند و یک مرورگر را کنترل میکند، بنابراین یک تنظیمات بیدقت واقعاً خطرناک است و این پروژه قبلاً یک CVE بحرانی داشته است (CVE-2026-32922 در مارس 2026). مدل امنیتی آن انتظار دارد که شما، به عنوان اپراتور، محدودیتها را اضافه کنید. آن را به عنوان یک کاربر بدون امتیاز اجرا کنید، gateway آن را در loopback و پشت یک فایروال با سیاست default-deny نگه دارید، API keyهای آن را ایزوله کنید و آن را به عنوان یک سرویس مستحکم systemd اجرا کنید.
آیا باید gateway مربوط به OpenClaw را در معرض اینترنت قرار دهم؟
خیر. gateway به صورت پیشفرض به loopback متصل میشود و باید آن را در همان حالت نگه دارید. این تنها فرآیندی است که عامل را کنترل میکند، بنابراین یک gateway در معرض اینترنت، یک مسیر از راه دور به چیزی است که وظیفهاش اجرای دستورات است. اگر نیاز دارید از راه دور به آن دسترسی داشته باشید، به جای باز کردن پورت، از یک VPN یا یک SSH tunnel استفاده کنید.
OpenClaw باید با چه کاربری اجرا شود؟
یک کاربر سیستمی اختصاصی بدون shell برای ورود و بدون sudo، هرگز root. اگر عامل هک شود، حساب کاربری آن سقف میزان آسیب است، بنابراین آن حساب باید فقط مالک فایلهای خودش در دایرکتوریهایی مانند /opt/openclaw باشد و نه هیچ چیز دیگر.
چگونه API keyهای OpenClaw را امن نگه دارم؟
آنها را در فایلی ذخیره کنید که فقط توسط کاربر OpenClaw قابل خواندن باشد (mode 600) و آن را با استفاده از EnvironmentFile systemd در سرویس بارگذاری کنید. کلید را از unit file، از تاریخچه shell و از هر مخزن git دور نگه دارید. اگر شک کردید که کلید لو رفته است، آن را تغییر دهید (rotate).