Cách chạy OpenClaw an toàn trên VPS
OpenClaw có thể chạy shell command và duyệt web. Làm theo cách harden VPS với user không có quyền root, firewall, secrets và systemd để giảm rủi ro.
OpenClaw là gì và tại sao phải harden nó trước
OpenClaw là một AI agent tự host. Bạn chạy nó trên server của mình, kết nối nó với một large language model, rồi nó có thể chạy shell command, điều khiển browser, đọc và ghi file, cũng như xử lý các message bạn gửi từ những chat app. Khả năng truy cập rộng đó chính là mục đích của tool, đồng thời cũng là toàn bộ rủi ro. Một agent có thể chạy bất kỳ command nào chỉ an toàn ở mức server đang chạy nó và các giới hạn bạn đặt xung quanh nó.
Có 2 yếu tố định hướng cho toàn bộ guide này. Thứ nhất, OpenClaw được thiết kế để do bạn harden. Mô hình bảo mật của nó đặt trách nhiệm thiết lập tool policy chặt chẽ, sandbox và permission phù hợp lên operator, thay vì cung cấp safe default. Thứ hai, project này đã từng gặp một sự cố bảo mật nghiêm trọng: trong tháng 3 năm 2026, 9 vấn đề bảo mật được công bố trong vòng 4 ngày, bao gồm một lỗ hổng privilege escalation nghiêm trọng là CVE-2026-32922, được chấm 9.9 trên 10. Cả 2 điều này không có nghĩa là bạn nên tránh OpenClaw. Chúng có nghĩa là bạn không nên chạy nó theo cách qua loa, và guide này trình bày cách làm cẩn thận. Một phần của cách làm cẩn thận là quyết định trước agent được phép làm gì mà không cần hỏi, tương tự như Claude Code nêu rõ bằng các permission mode, trong đó một server không có người trực tiếp ngồi trước màn hình cần thiết lập chặt hơn laptop bạn đang theo dõi.
Tin tốt là OpenClaw đã chọn sẵn một thiết lập an toàn cho bạn: gateway của nó, process duy nhất điều khiển mọi thứ, mặc định listen trên loopback address, nên không thể truy cập từ internet trừ khi bạn chủ động expose nó. Phần lớn công việc bên dưới là giữ nguyên thiết lập đó và giới hạn blast radius nếu có sự cố.
Cấp cho OpenClaw một user không có quyền đặc biệt riêng
Không bao giờ chạy agent bằng root. Nếu OpenClaw chạy bằng root và có sự cố xảy ra, dù là bug, chỉ dẫn sai hoặc CVE như lỗi nêu trên, mức độ thiệt hại sẽ không có giới hạn. Hãy tạo một system user riêng, không có login shell và không có quyền sudo, rồi chạy agent bằng user đó:
sudo useradd --system --home /opt/openclaw --shell /usr/sbin/nologin openclawMọi thứ OpenClaw sở hữu đều nằm dưới /opt/openclaw và thuộc quyền sở hữu của account đó. Đây là bước quan trọng nhất. Đây cũng là nguyên tắc được trình bày trong chạy service bằng user không có quyền đặc biệt: account mà agent chạy bằng sẽ giới hạn tối đa những gì agent có thể làm hỏng.
Cài đặt OpenClaw
OpenClaw được phân phối dưới dạng npm package, vì vậy hãy cài Node.js trước nếu server chưa có. Cài package trên toàn hệ thống để binary openclaw có trong PATH của mọi user, sau đó chạy bước onboarding một lần:
sudo npm install -g openclaw@latest
sudo -u openclaw openclaw onboardChạy onboarding bằng user openclaw sẽ lưu cấu hình của agent trong home directory của user đó, /opt/openclaw, thay vì trong home directory của root. Project cũng cung cấp một installer curl -fsSL https://openclaw.ai/install.sh | bash thực hiện toàn bộ việc cài đặt bằng một lệnh. Không dùng flag --install-daemon trong quá trình onboarding. Flag này sẽ đăng ký service riêng của OpenClaw, trong khi systemd unit được harden mà bạn tạo bên dưới có cấu hình chặt chẽ hơn.
Giữ gateway trên loopback, phía sau firewall
Gateway bind vào 127.0.0.1 theo mặc định. Hãy giữ nguyên như vậy. Hầu như không có lý do nào để public port đó ra internet. Làm vậy sẽ cho bất kỳ ai tìm thấy nó một foothold từ xa vào một process chuyên chạy command.
Đặt firewall theo chính sách mặc định deny ở phía trước máy chủ, để không có dịch vụ nào vô tình bị expose:
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enableCó hai bẫy cần tránh. Firewall chỉ áp dụng cho IPv4 có thể để cùng service đó mở hoàn toàn trên IPv6. Đây chính là khoảng trống firewall trên IPv6 khiến rất nhiều người gặp sự cố. Nếu cần truy cập gateway từ laptop, đừng mở port. Hãy truy cập qua VPN hoặc SSH tunnel để agent không bao giờ listen trên internet công cộng.
Cô lập secret của nó
OpenClaw cần một API key cho language model mà bạn kết nối. Key đó có thể tiêu tiền của bạn và, thông qua agent, thực hiện hành động thay mặt bạn, vì vậy hãy xử lý nó như password. Không đặt key trong unit file hoặc bất kỳ repository nào. Lưu key trong một file mà chỉ user OpenClaw có thể đọc:
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 nạp file đó bằng EnvironmentFile, nên key được chuyển đến process mà không xuất hiện trong command line, log hoặc shell history. Cách này áp dụng cho mọi secret trên máy: hardening self-hosted Vaultwarden tập trung vào admin token và file backup, không phải encryption, vì quyền trên file mới thực sự quyết định ai có thể đọc secret khi secret đang được lưu trữ.
Chạy dưới dạng systemd service được hardening
Chạy agent dưới systemd giúp tự động restart, ghi log rõ ràng qua journalctl và quan trọng nhất là cung cấp các tùy chọn sandbox ở cấp kernel. Các tùy chọn này giới hạn những gì process có thể truy cập ngay cả khi process đã bị breach. Với agent, các tùy chọn quan trọng nhất là NoNewPrivileges để agent không thể có thêm quyền, ProtectSystem=strict để filesystem ở chế độ chỉ đọc trừ những nơi bạn cho phép ghi, PrivateTmp để tạo thư mục tạm riêng biệt cho agent và ProtectHome để agent không thể đọc các thư mục home.
Tạo một unit đầy đủ với các thiết lập hardening tại đây, sau đó copy vào /etc/systemd/system/openclaw.service:
Unit này khởi động openclaw gateway, process chạy liên tục để điều khiển agent. Nếu which openclaw hiển thị path khác trên server của bạn, hãy điều chỉnh ExecStart cho khớp. Phần hướng dẫn đầy đủ về các directive này, cũng như daemon-reload và enable --now, có trong chạy một chương trình dưới dạng systemd service. Tóm tắt các bước sau khi bạn đã paste unit:
sudo systemctl daemon-reload
sudo systemctl enable --now openclawTăng cường bảo vệ lớp ngoài cùng
Một máy chủ chạy agent chỉ an toàn khi server xung quanh nó cũng an toàn. Thêm 2 lớp nữa là hoàn tất. Chuyển SSH sang chỉ xác thực bằng key và tắt đăng nhập bằng root, như hướng dẫn trong Tăng cường bảo mật SSH trên VPS, để tài khoản bạn dùng quản trị máy chủ không thể bị brute-force. Sau đó thêm Fail2ban để chặn các scanner liên tục quét mọi cổng public. Cả 2 lớp này không tác động trực tiếp đến OpenClaw, nhưng chúng loại bỏ các đường mà attacker có thể dùng để tiếp cận nó.
Cố ý cập nhật thường xuyên
Các công bố vào tháng 3 năm 2026 là lý do rõ ràng nhất để luôn dùng phiên bản mới. Lỗ hổng leo thang đặc quyền trong một agent nghiêm trọng hơn nhiều so với lỗ hổng trong một web app thông thường, vì agent vốn đã có thể chạy các command. Hãy theo dõi các bản release của project, nhanh chóng cài đặt security update và xem việc upgrade OpenClaw là bảo trì định kỳ, không phải việc có thể trì hoãn.
Để hiểu chính xác bạn đang hardening thành phần nào, kiến trúc của một agent kiểu OpenClaw trình bày các thành phần chính, còn xây dựng AI agent của riêng bạn trên một VPS mô tả cấu trúc tổng quát của mọi agent. Nếu bạn chạy thêm một agent bên cạnh agent này, hãy nhớ rằng hai session Claude Code trên một VPS có thể chuyển công việc cho nhau, vì vậy mỗi agent cần account riêng và các giới hạn riêng, thay vì kế thừa account và giới hạn của bạn.
FAQ
Chạy OpenClaw trên một VPS public có an toàn không?
Có thể an toàn nếu bạn harden đúng cách. OpenClaw vốn có quyền năng lớn: nó chạy shell command và điều khiển browser, vì vậy cấu hình bất cẩn thực sự nguy hiểm. Project này cũng đã từng có một CVE nghiêm trọng (CVE-2026-32922 vào tháng 3 năm 2026). Mô hình bảo mật của OpenClaw yêu cầu bạn, với vai trò operator, tự thêm các giới hạn. Hãy chạy nó bằng user không có quyền đặc biệt, giữ gateway trên loopback phía sau firewall mặc định từ chối mọi kết nối, tách riêng API key và chạy nó dưới dạng systemd service đã harden.
Có nên expose OpenClaw gateway ra Internet không?
Không. Gateway mặc định bind vào loopback và bạn nên giữ nguyên như vậy. Đây là process duy nhất điều khiển agent, nên gateway bị expose sẽ tạo ra một đường truy cập từ xa vào một thành phần chuyên chạy command. Nếu cần truy cập từ xa, hãy dùng VPN hoặc SSH tunnel thay vì mở port.
OpenClaw nên chạy bằng user nào?
Một system user riêng, không có login shell và không có sudo; tuyệt đối không dùng root. Nếu agent bị compromise, user account của nó sẽ giới hạn mức độ thiệt hại. Vì vậy, account này chỉ nên sở hữu các file của chính nó trong một directory như /opt/openclaw, không sở hữu thứ gì khác.
Làm thế nào để bảo vệ API key của OpenClaw?
Lưu key trong một file chỉ OpenClaw user có thể đọc (mode 600) và nạp file đó vào service bằng EnvironmentFile của systemd. Không đặt key trong unit file, shell history hoặc git repository. Hãy rotate key nếu bạn nghi ngờ key đã bị lộ.