Развёртывание: предварительные проверки (версия Node и модель прав)
Зафиксируйте среду исполнения до любых «хардненинг»-настроек. Стек шлюза и CLI OpenClaw в 2026 году обычно ориентируют на актуальную линию Node LTS (на практике команды стандартизируют Node 22+). На удалённом Mac проверьте node -v и npm -v, ставьте Node через nvm или официальный pkg, чтобы обновления были воспроизводимыми и не смешивали префиксы.
Создайте отдельного пользователя macOS (например openclawsvc), которому принадлежат каталог установки и пути логов. Не запускайте шлюз от администратора с «бесшумным» sudo: один утёкший токен тогда превращается в полный доступ к диску. Проверьте фактические владельца и права:
id openclawsvc ls -la ~/openclaw-gateway chmod 750 ~/openclaw-gateway chmod 600 ~/openclaw-gateway/.env.gateway
Права Privacy (TCC) выдавайте точечно. Если навык вызывает автоматизацию и появляются запросы macOS, документируйте их; не включайте Full Disk Access «ради скорости». Для launchd укажите UserName в plist, чтобы процесс явно работал не от привилегированной сессии инженера.
Токен шлюза и контроль доступа: пошаговая конфигурация
Первое решение плоскости управления — сетевая экспозиция. Безопасный шаблон на удалённом Mac: процесс OpenClaw слушает 127.0.0.1:PORT, а Caddy или nginx завершает TLS и проксирует на этот порт с опциональным allowlist IP. Публичный 0.0.0.0 без сильной аутентификации и сетевых ограничений — типичная находка в разборе утечек 2025–2026.
Включите bearer-аутентификацию на пути, который используют CI и клиенты. Токен храните в .env.gateway (режим 600) и пробрасывайте в окружение демона:
export OPENCLAW_GATEWAY_TOKEN="$(openssl rand -hex 32)" # В plist launchd — блок EnvironmentVariables: # OPENCLAW_GATEWAY_TOKEN = <значение из хранилища секретов>
В GitHub Actions и аналогах подставляйте токен из зашифрованных секретов и запретите эхо в логах. Полезный контроль в пайплайне: убедиться, что в индексе git нет открытого токена (например поиск по OPENCLAW_GATEWAY_TOKEN в отслеживаемых файлах с политикой «fail»).
Иллюстративный фрагмент openclaw.json (ключи подгоните под вашу версию OpenClaw):
{
"gateway": {
"listen": { "host": "127.0.0.1", "port": 18765 },
"auth": { "mode": "bearer", "header": "Authorization" },
"rateLimit": { "perMinute": 120 }
}
}
Сочетайте bearer с сетевым периметром: VPN-only, для отладки — SSH-туннель ssh -L 18765:127.0.0.1:18765 user@remote-mac, файрвол с запретом по умолчанию для входящих.
Белый список исходящих доменов и политика прокси
Агент с произвольными HTTP-вызовами из навыков работает как усилитель SSRF. Начните с письменного allowlist хостов, которые реально нужны джобам, и только потом включайте технические ограничения.
| Категория | Примеры хостов (сократите под свой стек) | Заметки |
|---|---|---|
| API моделей | api.openai.com, api.anthropic.com, региональные endpoint’ы | Фиксируйте базовые URL в конфиге; без масок «любой домен». |
| Реестры пакетов | registry.npmjs.org, github.com, objects.githubusercontent.com | Нужны для установки и тяг ClawHub-подобных сценариев. |
| ML-артефакты | huggingface.co, cdn-lfs.huggingface.co | Добавляйте только если тянете веса в рантайме. |
| Внутренние сервисы | Частные имена реестров | Пропишите в NO_PROXY, чтобы обходить корпоративный прокси. |
Задайте прокси-переменные один раз для учётки сервиса и окружения launchd:
export HTTPS_PROXY="http://proxy.corp.example:8080" export NO_PROXY="127.0.0.1,localhost,.internal.corp,artifacts.internal"
Если централизованный egress недоступен, комбинируйте встроенный межсетевой экран macOS, явные правила и версионируемые репозитории навыков — любое расширение исходящих адресов должно проходить ревью, а не «временно отключать фильтр».
Аудит логов и пороги оповещений
Структурированные логи полезнее скриншотов в чате. Направьте stdout/stderr шлюза в каталог вроде /var/log/openclaw/ (владелец — сервисный пользователь) или используйте StandardOutPath / StandardErrorPath в plist. Ротацию настройте через newsyslog или небольшой logrotate, иначе длинные загрузки моделей быстро съедят диск.
Минимальный мониторинг на удалённом узле:
- 401/403: алерт при всплеске неуспешной аутентификации с одного IP (часто 10–30/мин после калибровки).
- Новые исходящие хосты: ежедневный дайджест DNS-имён, не встречавшихся в предыдущие 7 дней.
- Бюджет ошибок: устойчивый уровень
ECONNRESETили ошибок TLS-handshake выше 5% запросов в течение 10 минут. - Квоты API: корреляция ответов 429 с user-agent шлюза — частый ранний признак компрометации токена.
Если нет SIEM, даже grep -E "401|403|EACCES|certificate|handshake" по cron с письмом или webhook в мессенджер лучше полного молчания. Главное — заранее определить, кто реагирует на алерт и в какой SLA.
Типичные ошибки: порт, TLS и права
| Симптом | Что выполнить / проверить |
|---|---|
EADDRINUSE на порту шлюза | lsof -nP -iTCP:18765 -sTCP:LISTEN — остановите зависший процесс или согласованно смените порт в openclaw.json и конфиге прокси. |
TLS: UNABLE_TO_VERIFY_LEAF_SIGNATURE | Корпоративный MITM: доверенный корень в связке ключей macOS или NODE_EXTRA_CA_CERTS=/path/to/corp.pem только для сервисного пользователя. |
| Сброс соединения снаружи | Увеличьте proxy_read_timeout (или аналог) для длинных стримов моделей; проверьте, что файрвол не режет обратный трафик по established. |
EACCES при записи кеша или логов | ls -la на каталог; владелец openclawsvc; не смешивайте sudo npm -g с пользовательскими установками. |
| Периодические 401 из CI | Сверьте имена секретов между репозиториями; проверьте лишний перевод строки в значении токена; минимизируйте рассинхрон времени (sntp -sS time.apple.com). |
После изменений прогоните привычную проверку здоровья (например openclaw doctor, если доступно в вашей сборке) и локальный запрос:
curl -sf -H "Authorization: Bearer $OPENCLAW_GATEWAY_TOKEN" http://127.0.0.1:18765/health
Только после успешного локального теста расширяйте слушатель наружу через прокси с TLS и ACL.
Чеклист безопасности перед выводом в продакшен
- Шлюз не слушает
0.0.0.0без ACL по IP и без сильной аутентификации. - Токен сменён с любого дефолта; файл секретов с правами 600; токен отсутствует в git и в выводе CI.
- Allowlist egress задокументирован; для демона заданы
HTTPS_PROXY/NO_PROXY. - Логи пишутся на диск с ротацией; есть хотя бы один автоматический алерт на всплеск отказов аутентификации.
- Тест восстановления: развёртывание «с нуля» по скрипту в чистом домашнем каталоге сервисной учётки.
FAQ по безопасности
Слушать ли шлюз на 0.0.0.0? По возможности нет: loopback + обратный прокси с TLS и ограничением IP, либо только приватный интерфейс. Незащищённые шлюзы на публичных интерфейсах — повторяющаяся тема отчётов 2025–2026.
Где хранить bearer-токен? В файле с chmod 600 или в менеджере секретов, подстановка через launchd/оркестратор; ротация при смене состава команды; никакого вывода в логи CI.
Как ограничить произвольные URL навыков? Белый список хостов, корпоративный прокси, по возможности egress-правила на хосте, ревью изменений в репозитории навыков. Исключения фиксируйте письменно.
На что реагировать в логах в первую очередь? Серии 401/403, рост ошибок TLS, появление новых внешних хостов относительно базы, длительные серии 429 — особенно если совпадают с идентификатором клиента шлюза.
Итоги и как выбрать узел удалённого Mac
Усиление OpenClaw на удалённом Mac — это в основном скучная дисциплина: верная версия Node и сервисная учётка, bearer-токен вне git, исходящий трафик по утверждённому списку и логи, на которые настроены оповещения. Именно такой набор закрывает те сценарии компрометации шлюзов, которые доминировали в разборе инцидентов 2025–2026.
При выборе инфраструктуры ищите выделенный Apple Silicon с предсказуемым egress и понятным break-glass (SSH/VNC), чтобы чеклист выше не упирался в «шум» мультитенанта. Сравните конфигурации на странице тарифов, оформите узел через покупку/аренду, уточните доступ в центре помощи и продолжайте серию материалов по OpenClaw в блоге — там же гайды по Docker, MCP и стабильности загрузок.
Запускайте OpenClaw на железе с полным контролем
Материалы блога, главная, помощь и оформление аренды доступны без входа в аккаунт.