Настройки безопасности

Обновлено: 2026-04-05

Настройки безопасности OpenClaw

Безопасность — критически важный аспект конфигурации OpenClaw. В этом руководстве рассмотрим все аспекты безопасной настройки.

Основные принципы безопасности

1. Принцип минимальных привилегий

  • Запускайте OpenClaw от непривилегированного пользователя
  • Ограничивайте доступ к файлам конфигурации
  • Используйте отдельные пользователи для разных компонентов

2. Защита периметра

  • Всегда используйте bind: "127.0.0.1" для шлюза
  • Никогда не открывайте порты наружу без защиты
  • Используйте VPN/Tailscale для удаленного доступа

3. Регулярное обновление

  • Обновляйте OpenClaw ежемесячно
  • Отслеживайте CVE и security advisories
  • Тестируйте обновления в staging среде

Полная конфигурация безопасности

Базовая безопасная конфигурация

{
  // Безопасность шлюза
  "gateway": {
    "bind": "127.0.0.1",        // ⚠️ НИКОГДА не используйте 0.0.0.0
    "port": 18789,
    "maxConnections": 10,       // Ограничить количество подключений
    "timeout": 30000,           // Таймаут подключения
    "cors": {
      "enabled": false,         // Отключить CORS если не нужно
      "origins": []             // Пустой список origins
    }
  },

  // Безопасность каналов
  "channels": {
    "defaults": {
      "dmPolicy": "pairing",    // Требовать pairing для новых пользователей
      "groupPolicy": "allowlist", // Только разрешенные группы
      "configWrites": false,    // Запретить изменение конфигурации
      "historyLimit": 100,      // Ограничить историю сообщений
      "mediaMaxMb": 50          // Ограничить размер медиа
    }
  },

  // Безопасность команд
  "commands": {
    "bash": false,              // ⚠️ ОПАСНО: разрешить только если нужно
    "config": false,            // Запретить изменение конфигурации
    "allowFrom": {
      "*": ["tg:336940264"]     // Только вы можете выполнять команды
    },
    "requireApproval": {
      "bash": true,             // Требовать подтверждение для bash
      "exec": true,             // Требовать подтверждение для exec
      "config": true            // Требовать подтверждение для config
    }
  },

  // Безопасность инструментов
  "tools": {
    "elevated": {
      "enabled": true,          // Включить контроль привилегированных команд
      "requireApproval": true,  // Требовать подтверждение
      "allowFrom": {
        "telegram": ["tg:336940264"],
        "discord": ["123456789012345678"]
      },
      "audit": true             // Ведение аудита
    },
    "dangerous": {
      "bash": false,            // Полный запрет опасных команд
      "rm": false,              // Запретить удаление файлов
      "sudo": false,            // Запретить sudo
      "chmod": false            // Запретить изменение прав
    }
  },

  // Аутентификация и авторизация
  "auth": {
    "requireAuth": true,        // Требовать аутентификацию
    "jwt": {
      "secret": "${JWT_SECRET}", // Секрет для JWT
      "expiresIn": "24h"        // Время жизни токена
    },
    "rateLimit": {
      "enabled": true,
      "windowMs": 60000,        // 1 минута
      "max": 100                // Максимум 100 запросов в минуту
    }
  },

  // Логирование и аудит
  "logging": {
    "level": "info",
    "file": "~/.openclaw/logs/gateway.log",
    "maxSize": "10MB",
    "maxFiles": 5,
    "audit": {
      "enabled": true,
      "file": "~/.openclaw/logs/audit.log",
      "events": ["command", "config_change", "auth", "error"]
    }
  },

  // Сетевая безопасность
  "network": {
    "proxy": {
      "enabled": false,         // Использовать прокси если нужно
      "url": "http://proxy:8080"
    },
    "dns": {
      "servers": ["1.1.1.1", "8.8.8.8"], // Надежные DNS серверы
      "timeout": 5000
    },
    "tls": {
      "enabled": true,          // Использовать TLS если доступен
      "minVersion": "TLSv1.2",
      "ciphers": [
        "ECDHE-RSA-AES256-GCM-SHA384",
        "ECDHE-RSA-AES128-GCM-SHA256"
      ]
    }
  }
}

Безопасность каналов

Telegram

{
  "telegram": {
    "enabled": true,
    "botToken": "${TELEGRAM_BOT_TOKEN}",
    "dmPolicy": "allowlist",          // Только разрешенные пользователи
    "allowFrom": ["tg:336940264"],    // Только ваш ID
    "groups": {
      "*": {
        "requireMention": true,       // Только при упоминании
        "allowFrom": ["@admin"]       // Только админы
      }
    },
    "configWrites": false,            // Запретить изменение конфига
    "webhook": {
      "enabled": true,
      "secret": "${TELEGRAM_WEBHOOK_SECRET}", // Секрет для вебхука
      "path": "/telegram-webhook"
    }
  }
}

Discord

{
  "discord": {
    "enabled": true,
    "botToken": "${DISCORD_BOT_TOKEN}",
    "guildId": "ВАШ_GUILD_ID",
    "dmPolicy": "pairing",            // Требовать pairing
    "channels": {
      "*": {
        "requireMention": true,
        "allowFrom": ["@admin"]
      }
    },
    "intents": ["GUILDS", "GUILD_MESSAGES"], // Минимальные интенты
    "permissions": 274877906944        // Только необходимые права
  }
}

WhatsApp

{
  "whatsapp": {
    "enabled": true,
    "phoneNumberId": "${WHATSAPP_PHONE_NUMBER_ID}",
    "accessToken": "${WHATSAPP_ACCESS_TOKEN}",
    "webhookVerifyToken": "${WHATSAPP_WEBHOOK_TOKEN}",
    "dmPolicy": "allowlist",
    "allowFrom": ["whatsapp:+1234567890"],
    "signature": {
      "enabled": true,                // Проверять подпись запросов
      "secret": "${WHATSAPP_SIGNATURE_SECRET}"
    }
  }
}

Управление секретами

Хранение секретов

# Создайте защищенную директорию
mkdir -p ~/.openclaw/secrets
chmod 700 ~/.openclaw/secrets

# Защитите файлы с секретами
chmod 600 ~/.openclaw/secrets/*

# Используйте .env файл (не коммитьте в git!)
cat > ~/.openclaw/.env << 'EOF'
TELEGRAM_BOT_TOKEN=ваш_токен
OPENAI_API_KEY=sk-ваш_ключ
DISCORD_BOT_TOKEN=ваш_токен
JWT_SECRET=очень_длинный_случайный_секрет
EOF

chmod 600 ~/.openclaw/.env

Ротация секретов

#!/bin/bash
# rotate-secrets.sh
echo "Ротация секретов..."

# Telegram
export NEW_TELEGRAM_TOKEN=$(openssl rand -hex 32)
# Обновите токен в BotFather
# Обновите переменную окружения

# JWT Secret
export NEW_JWT_SECRET=$(openssl rand -hex 64)
# Перезапустите шлюз с новым секретом

echo "Секреты обновлены. Не забудьте обновить BotFather!"

Контроль доступа

Ролевая модель

{
  "roles": {
    "admin": {
      "users": ["tg:336940264", "discord:123456789012345678"],
      "permissions": [
        "config:write",
        "command:bash",
        "tool:elevated",
        "user:manage"
      ]
    },
    "user": {
      "users": ["*"],
      "permissions": [
        "message:send",
        "tool:basic",
        "skill:use"
      ]
    },
    "guest": {
      "users": [],  // Пустой список = никто
      "permissions": [
        "message:receive"
      ]
    }
  }
}

Привязка ролей к агентам

{
  "bindings": [
    {
      "match": {
        "channel": "telegram",
        "peer": { "id": "tg:336940264" }
      },
      "agentId": "admin",
      "role": "admin"
    },
    {
      "match": {
        "channel": "*",
        "default": true
      },
      "agentId": "default",
      "role": "user"
    }
  ]
}

Мониторинг безопасности

Логирование безопасности

{
  "logging": {
    "security": {
      "enabled": true,
      "file": "~/.openclaw/logs/security.log",
      "level": "warn",
      "events": [
        "auth_failure",
        "rate_limit",
        "permission_denied",
        "config_change",
        "command_executed"
      ]
    }
  }
}

Алгоритмы обнаружения аномалий

{
  "security": {
    "anomaly": {
      "enabled": true,
      "rules": [
        {
          "name": "too_many_commands",
          "condition": "commands_per_minute > 50",
          "action": "alert"
        },
        {
          "name": "unusual_time",
          "condition": "hour < 6 OR hour > 22",
          "action": "require_2fa"
        },
        {
          "name": "suspicious_command",
          "condition": "command MATCHES '(rm -rf|sudo|chmod 777)'",
          "action": "block"
        }
      ]
    }
  }
}

Резервное копирование и восстановление

Автоматическое резервное копирование

#!/bin/bash
# backup-openclaw.sh
BACKUP_DIR="$HOME/.openclaw/backups"
DATE=$(date +%Y%m%d_%H%M%S)

# Создайте директорию для бэкапов
mkdir -p "$BACKUP_DIR"

# Бэкап конфигурации
cp ~/.openclaw/openclaw.json "$BACKUP_DIR/openclaw_$DATE.json"

# Бэкап логов (только последние 7 дней)
tar -czf "$BACKUP_DIR/logs_$DATE.tar.gz" ~/.openclaw/logs/*.log

# Бэкап памяти агентов
tar -czf "$BACKUP_DIR/memory_$DATE.tar.gz" ~/.openclaw/memory/

# Удалите старые бэкапы (старше 30 дней)
find "$BACKUP_DIR" -name "*.json" -mtime +30 -delete
find "$BACKUP_DIR" -name "*.tar.gz" -mtime +30 -delete

echo "Бэкап создан: $BACKUP_DIR/openclaw_$DATE.json"

Восстановление из бэкапа

#!/bin/bash
# restore-openclaw.sh
BACKUP_FILE="$1"

if [ -z "$BACKUP_FILE" ]; then
  echo "Укажите файл бэкапа"
  ls -la ~/.openclaw/backups/*.json
  exit 1
fi

# Остановите шлюз
openclaw gateway stop

# Восстановите конфигурацию
cp "$BACKUP_FILE" ~/.openclaw/openclaw.json

# Запустите шлюз
openclaw gateway start

echo "Конфигурация восстановлена из $BACKUP_FILE"

Инцидент-ответ

Процедура при компрометации

#!/bin/bash
# incident-response.sh
echo "🚨 ОБНАРУЖЕНА КОМПРОМЕТАЦИЯ"

# 1. Немедленно остановите шлюз
openclaw gateway stop

# 2. Изолируйте систему
sudo iptables -A INPUT -p tcp --dport 18789 -j DROP

# 3. Соберите доказательства
cp ~/.openclaw/logs/*.log /tmp/evidence/
cp ~/.openclaw/openclaw.json /tmp/evidence/

# 4. Оцените ущерб
echo "Проверка компрометированных данных..."
grep -i "token\|secret\|password" ~/.openclaw/logs/*.log

# 5. Отзовите все токены
echo "Отзыв токенов..."
# Отзовите Telegram токен в BotFather
# Отзовите API ключи

# 6. Восстановите из чистого бэкапа
./restore-openclaw.sh ~/.openclaw/backups/openclaw_clean.json

# 7. Обновите все секреты
./rotate-secrets.sh

# 8. Перезапустите с усиленной безопасностью
openclaw gateway start --security-mode=high

echo "Инцидент обработан. Проверьте логи."

Регулярные проверки безопасности

Ежедневные проверки

#!/bin/bash
# daily-security-check.sh
echo "=== ЕЖЕДНЕВНАЯ ПРОВЕРКА БЕЗОПАСНОСТИ ==="

# 1. Проверка обновлений
echo "1. Проверка обновлений OpenClaw..."
npm show openclaw version
openclaw --version

# 2. Проверка логов безопасности
echo "2. Анализ логов безопасности..."
grep -i "error\|warning\|unauthorized\|failed" ~/.openclaw/logs/security.log | tail -20

# 3. Проверка активных подключений
echo "3. Активные подключения..."
sudo netstat -tlnp | grep 18789

# 4. Проверка использования памяти
echo "4. Использование памяти..."
ps aux | grep openclaw | grep -v grep

# 5. Проверка целостности файлов
echo "5. Проверка целостности конфигурации..."
openclaw config validate

echo "=== ПРОВЕРКА ЗАВЕРШЕНА ==="

Еженедельный аудит

#!/bin/bash
# weekly-security-audit.sh
echo "=== ЕЖЕНЕДЕЛЬНЫЙ АУДИТ БЕЗОПАСНОСТИ ==="

# 1. Проверка CVE
echo "1. Проверка известных уязвимостей..."
# Проверьте https://github.com/openclaw/openclaw/security

# 2. Аудит пользователей
echo "2. Аудит пользователей и прав..."
openclaw users list
openclaw roles show

# 3. Аудит команд
echo "3. Аудит выполненных команд..."
grep -i "command.*executed" ~/.openclaw/logs/audit.log | tail -50

# 4. Проверка бэкапов
echo "4. Проверка бэкапов..."
ls -la ~/.openclaw/backups/

# 5. Тестирование восстановления
echo "5. Тестирование восстановления..."
# (опционально) Восстановите из бэкапа в тестовой среде

echo "=== АУДИТ ЗАВЕРШЕН ==="

Примеры безопасных конфигураций

Пример 1: Личное использование

```json5
{
"gateway": {
"bind": "127.0.0.1",
"port": 18789
},
"channels": {
"telegram": {
"enabled": true,
"botToken": "${TELEGRAM_BOT_TOKEN}",
"dmPolicy": "allowlist",
"allowFrom": ["tg:336940264"],
"configWrites": false
}

Помогла ли вам эта статья?

Оставьте отзыв или предложите улучшения

🐛 Сообщить об ошибке

Комментарии и обсуждение

Пока нет комментариев. Будьте первым!

Добавить комментарий

Комментарии проходят модерацию