OpenClaw Security Checklist: Hardening Your AI Agent Infrastructure

Secure your OpenClaw AI agent infrastructure with this practical security checklist. Covers gateway hardening, firewall configuration, SSH security, fail2ban setup, and automated monitoring. Includes 7 security sections with actionable commands and a free Security Dashboard skill.

OpenClaw Security Checklist: Hardening Your AI Agent Infrastructure
Photo by Daniel Norris / Unsplash

I became a member of the OpenClaw 🦞 community way back when it started as ClawdBot. Now, 5 name changes later, here we are. One thing that stuck out to me is the constant hum about security and Open Claw on X and other channels.

Many were complaining that OpenClaw had weak security or that attackers had identified 1000s of open servers running OpenClaw. Well, I set out to get to the bottom of all the noise and make sense of it all.

What I found after installing all 5 names of OpenClaw is the community's misunderstanding of the OpenClaw documentation, best practices generally on running a server in the cloud or on-prem, and finally, not checking and maintaining what is actually running.

So I set out on a mission to provide transparency into the security settings of the running Open Claws server. First, I built a dashboard skill that monitors and alerts me to the current security status and to any important aspect that turns Red.

What I found after installing all 5 OpenClaw names is the community's misunderstanding of the OpenClaw documentation, the general best practices for running a server in the cloud or on-prem, and, finally, not checking or maintaining what is actually running.

Open Claw Security Dashboard

As part of the dashboard's development, I also created a checklist to help you secure your OpenClaw 🦞.

Why This Matters

Running an AI agent on your infrastructure means:

  • Credentials at risk: Your agent has access to APIs, databases, and servers, and may also have access to personal information (email, bank information, credit card numbers).
  • Attack surface: Public IPs, open ports, and exposed services are targets
  • Automation risk: Misconfigurations can propagate quickly across systems

This checklist aligns with the Security Dashboard to catch issues before they become incidents.


🦞 OpenClaw Security

What: Core OpenClaw gateway and authentication
Why: Your gateway is the entry point - weak auth = full system compromise

Checklist

  • [ ] OpenClaw runs as a non-root user (not root or sudo)
  • [ ] Gateway token is 32+ characters (weak tokens can be brute-forced)
  • [ ] Gateway binds to loopback or behind firewall (no public exposure)
  • [ ] Authentication mode is token (not password-based)
  • [ ] Config file permissions are 600 (owner-only read/write)
  • [ ] Sessions directory is not world-readable
  • [ ] No API keys stored in plaintext config (use environment variables or 1Password)

Why not root?
If OpenClaw is compromised (via a malicious skill, prompt injection, or RCE), the attacker inherits the user's permissions. Running as root = full system access.

Fix it:

# Create dedicated user
sudo useradd -r -m -s /bin/bash openclaw
sudo usermod -aG docker openclaw  # If OpenClaw needs Docker access

# Move config to new user
sudo cp -r ~/.openclaw /home/openclaw/
sudo chown -R openclaw:openclaw /home/openclaw/.openclaw

# Update systemd service to run as openclaw user
# Edit: /etc/systemd/system/openclaw-gateway.service
# Change: User=openclaw

# Generate strong token
openclaw config.patch --raw '{"gateway":{"auth":{"token":"'$(openssl rand -hex 32)'"}}}'

# Secure permissions
chmod 600 ~/.openclaw/openclaw.json

🌐 Network Security

What: Firewall, VPN, and network controls
Why: Open ports without protection = bots, scrapers, and attackers

Checklist

  • [ ] Firewall active (UFW or firewalld running)
  • [ ] Only SSH port (22) exposed publicly preferrably only Allowed to access the IP's you want
  • [ ] Tailscale or WireGuard VPN active for remote access
  • [ ] Internal services (dashboards, APIs) bind to localhost only and are accessed over WireGuard
  • [ ] Public IP not listed on Shodan with unexpected services

Fix it:

# Enable UFW
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enable

# Install Tailscale (zero-trust VPN)
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

🌍 Public Exposure

What: What's visible to the internet
Why: Every public port is a potential entry point

Checklist

  • [ ] Dashboard services bind to 127.0.0.1 (localhost only)
  • [ ] OpenClaw gateway not accessible without VPN
  • [ ] No database ports (3306, 5432, 27017) exposed
  • [ ] No internal tools (phpMyAdmin, adminer) on public URLs
  • [ ] Cloudflare bot protection enabled (if using Cloudflare)

Check it:

# See what's publicly bound
ss -tlnp | grep -E '0\.0\.0\.0|:::'

# Should only show SSH

Fix it:

# Bind services to localhost
# Edit server config: listen 127.0.0.1:PORT instead of 0.0.0.0:PORT

🖥️ System Security

What: OS-level hardening
Why: Outdated software = known exploits

Checklist

  • [ ] System updates installed (fewer than 20 pending)
  • [ ] Automatic security updates enabled
  • [ ] No unnecessary services running (systemctl list-units --type=service)
  • [ ] Disk usage below 80% (prevents DoS via disk fill)
  • [ ] Load average is healthy (< number of CPU cores)

Fix it:

# Update system
sudo apt update && sudo apt upgrade -y

# Enable automatic security updates
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

🔑 SSH & Access Control

What: Remote access security
Why: SSH is the #1 target for brute-force attacks

Checklist

  • [ ] SSH password authentication disabled (key-only)
  • [ ] fail2ban active (blocks brute-force attempts)
  • [ ] Root login disabled (PermitRootLogin no)
  • [ ] SSH keys are 4096-bit RSA or Ed25519
  • [ ] No banned IPs from legitimate sources (check fail2ban status)
  • [ ] Fewer than 10 failed login attempts in 24 hours

Fix it:

# Disable password auth (in /etc/ssh/sshd_config)
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin no

# Restart SSH
sudo systemctl restart sshd

# Install and enable fail2ban
sudo apt install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

📜 Certificates & TLS

What: Encryption for web services
Why: Unencrypted = credentials sent in plaintext

Checklist

  • [ ] No Caddy or nginx exposed publicly (unless intentional)
  • [ ] Tailscale provides WireGuard encryption (no TLS needed for internal tools)
  • [ ] If using public HTTPS, certificates are valid and auto-renewing
  • [ ] No self-signed certificates for production services

Why localhost-only is secure:

  • Tailscale uses WireGuard (industry-standard encryption) to allow access to OpenClaw securely over the WireGuard VPN
  • No certificate management hassles
  • Zero-trust model: only your devices can access

📊 Resource Security

What: Performance and capacity monitoring
Why: Resource exhaustion = downtime or security bypass

Checklist

  • [ ] CPU usage typically below 80%
  • [ ] Memory usage below 80%
  • [ ] Disk usage below 80%
  • [ ] Config file permissions are 600 (not 644 or 777)
  • [ ] Log rotation enabled (prevents disk fill)

Fix it:

# Check permissions
stat -c "%a" ~/.openclaw/openclaw.json  # Should be 600

# Fix if needed
chmod 600 ~/.openclaw/openclaw.json

Automation: Security Dashboard + Cron

Your Security Dashboard monitors all of the above in real-time.

Automated Checks (4x Daily)

  • 06:00 UTC - Morning check
  • 12:00 UTC - Midday check
  • 18:00 UTC - Evening check
  • 00:00 UTC - Midnight check

Critical alerts trigger immediately for:

  • Firewall inactive
  • fail2ban inactive
  • Weak gateway token
  • SSH password auth enabled
  • Insecure file permissions

Install the dashboard:

cd /root/clawd/skills/security-dashboard
./scripts/install.sh

Access it:

ssh -L 18791:localhost:18791 root@YOUR_SERVER_IP
# Visit: http://localhost:18791

Quick Win Checklist

Start here if you're overwhelmed:

  1. ✅ Enable firewall: sudo ufw enable
  2. ✅ Enable fail2ban: sudo apt install fail2ban && sudo systemctl enable fail2ban
  3. ✅ Disable SSH password auth (edit /etc/ssh/sshd_config)
  4. ✅ Update system: sudo apt update && apt upgrade -y
  5. ✅ Fix config permissions: chmod 600 ~/.openclaw/openclaw.json
  6. ✅ Install Tailscale: curl -fsSL https://tailscale.com/install.sh | sh
  7. ✅ Install Security Dashboard: https://clawhub.ai/vegasbrianc/security-dashboard

Time investment: ~20 minutes
Protection level: Blocks 95% of automated attacks


Going Further

Paid Checklist ($49, coming soon):

  • Intrusion detection with Wazuh
  • Log aggregation and alerting
  • Rate limiting for APIs
  • Backup automation and disaster recovery
  • Compliance checklists (SOC 2, GDPR)
  • Custom firewall rules for your stack

Security Audit ($1,500):

  • Full infrastructure review
  • Penetration testing
  • Custom security policies
  • Implementation assistance
  • 30-day follow-up

Resources


Get Started

Try the Security Dashboard skill:
- Install: ClawdHub - Security Dashboard

Questions? Find me on X @idomyowntricks to stay updated!