SSD Nodes Learn
Hướng dẫn Matt ConnorBởi Matt Connor · Cập nhật ngày 2026-07-23

Cách cấu hình bảo mật OpenClaw trên VPS

Hướng dẫn hardening OpenClaw trên VPS bằng cách dùng unprivileged user, firewall và systemd để tránh lỗi privilege-escalation như CVE-2026-32922.

OpenClaw là gì, và tại sao bạn cần hardening nó trước tiên

OpenClaw là một AI agent tự host. Bạn chạy nó trên server riêng, kết nối với một large language model, và nó có thể chạy shell commands, điều khiển browser, đọc và ghi file, cũng như thực hiện các tin nhắn bạn gửi từ các ứng dụng chat. Khả năng tiếp cận đó chính là mục đích của công cụ này, và cũng chính là rủi ro lớn nhất. Một agent có thể chạy bất kỳ command nào thì độ an toàn của nó chỉ nằm ở giới hạn của máy chủ đang chạy và các giới hạn bạn thiết lập cho nó.

Có hai sự thật định hình cho hướng dẫn này. Thứ nhất, OpenClaw được thiết kế để bạn tự hardening. Mô hình bảo mật của nó đặt trách nhiệm thiết lập chính sách công cụ, sandboxing và phân quyền chặt chẽ lên người vận hành, chứ không dựa trên các thiết lập mặc định an toàn. Thứ hai, dự án đã từng gặp sự cố bảo mật nghiêm trọng: vào tháng 3 năm 2026, chín lỗ hổng bảo mật đã được công bố trong vòng bốn ngày, bao gồm một lỗi privilege-escalation nghiêm trọng, CVE-2026-32922, được đánh giá 9.9/10. Cả hai sự thật 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 được chạy nó một cách tùy tiện, và hướng dẫn này là cách làm cẩn thận.

Cũng có tin tốt. OpenClaw đã thực hiện một lựa chọn an toàn cho bạn: gateway của nó, process duy nhất điều khiển mọi thứ, mặc định lắng nghe tại loopback address, nên nó không thể bị truy cập từ internet trừ khi bạn chủ động expose nó. Phần lớn các bước dưới đây là để giữ nguyên trạng thái đó và giới hạn blast radius nếu có sự cố xảy ra.

Cấp cho OpenClaw một unprivileged user riêng

Đừng bao giờ chạy agent dưới quyền root. Nếu OpenClaw chạy dưới quyền root và có bất kỳ lỗi nào xảy ra, dù là bug, một instruction sai, hay một CVE như trên, thiệt hại sẽ không có giới hạn. Hãy tạo một dedicated system user không có login shell và không có sudo, rồi chạy agent bằng user đó:

sudo useradd --system --home /opt/openclaw --shell /usr/sbin/nologin openclaw

Mọi thứ OpenClaw sở hữu đều nằm dưới /opt/openclaw, thuộc sở hữu của account đó. Đây là bước quan trọng nhất, và cũng là nguyên tắc tương tự như trong running services as an unprivileged user: account mà agent chạy chính là giới hạn cho những gì nó có thể phá vỡ.

Cài đặt OpenClaw

OpenClaw được phân phối dưới dạng một npm package, vì vậy hãy cài đặt Node.js trước nếu server chưa có. Cài đặt package này một cách global để đưa binary openclaw vào PATH cho mọi user, sau đó chạy bước onboarding một lần duy nhất:

sudo npm install -g openclaw@latest
sudo -u openclaw openclaw onboard

Chạy onboarding dưới user openclaw có nghĩa là configuration của agent sẽ nằm trong home directory của nó, /opt/openclaw, chứ không phải của root. Dự án cũng cung cấp một curl -fsSL https://openclaw.ai/install.sh | bash installer để thực hiện việc cài đặt tương tự chỉ với một dòng lệnh. Hãy bỏ qua flag --install-daemon trong quá trình onboarding: nó sẽ đăng ký service riêng của OpenClaw, trong khi systemd unit đã được hardening mà bạn xây dựng dưới đây sẽ chặt chẽ hơn.

Giữ gateway ở loopback, phía sau một firewall

Gateway bind vào 127.0.0.1 theo mặc định. Hãy để nó ở đó. Gần như không bao giờ có lý do để publish port đó ra internet, và việc làm đó sẽ trao cho bất kỳ ai tìm thấy nó một foothold từ xa vào một process chuyên thực thi các command.

Đặt một default-deny firewall phía trước máy chủ để không có gì bị expose do sơ suất:

sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enable

Có hai bẫy cần tránh ở đây. Một firewall chỉ bao phủ IPv4 có thể để cùng một service bị mở hoàn toàn trên IPv6, đây chính là IPv6 firewall gap khiến nhiều người gặp rắc rối. Và nếu bạn cần kết nối tới gateway từ laptop, đừng mở port. Hãy kết nối qua VPN hoặc một SSH tunnel, để agent không bao giờ phải lắng nghe internet công cộng.

Cách ly các secrets của nó

OpenClaw cần một API key cho bất kỳ language model nào bạn kết nối với nó. Key đó có thể tiêu tốn tiền của bạn và, thông qua agent, có thể hành động thay mặt bạn, vì vậy hãy coi nó như một password. Đừng để nó trong unit file hay trong bất kỳ repository nào. Hãy đặt nó vào một file mà chỉ user OpenClaw mới có quyền đọ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 key

systemd unit sẽ load file đó bằng EnvironmentFile, nhờ vậy key sẽ được chuyển đến process mà không bao giờ nằm trong command line, log, hay shell history của bạn.

Chạy nó như một hardened systemd service

Chạy agent dưới systemd giúp bạn có tính năng tự động restart, log sạch thông qua journalctl, và quan trọng nhất là một tập hợp các tùy chọn sandboxing ở cấp độ kernel giúp thu hẹp những gì process có thể chạm tới ngay cả khi nó bị compromise. Những tùy chọn quan trọng nhất đối với một agent là NoNewPrivileges để nó không bao giờ có thêm quyền mới, ProtectSystem=strict để filesystem ở chế độ read-only ngoại trừ những nơi bạn cho phép ghi, PrivateTmp cho directory tạm thời được cách ly riêng, và ProtectHome để nó không thể đọc các home directory.

Tạo một unit file hoàn chỉnh và đã được hardening tại đây, sau đó copy nó vào /etc/systemd/system/openclaw.service:

ToolGenerate a hardened systemd unit for the agent

Unit này khởi chạy openclaw gateway, process chạy lâu dài điều khiển agent; nếu which openclaw hiển thị một path khác trên server của bạn, hãy điều chỉnh ExecStart cho khớp. Hướng dẫn chi tiết về các directive này, cũng như về daemon-reloadenable --now, nằm trong running a program as a systemd service. Phiên bản rút gọn sau khi bạn đã dán unit file:

sudo systemctl daemon-reload
sudo systemctl enable --now openclaw

Harden cả cửa trước

Một máy chủ chạy agent chỉ an toàn bằng chính server bao quanh nó. Thêm hai lớp nữa để hoàn tất công việc. Chuyển SSH sang chế độ chỉ xác thực bằng key và loại bỏ root login, giống như trong SSH hardening on a VPS, để account bạn dùng để quản lý máy chủ không bị brute-force. Sau đó, hãy thêm Fail2ban để loại bỏ các scanner đang quét mọi public port. Cả hai đều không tác động trực tiếp đến OpenClaw, nhưng cả hai đều chặn các route mà kẻ tấn công sẽ dùng để tiếp cận nó.

Luôn cập nhật một cách chủ động

Các lỗ hổng được công bố vào tháng 3 năm 2026 là minh chứng rõ ràng nhất cho việc cần phải luôn cập nhật. Một lỗi privilege-escalation trong một agent nghiêm trọng hơn nhiều so với trong một web app thông thường, vì agent vốn đã có quyền chạy command. Hãy theo dõi các bản release của dự án, áp dụng các bản cập nhật bảo mật nhanh chóng, và coi việc nâng cấp OpenClaw là bảo trì định kỳ thay vì việc có thể trì hoãn.

Để hiểu rõ bạn thực sự đang hardening những gì, the architecture of an OpenClaw-style agent sẽ đi sâu vào các thành phần, và building your own AI agent on a VPS sẽ bao quát hình thái chung của bất kỳ agent nào.

FAQ

Chạy OpenClaw trên một public VPS có an toàn không?

Có thể, nếu bạn hardening nó. OpenClaw rất mạnh mẽ theo thiết kế: nó chạy shell commands và điều khiển browser, vì vậy một thiết lập cẩu thả sẽ thực sự nguy hiểm, và dự án đã 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 nó kỳ vọng bạn, người vận hành, sẽ thêm các giới hạn. Hãy chạy nó dưới quyền một unprivileged user, giữ gateway ở loopback phía sau một default-deny firewall, cách ly các API keys, và chạy nó như một hardened systemd service.

Tôi có nên expose OpenClaw gateway ra internet không?

Không. Gateway bind vào loopback theo mặc định, và bạn nên để nó ở đó. Đó là process duy nhất điều khiển agent, vì vậy một gateway bị expose là một đường dẫn từ xa vào một thứ chuyên thực thi các command. Nếu bạn cần kết nối từ xa, hãy sử dụng VPN hoặc SSH tunnel thay vì mở port.

OpenClaw nên chạy dưới user nào?

Một dedicated system user không có login shell và không có sudo, tuyệt đối không dùng root. Nếu agent bị compromise, account user của nó sẽ là giới hạn cho thiệt hại, vì vậy account đó chỉ nên sở hữu các file của chính nó trong một directory như /opt/openclaw và không gì khác.

Làm thế nào để giữ các API keys của OpenClaw an toàn?

Lưu trữ chúng trong một file chỉ user OpenClaw mới có quyền đọc (mode 600) và load nó vào service bằng EnvironmentFile của systemd. Đừng để key trong unit file, trong shell history, hay trong bất kỳ git repository nào. Hãy rotate key nếu bạn nghi ngờ nó đã bị lộ.