openclaw/docs/security/security-shield.md
2026-01-30 11:11:48 +01:00

8.6 KiB

Security Shield

The OpenClaw Security Shield is a comprehensive defense system that protects your gateway from unauthorized access, brute force attacks, and malicious activity.

Overview

The Security Shield provides layered protection:

  • Rate Limiting - Prevents brute force attacks and DoS
  • Intrusion Detection - Identifies attack patterns automatically
  • IP Blocklist/Allowlist - Blocks malicious IPs, allows trusted networks
  • Firewall Integration - Syncs blocks with system firewall (Linux)
  • Security Event Logging - Audit trail of all security events
  • Real-time Alerting - Telegram notifications for critical events

Quick Start

Enable Security Shield

The security shield is enabled by default for new installations.

# Check status
openclaw security status

# Enable manually (if disabled)
openclaw security enable

# Disable (not recommended)
openclaw security disable

Configuration

Edit ~/.openclaw/config.json:

{
  "security": {
    "shield": {
      "enabled": true,
      "rateLimiting": {
        "enabled": true
      },
      "intrusionDetection": {
        "enabled": true
      },
      "ipManagement": {
        "autoBlock": {
          "enabled": true
        }
      }
    }
  }
}

Rate Limiting

Prevents brute force and DoS attacks by limiting request rates.

Default Limits

Per-IP Limits:

  • Auth attempts: 5 per 5 minutes
  • Connections: 10 concurrent
  • Requests: 100 per minute

Per-Device Limits:

  • Auth attempts: 10 per 15 minutes
  • Requests: 500 per minute

Per-Sender Limits (Pairing):

  • Pairing requests: 3 per hour

Webhook Limits:

  • Per token: 200 requests per minute
  • Per path: 50 requests per minute

Custom Rate Limits

{
  "security": {
    "shield": {
      "rateLimiting": {
        "enabled": true,
        "perIp": {
          "authAttempts": { "max": 5, "windowMs": 300000 },
          "connections": { "max": 10, "windowMs": 60000 },
          "requests": { "max": 100, "windowMs": 60000 }
        },
        "perDevice": {
          "authAttempts": { "max": 10, "windowMs": 900000 }
        }
      }
    }
  }
}

Intrusion Detection

Automatically detects and blocks attack patterns.

Attack Patterns

Brute Force Attack:

  • Threshold: 10 failed auth attempts
  • Time window: 10 minutes
  • Action: Block IP for 24 hours

SSRF Bypass:

  • Threshold: 3 attempts
  • Time window: 5 minutes
  • Action: Block IP for 24 hours

Path Traversal:

  • Threshold: 5 attempts
  • Time window: 5 minutes
  • Action: Block IP for 24 hours

Port Scanning:

  • Threshold: 20 rapid connections
  • Time window: 10 seconds
  • Action: Block IP for 24 hours

Custom Thresholds

{
  "security": {
    "shield": {
      "intrusionDetection": {
        "enabled": true,
        "patterns": {
          "bruteForce": { "threshold": 10, "windowMs": 600000 },
          "ssrfBypass": { "threshold": 3, "windowMs": 300000 },
          "pathTraversal": { "threshold": 5, "windowMs": 300000 },
          "portScanning": { "threshold": 20, "windowMs": 10000 }
        }
      }
    }
  }
}

IP Blocklist & Allowlist

Manage IP-based access control.

Blocklist Commands

# List blocked IPs
openclaw blocklist list

# Block an IP
openclaw blocklist add 192.168.1.100 --reason "manual block" --duration 24h

# Unblock an IP
openclaw blocklist remove 192.168.1.100

Allowlist Commands

# List allowed IPs
openclaw allowlist list

# Allow an IP or CIDR range
openclaw allowlist add 10.0.0.0/8 --reason "internal network"
openclaw allowlist add 192.168.1.50 --reason "trusted server"

# Remove from allowlist
openclaw allowlist remove 10.0.0.0/8

Auto-Allowlist

Tailscale networks (100.64.0.0/10) are automatically allowlisted when Tailscale mode is enabled.

Localhost (127.0.0.1, ::1) is always allowed.

Precedence

Allowlist overrides blocklist. If an IP is in both lists, it will be allowed.

Firewall Integration

Syncs IP blocks with system firewall (Linux only).

Supported Backends

  • iptables - Creates dedicated OPENCLAW_BLOCKLIST chain
  • ufw - Uses numbered rules with comments

Configuration

{
  "security": {
    "shield": {
      "ipManagement": {
        "firewall": {
          "enabled": true,
          "backend": "iptables"
        }
      }
    }
  }
}

Requirements

Permissions: Requires sudo or CAP_NET_ADMIN capability.

Automatic fallback: If firewall commands fail, the security shield continues to function (application-level blocking only).

Manual Verification

# Check iptables rules
sudo iptables -L OPENCLAW_BLOCKLIST -n

# Check ufw rules
sudo ufw status numbered

Security Event Logging

All security events are logged for audit trail.

Log Files

Location: /tmp/openclaw/security-YYYY-MM-DD.jsonl

Format: JSON Lines (one event per line)

Rotation: Daily (new file each day)

View Logs

# View last 50 events
openclaw security logs

# View last 100 events
openclaw security logs --lines 100

# Follow logs in real-time
openclaw security logs --follow

# Filter by severity
openclaw security logs --severity critical
openclaw security logs --severity warn

Event Structure

{
  "timestamp": "2026-01-30T22:15:30.123Z",
  "eventId": "abc123...",
  "severity": "warn",
  "category": "authentication",
  "ip": "192.168.1.100",
  "action": "auth_failed",
  "outcome": "deny",
  "details": {
    "reason": "token_mismatch"
  }
}

Event Categories

  • authentication - Auth attempts, token validation
  • authorization - Access control decisions
  • rate_limit - Rate limit violations
  • intrusion_attempt - Detected attack patterns
  • network_access - Connection attempts
  • pairing - Pairing requests

Security Audit

Run comprehensive security audit:

# Quick audit
openclaw security audit

# Deep audit (includes gateway probe)
openclaw security audit --deep

# Apply automatic fixes
openclaw security audit --fix

# JSON output
openclaw security audit --json

Audit Checks

  • Gateway binding configuration
  • Authentication token strength
  • File permissions (config, state, credentials)
  • Channel security settings (allowlist/pairing)
  • Exposed sensitive data
  • Legacy configuration issues

Best Practices

Deployment Checklist

✅ Enable security shield (default) ✅ Use strong gateway auth token ✅ Bind gateway to loopback or tailnet (not LAN/internet) ✅ Enable firewall integration (Linux) ✅ Configure Telegram alerts ✅ Review allowlist for trusted IPs ✅ Run openclaw security audit --deep

Production Recommendations

Network Binding:

  • Use gateway.bind: "loopback" for local-only access
  • Use gateway.bind: "tailnet" for Tailscale-only access
  • Avoid gateway.bind: "lan" or "auto" in production

Authentication:

  • Use token mode (default) with strong random tokens
  • Rotate tokens periodically
  • Never commit tokens to version control

Monitoring:

  • Enable Telegram alerts for critical events
  • Review security logs weekly
  • Monitor blocked IPs for patterns

Firewall:

  • Enable firewall integration on Linux
  • Verify firewall rules after deployment
  • Test access from both allowed and blocked IPs

Common Pitfalls

❌ Exposing gateway to LAN without auth ❌ Using weak or default tokens ❌ Disabling security shield ❌ Ignoring intrusion detection alerts ❌ Not monitoring security logs

Troubleshooting

High Rate of Blocks

Symptom: Legitimate users getting blocked

Solution:

  1. Check rate limits - may be too restrictive
  2. Add trusted IPs to allowlist
  3. Review security logs to identify cause
openclaw security logs --severity warn
openclaw allowlist add <trusted-ip> --reason "trusted user"

Firewall Integration Not Working

Symptom: IPs not blocked at firewall level

Possible Causes:

  • Missing sudo permissions
  • Backend not installed (iptables/ufw)
  • Wrong backend configured

Solution:

# Check backend availability
which iptables
which ufw

# Verify permissions
sudo iptables -L OPENCLAW_BLOCKLIST -n

# Check security logs
openclaw security logs | grep firewall

Missing Security Logs

Symptom: No log files in /tmp/openclaw/

Possible Causes:

  • Security shield disabled
  • No security events occurred
  • Insufficient permissions

Solution:

# Check shield status
openclaw security status

# Enable if needed
openclaw security enable

# Restart gateway
openclaw gateway restart

See Also