Loading...

How to Harden an OpenClaw Server

Using an agentic AI system like OpenClaw changes the way we think about server security. Unlike more traditional web apps or basic chatbots, OpenClaw dynamically solves problems by generating code, manipulating files, running commands locally, and using multiple tools in tandem. Because it can write and execute code, and interact with your server at a low level—all based on interpreting human-like language—security has to be front and center. It’s simply too risky to treat it as an afterthought.

Primary Risk: If your server hosts an OpenClaw instance without proper security hardening, it becomes vulnerable to remote code execution attacks. These can happen through manipulated inputs, hallucinated commands from the language model, or leaked credentials. A hacker with access to the LLM’s input or a compromised chat platform gains the ability to run commands and files on your system—using the full permissions OpenClaw has.

The following must be done to use OpenClaw safely: securing your machine, sandboxing the OpenClaw program, limiting the program's access rights, securing your gateways with encryption, and securing your messaging systems.

Note: The following steps apply only if you are installing OpenClaw via SSH.

1. Strengthen Your Host System

Turn Off Password-Based SSH Access

Brute force attacks are easy when using passwords. Consider changing the authentication to key-based for your SSH connection. The process of doing so will be as follows:

sudo nano /etc/ssh/sshd_config

Make sure these lines are set:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

Then, restart SSH to apply changes:

sudo systemctl restart ssh

Set Up a Strict Network Firewall

Block all incoming traffic by default, only allowing necessary ports.

sudo ufw default deny incoming

You'll see:

Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)

Allow all outgoing traffic:

sudo ufw default allow outgoing

Response:

Default outgoing policy changed to 'allow'

Open port 22 for SSH connections:

sudo ufw allow ssh

Response:

Rule added
Rule added (v6)

Allow HTTP and HTTPS traffic:

sudo ufw allow http
sudo ufw allow https

Enable the firewall:

sudo ufw enable

Confirm with:

Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Protect Against Automated Attacks with Fail2Ban

Install and start Fail2Ban to monitor logs and automatically ban malicious IPs:

sudo apt install fail2ban -y

sudo systemctl enable --now fail2ban

You might see:

Created symlink /etc/systemd/system/multi-user.target.wants/fail2ban.service → /lib/systemd/system/fail2ban.service.

2. Run OpenClaw in Isolated Containers

Because OpenClaw executes code with system-level access, isolate it in containers to prevent damage to your base system.

Use Docker for Containerization

docker --version

Sample output:

Docker version 26.0.1, build abcdef1234

Restrict Container Storage Mounts

volumes:
  - ./openclaw_data:/app/data:rw

Limit what the container can write to within the host filesystem.

3. Tighten Application Privileges

Configure OpenClaw’s skills carefully to prevent unintentional command execution or resource abuse.

Disable Shell Execution

Edit the OpenClaw configuration to disable or restrict shell commands:

sudo nano /path/to/openclaw/config.yaml

Set or disable the shell_execute permission as needed.

Block Public UI Registration

Prevent unauthorized users from registering:

export ALLOW_PUBLIC_SIGNUP=false

No output means success.

4. Use Encrypted Reverse Proxy Gateways

OpenClaw internal port connections should never be exposed directly to the Internet. You will need to use a TLS-enabled reverse proxy server, for example, Nginx:

sudo nano /etc/nginx/sites-available/openclaw
server {
    listen 443 ssl;
    server_name openclaw.yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:YOUR_RANDOM_PORT;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
sudo systemctl reload nginx

No errors indicate success.

5. Lock Down Messaging Channels

Secure your chat platforms to avoid unauthorized access to OpenClaw commands.

  • Enable 2FA: Always use two-factor authentication for all messaging accounts.
  • Validate Senders: Limit accepted messages to known users by mapping Telegram user IDs and Discord snowflakes.
sudo nano /path/to/openclaw/channels.yaml
telegram_allowed_user_ids:
  - 123456789
  - 987654321
discord_allowed_snowflakes:
  - 112233445566778899
  - 998877665544332211

Summary

To use OpenClaw safely, there needs to be a multi-layer security protocol that includes securing your computer systems, running OpenClaw using containers, reducing privileges for OpenClaw, ensuring secure communication, and regulating messaging source authorizations.

Through all this, your artificial intelligence system will remain safe from any code injections, unwanted command execution, or information leakage, and you can operate a reliable agential AI framework.

Loading...