Безопасная настройка OpenClaw на VPS
Узнайте, как защитить AI-агент OpenClaw на сервере. Инструкция по созданию непривилегированного пользователя, настройке firewall, управлению секретами и запуску через systemd.
Что такое OpenClaw и почему его нужно защищать в первую очередь
OpenClaw — это AI-агент для self-hosted развертывания. Вы запускаете его на собственном сервере, подключаете к большой языковой модели, после чего он может выполнять shell-команды, управлять браузером, читать и изменять ваши файлы, а также реагировать на сообщения, которые вы отправляете из чат-приложений. Этот широкий доступ — главная цель инструмента и одновременно основной источник риска. Безопасность агента, способного выполнить любую команду, ограничена лишь защищенностью сервера, на котором он работает, и установленными вами лимитами.
Два факта определяют подход в этом руководстве. Во-первых, OpenClaw спроектирован так, чтобы вы сами занимались его защитой. Его модель безопасности возлагает ответственность за строгие политики инструментов, песочницы и тщательную настройку прав доступа на оператора, а не на безопасные параметры по умолчанию. Во-вторых, проект уже столкнулся с серьезным инцидентом безопасности: в марте 2026 года за четыре дня было раскрыто девять уязвимостей, включая критическую ошибку повышения привилегий CVE-2026-32922 с оценкой 9.9 из 10. Эти факты не означают, что от OpenClaw следует отказаться. Они означают, что его нельзя запускать «как есть», и данное руководство описывает безопасный способ работы. Часть этого подхода заключается в предварительном определении того, что агент может делать без запроса подтверждения — выбор, который Claude Code делает явным через свои режимы разрешений, где для сервера, к которому у вас нет прямого доступа, требуются более строгие настройки, чем для ноутбука, за которым вы работаете.
Есть и хорошие новости. OpenClaw уже делает один безопасный выбор за вас: его шлюз, единственный процесс, управляющий всем остальным, по умолчанию слушает только loopback-адрес. Поэтому он недоступен из Интернета, если вы специально не откроете к нему доступ. Большая часть работы, описанной ниже, направлена на сохранение этого состояния и ограничение радиуса поражения в случае возникновения проблем.
Создание непривилегированного пользователя для OpenClaw
Никогда не запускайте агент от имени root. Если OpenClaw работает с правами root и происходит сбой — будь то ошибка в коде, неверная инструкция или CVE, подобная упомянутой выше, — масштаб ущерба ничем не ограничен. Создайте выделенного системного пользователя без доступа к оболочке входа и без прав sudo, а затем запускайте агент от имени этого пользователя:
sudo useradd --system --home /opt/openclaw --shell /usr/sbin/nologin openclawВсе файлы, принадлежащие OpenClaw, находятся в /opt/openclaw и принадлежат этой учетной записи. Это самый важный этап, основанный на том же принципе, что описан в запуске сервисов от имени непривилегированного пользователя: учетная запись, от имени которой работает агент, определяет предел того, что он может повредить.
Установка OpenClaw
OpenClaw распространяется в виде пакета npm, поэтому сначала установите Node.js, если его нет на сервере. Установите пакет глобально, чтобы поместить исполняемый файл openclaw в PATH для всех пользователей, а затем выполните однократную процедуру начальной настройки:
sudo npm install -g openclaw@latest
sudo -u openclaw openclaw onboardЗапуск начальной настройки от имени пользователя openclaw гарантирует, что конфигурация агента будет сохранена в его домашнем каталоге /opt/openclaw, а не в каталоге root. Проект также предлагает установщик curl -fsSL https://openclaw.ai/install.sh | bash, который выполняет ту же установку одной командой. Пропустите флаг --install-daemon во время начальной настройки: он регистрирует собственную службу OpenClaw, а защищенный юнит systemd, который вы создадите ниже, обладает более строгими настройками.
Оставьте шлюз на loopback-интерфейсе за межсетевым экраном
По умолчанию шлюз привязывается к 127.0.0.1. Оставьте эту настройку как есть. Почти никогда нет причин открывать этот порт в интернет. Если вы это сделаете, любой, кто обнаружит порт, получит удаленный доступ к процессу, который выполняет команды на сервере.
Установите межсетевой экран с политикой default-deny перед сервером, чтобы исключить случайное открытие портов:
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enableИзбегайте двух распространенных ошибок. Межсетевой экран, настроенный только для IPv4, может оставить сервис доступным через IPv6 — это именно та брешь в IPv6-безопасности, на которую попадаются многие администраторы. Если вам нужно получить доступ к шлюзу со своего ноутбука, не открывайте порт. Используйте VPN или SSH-туннель, чтобы агент никогда не принимал соединения из открытого интернета.
Изоляция секретов
OpenClaw требует API-ключ для любой языковой модели, к которой вы подключаетесь. Этот ключ может расходовать ваши средства и, через агента, действовать от вашего имени, поэтому обращайтесь с ним как с паролем. Не храните его в unit-файле или в репозитории. Поместите его в файл, который может прочитать только пользователь OpenClaw:
sudo install -o openclaw -g openclaw -m 600 /dev/null /opt/openclaw/openclaw.env
sudoedit /opt/openclaw/openclaw.env # add ANTHROPIC_API_KEY=... or your model provider's keySystemd-юнит загружает этот файл с помощью EnvironmentFile, поэтому ключ попадает в процесс, не попадая при этом в командную строку, логи или историю оболочки. Этот шаблон применим к любому секрету на сервере: укрепление безопасности self-hosted Vaultwarden сводится к защите его административного токена и файла резервной копии, а не к шифрованию, поскольку именно права доступа к файлам фактически определяют, кто может прочитать секрет в состоянии покоя.
Запуск в качестве защищенного systemd-сервиса
Запуск агента через systemd обеспечивает автоматический перезапуск, чистые логи через journalctl и, что наиболее важно, набор опций изоляции на уровне ядра, которые ограничивают возможности процесса в случае его компрометации. Наиболее значимые для агента опции: NoNewPrivileges, чтобы процесс не мог получить новые привилегии, ProtectSystem=strict для перевода файловой системы в режим «только чтение» (за исключением разрешенных путей), PrivateTmp для создания изолированного временного каталога и ProtectHome, чтобы запретить доступ к домашним директориям.
Создайте готовый защищенный unit-файл, а затем скопируйте его в /etc/systemd/system/openclaw.service:
Unit запускает openclaw gateway — основной процесс, управляющий агентом. Если which openclaw указывает на другой путь в вашей системе, измените ExecStart соответствующим образом. Полный разбор этих директив, а также daemon-reload и enable --now, приведен в запуск программы как systemd-сервиса. Краткая инструкция после того, как вы вставили содержимое unit-файла:
sudo systemctl daemon-reload
sudo systemctl enable --now openclawУсиление защиты сервера
Безопасность агента зависит от защищенности сервера, на котором он работает. Для завершения настройки добавьте два уровня защиты. Переведите SSH на аутентификацию только по ключам и отключите вход для пользователя root, как описано в укрепление SSH на VPS, чтобы исключить возможность подбора пароля для вашей учетной записи. Затем установите Fail2ban, чтобы блокировать сканеры, которые постоянно проверяют открытые порты. Эти меры не затрагивают OpenClaw напрямую, но перекрывают пути, которые злоумышленник мог бы использовать для доступа к приложению.
Регулярное обновление
Раскрытие информации в марте 2026 года — наиболее убедительный аргумент в пользу поддержания актуальности ПО. Ошибка повышения привилегий в агенте гораздо опаснее, чем в обычном веб-приложении, поскольку агент уже имеет право выполнять команды. Следите за релизами проекта, оперативно устанавливайте обновления безопасности и относитесь к обновлению OpenClaw как к плановому обслуживанию, а не как к задаче, которую можно отложить.
Чтобы понять, что именно вы защищаете, ознакомьтесь с архитектурой агента типа OpenClaw, где описаны все компоненты системы, а также с руководством по развертыванию собственного ИИ-агента на VPS, в котором рассматривается общая структура любого агента. Если вы планируете запустить второй агент параллельно, помните, что два сеанса Claude Code на одной VPS могут передавать задачи друг другу, поэтому каждый из них должен использовать собственную учетную запись и собственные ограничения, а не наследовать ваши права.
FAQ
Безопасно ли запускать OpenClaw на публичном VPS?
Это может быть безопасно при условии усиления защиты. OpenClaw обладает широкими возможностями: он выполняет shell-команды и управляет браузером, поэтому небрежная настройка действительно опасна. В проекте уже была критическая уязвимость (CVE-2026-32922 в марте 2026 года). Модель безопасности предполагает, что вы, как оператор, самостоятельно установите ограничения. Запускайте его от имени непривилегированного пользователя, держите шлюз на loopback за межсетевым экраном с политикой default-deny, изолируйте API-ключи и запускайте сервис как защищенный systemd-юнит.
Стоит ли открывать шлюз OpenClaw в интернет?
Нет. По умолчанию шлюз привязывается к loopback, и его следует оставить в таком состоянии. Это единственный процесс, управляющий агентом, поэтому открытый шлюз — это удаленный путь к системе, которая по своей сути выполняет команды. Если вам нужен удаленный доступ, используйте VPN или SSH-туннель вместо открытия порта.
От имени какого пользователя должен работать OpenClaw?
От имени выделенного системного пользователя без оболочки входа и без прав sudo, но ни в коем случае не от root. Если агент будет скомпрометирован, учетная запись пользователя ограничит масштаб ущерба. Этот пользователь должен владеть только собственными файлами в директории вроде /opt/openclaw и ничем больше.
Как обеспечить безопасность API-ключей OpenClaw?
Храните их в файле, доступном для чтения только пользователю OpenClaw (права 600), и загружайте в сервис с помощью EnvironmentFile в systemd. Не храните ключ в файле юнита, в истории командной оболочки или в git-репозиториях. Смените ключ, если возникли подозрения в его утечке.