วิธีติดตั้ง OpenClaw บน VPS ให้ปลอดภัย
ป้องกันความเสี่ยงจากช่องโหว่ CVE-2026-32922 ด้วยการทำ Hardening บน VPS ทั้งการตั้งค่า unprivileged user, การใช้ firewall และการจัดการ systemd อย่างถูกวิธี
OpenClaw คืออะไร และทำไมต้องทำการ Hardening ก่อน
OpenClaw คือ AI agent แบบ self-hosted คุณสามารถรันมันบน server ของคุณเอง เชื่อมต่อกับ large language model และมันสามารถรัน shell commands, ควบคุม browser, อ่านและเขียนไฟล์ของคุณ และดำเนินการตามข้อความที่คุณส่งมาจาก chat apps ความสามารถที่ครอบคลุมนี้คือจุดประสงค์หลักของเครื่องมือ และยังเป็นความเสี่ยงหลักเช่นกัน Agent ที่สามารถรันคำสั่งใดก็ได้จะมีความปลอดภัยเท่ากับระบบที่มันรันอยู่และขอบเขตที่คุณกำหนดไว้เท่านั้น
มีข้อเท็จจริงสองประการที่กำหนดแนวทางของคู่มือนี้ ประการแรก OpenClaw ถูกออกแบบมาเพื่อให้คุณทำการ harden ด้วยตนเอง โมเดลความปลอดภัยของมันกำหนดให้ผู้ใช้งานเป็นผู้รับผิดชอบในการกำหนดนโยบายเครื่องมือ (tool policies), การทำ sandboxing และการจัดการสิทธิ์ (permissions) อย่างระมัดระวัง แทนที่จะใช้ค่าเริ่มต้นที่ปลอดภัย ประการที่สอง โปรเจกต์นี้เคยเกิดเหตุการณ์ด้านความปลอดภัยที่ร้ายแรงมาแล้ว: ในเดือน March 2026 มีการเปิดเผยช่องโหว่ด้านความปลอดภัย 9 รายการภายใน 4 วัน รวมถึงช่องโหว่ privilege-escalation ระดับวิกฤต CVE-2026-32922 ซึ่งมีคะแนน 9.9 จาก 10 ข้อเท็จจริงเหล่านี้ไม่ได้หมายความว่าคุณควรหลีกเลี่ยง OpenClaw แต่หมายความว่าคุณไม่ควรใช้งานแบบละเลย และคู่มือนี้คือวิธีการใช้งานอย่างระมัดระวัง
ยังมีข่าวดีอยู่ OpenClaw ได้เลือกสิ่งที่ปลอดภัยไว้ให้คุณแล้วหนึ่งอย่าง นั่นคือ gateway ซึ่งเป็น single process ที่ควบคุมทุกอย่าง จะ listen บน loopback address โดยค่าเริ่มต้น ดังนั้นจึงไม่สามารถเข้าถึงได้จาก internet เว้นแต่คุณจะตั้งใจเปิดเผยมัน งานส่วนใหญ่ด้านล่างนี้คือการรักษาให้มันเป็นเช่นนั้นต่อไป และการจำกัดขอบเขตความเสียหาย (blast radius) หากมีสิ่งผิดปกติเกิดขึ้น
สร้าง unprivileged user แยกต่างหากให้ OpenClaw
ห้ามรัน agent ในฐานะ root โดยเด็ดขาด หาก OpenClaw รันด้วยสิทธิ์ root และเกิดข้อผิดพลาดใดๆ ไม่ว่าจะเป็น bug, คำสั่งที่ผิดพลาด หรือ CVE อย่างที่กล่าวไปข้างต้น ความเสียหายจะไม่มีขีดจำกัด ให้สร้าง system user เฉพาะที่ไม่มี login shell และไม่มี sudo จากนั้นรัน agent ด้วย user นั้น:
sudo useradd --system --home /opt/openclaw --shell /usr/sbin/nologin openclawทุกอย่างที่ OpenClaw เป็นเจ้าของจะอยู่ภายใต้ /opt/openclaw ซึ่งเป็นเจ้าของโดย account ดังกล่าว นี่คือขั้นตอนที่สำคัญที่สุด และเป็นหลักการเดียวกับที่ระบุไว้ใน running services as an unprivileged user: account ที่ agent ใช้รันจะเป็นเพดานจำกัดความเสียหายที่มันสามารถทำลายได้
ติดตั้ง OpenClaw
OpenClaw ถูกแจกจ่ายในรูปแบบ npm package ดังนั้นหาก server ยังไม่มี Node.js ให้ติดตั้ง Node.js ก่อน ติดตั้ง package แบบ global เพื่อให้ binary openclaw อยู่ใน PATH สำหรับทุก user จากนั้นรันขั้นตอน onboarding เพียงครั้งเดียว:
sudo npm install -g openclaw@latest
sudo -u openclaw openclaw onboardการรัน onboarding ด้วย user openclaw หมายความว่า configuration ของ agent จะถูกเก็บไว้ใน home directory ของมันคือ /opt/openclaw ไม่ใช่ของ root นอกจากนี้โปรเจกต์ยังมี installer แบบ curl -fsSL https://openclaw.ai/install.sh | bash ที่สามารถติดตั้งทุกอย่างได้ในบรรทัดเดียว ให้ข้าม flag --install-daemon ในระหว่างการ onboarding เนื่องจากมันจะทำการ register service ของ OpenClaw เอง แต่ systemd unit ที่คุณจะสร้างขึ้นด้านล่างนั้นมีความเข้มงวดกว่า
รักษา gateway ไว้บน loopback และอยู่หลัง firewall
gateway จะ bind กับ 127.0.0.1 โดยค่าเริ่มต้น ให้คงไว้เช่นนั้น แทบไม่มีเหตุผลใดที่ต้องเปิด port นี้สู่ internet และการทำเช่นนั้นเท่ากับเป็นการมอบช่องทางเข้าถึงระยะไกล (remote foothold) ให้กับใครก็ตามที่พบมัน เพื่อเข้าสู่ process ที่ทำงานด้วยการรันคำสั่ง
ให้ติดตั้ง default-deny firewall ไว้หน้าเครื่องเพื่อป้องกันไม่ให้มีการเปิดเผยข้อมูลโดยไม่ตั้งใจ:
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enableมีกับดักสองอย่างที่ต้องระวัง Firewall ที่ครอบคลุมเฉพาะ IPv4 อาจทำให้ service เดียวกันนั้นถูกเปิดทิ้งไว้ใน IPv6 ซึ่งเป็น IPv6 firewall gap ที่ทำให้ผู้ใช้จำนวนมากประสบปัญหา และหากคุณจำเป็นต้องเข้าถึง gateway จาก laptop ของคุณ ห้ามเปิด port นั้น ให้เข้าถึงผ่าน VPN หรือ SSH tunnel เพื่อไม่ให้ agent ต้อง listen บน internet สาธารณะ
แยก secrets ออกจากกัน
OpenClaw จำเป็นต้องใช้ API key สำหรับ language model ที่คุณเชื่อมต่อ Key ดังกล่าวสามารถใช้จ่ายเงินของคุณได้ และสามารถดำเนินการแทนคุณผ่านทาง agent ดังนั้นจงปฏิบัติกับมันเหมือนรหัสผ่าน ห้ามใส่ไว้ใน unit file หรือใน repository ใดๆ ให้เก็บไว้ในไฟล์ที่เฉพาะ user ของ 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 keysystemd unit จะโหลดไฟล์นั้นด้วย EnvironmentFile ดังนั้น key จะถูกส่งไปยัง process โดยไม่ปรากฏใน command line, log หรือ shell history
รันด้วย hardened systemd service
การรัน agent ภายใต้ systemd จะช่วยให้คุณสามารถ restart อัตโนมัติ, มี log ที่สะอาดผ่าน journalctl และที่สำคัญที่สุดคือมีชุดตัวเลือก kernel-level sandboxing ที่ช่วยจำกัดสิ่งที่ process สามารถเข้าถึงได้แม้จะถูกเจาะระบบก็ตาม ตัวเลือกที่สำคัญที่สุดสำหรับ agent คือ NoNewPrivileges เพื่อไม่ให้มันได้รับสิทธิ์ใหม่, ProtectSystem=strict เพื่อให้ filesystem เป็นแบบ read-only ยกเว้นจุดที่คุณอนุญาตให้เขียนได้, PrivateTmp สำหรับ temporary directory ที่แยกเป็นเอกเทศ และ ProtectHome เพื่อไม่ให้มันอ่าน home directories ได้
สร้าง unit file ที่สมบูรณ์และผ่านการ harden ที่นี่ จากนั้นคัดลอกไปยัง /etc/systemd/system/openclaw.service:
unit นี้จะเริ่มรัน openclaw gateway ซึ่งเป็น long-running process ที่ควบคุม agent หาก which openclaw แสดง path ที่ต่างออกไปบน server ของคุณ ให้ปรับ ExecStart ให้ตรงกัน รายละเอียดทั้งหมดของ directive เหล่านี้ รวมถึง daemon-reload และ enable --now สามารถอ่านได้ใน running a program as a systemd service สรุปสั้นๆ หลังจากที่คุณวาง unit file แล้ว:
sudo systemctl daemon-reload
sudo systemctl enable --now openclawHarden ประตูหน้าด้วยเช่นกัน
ความปลอดภัยของเครื่อง agent ขึ้นอยู่กับความปลอดภัยของ server ที่รันมันด้วย มีอีกสองชั้นที่จะช่วยให้งานเสร็จสมบูรณ์ ให้เปลี่ยน SSH เป็นแบบ key-only authentication และยกเลิกการ login ด้วย root ตามวิธีใน SSH hardening on a VPS เพื่อไม่ให้ account ที่คุณใช้จัดการเครื่องถูก brute-force จากนั้นให้เพิ่ม Fail2ban เพื่อกำจัด scanner ที่พยายามโจมตีทุก public port วิธีการเหล่านี้ไม่ได้สัมผัสกับ OpenClaw โดยตรง แต่ทั้งคู่ช่วยตัดเส้นทางที่ attacker จะใช้เพื่อเข้าถึงมัน
อัปเดตอย่างสม่ำเสมอและตั้งใจ
การเปิดเผยข้อมูลในเดือน March 2026 เป็นข้อพิสูจน์ที่ชัดเจนที่สุดถึงความจำเป็นในการใช้งานเวอร์ชันล่าสุด ช่องโหว่ privilege-escalation ใน agent มีความร้ายแรงกว่าใน web app ทั่วไปมาก เพราะ agent สามารถรันคำสั่งได้อยู่แล้ว จงติดตามการ release ของโปรเจกต์, ติดตั้ง security updates อย่างรวดเร็ว และปฏิบัติกับการอัปเกรด OpenClaw ให้เป็นงานบำรุงรักษาปกติ ไม่ใช่สิ่งที่ควรเลื่อนออกไป
หากต้องการทำความเข้าใจสิ่งที่คุณกำลังทำการ harden อยู่ the architecture of an OpenClaw-style agent จะอธิบายส่วนประกอบต่างๆ และ building your own AI agent on a VPS จะครอบคลุมโครงสร้างทั่วไปของ agent ทุกประเภท
FAQ
ปลอดภัยไหมที่จะรัน OpenClaw บน public VPS?
สามารถทำได้หากคุณทำการ harden มัน OpenClaw ถูกออกแบบมาให้มีประสิทธิภาพสูง: มันรัน shell commands และควบคุม browser ดังนั้นการตั้งค่าที่ประมาทจึงอันตรายอย่างยิ่ง และโปรเจกต์นี้เคยมีช่องโหว่ระดับวิกฤตมาแล้ว (CVE-2026-32922 ในเดือน March 2026) โมเดลความปลอดภัยของมันคาดหวังให้คุณซึ่งเป็นผู้ใช้งานเป็นผู้เพิ่มขอบเขตการจำกัดสิทธิ์ จงรันมันในฐานะ unprivileged user, รักษา gateway ไว้บน loopback ภายใต้ default-deny firewall, แยก API keys ออกจากกัน และรันมันในฐานะ hardened systemd service
ฉันควรเปิดเผย OpenClaw gateway สู่ internet หรือไม่?
ไม่ ไม่ควร เนื่องจาก gateway จะ bind กับ loopback โดยค่าเริ่มต้น และคุณควรปล่อยไว้เช่นนั้น มันเป็น single process ที่ควบคุม agent ดังนั้นการเปิดเผย gateway จึงเท่ากับการเปิดเส้นทางระยะไกลเข้าสู่สิ่งที่ทำงานด้วยการรันคำสั่ง หากคุณต้องการเข้าถึงจากระยะไกล ให้ใช้ VPN หรือ SSH tunnel แทนการเปิด port
ควรใช้ user ใดในการรัน OpenClaw?
ใช้ dedicated system user ที่ไม่มี login shell และไม่มี sudo และห้ามใช้ root โดยเด็ดขาด หาก agent ถูกเจาะระบบ account ของ user นั้นจะเป็นเพดานจำกัดความเสียหาย ดังนั้น account นั้นควรเป็นเจ้าของเฉพาะไฟล์ของมันเองภายใต้ directory เช่น /opt/openclaw และไม่มีสิทธิ์อื่นนอกเหนือจากนั้น
ฉันจะรักษาความปลอดภัยของ API keys ของ OpenClaw ได้อย่างไร?
จัดเก็บไว้ในไฟล์ที่อ่านได้เฉพาะ user ของ OpenClaw เท่านั้น (mode 600) และโหลดเข้าสู่ service ด้วย EnvironmentFile ของ systemd ห้ามเก็บ key ไว้ใน unit file, ใน shell history หรือใน git repository ใดๆ และหากคุณสงสัยว่า key รั่วไหล ให้ทำการเปลี่ยน key ใหม่ทันที