Настройки безопасности
Обновлено: 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": {
"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
}
Комментарии и обсуждение
Пока нет комментариев. Будьте первым!
Добавить комментарий