−25%

на годовую оплату Windows, до 31.10. К тарифам

EQVPS

Как защитить self-hosted AI-агента на VPS

26 сент. 2026 г. · 3 мин чтения · EQVPS Team

Обычное веб-приложение делает то, что написано в коде. AI-агент делает то, что написано в коде, плюс всё, в чём его убедит прочитанный текст. Дайте ему shell, API-ключ и бюджет, направьте в открытый интернет — и вы построили нечто новое: процесс, который можно обмануть социальной инженерией. Лечится это не паранойей, а старой админской привычкой к минимальным привилегиям — только применённой к очень разговорчивой программе.

Реальные угрозы

Всё ниже либо делает это менее вероятным, либо удешевляет последствия.

1. Отдельная машина и отдельный пользователь

Агентов, которые выполняют код или ходят по вебу, запускайте на отдельном VPS — не рядом с боевой базой данных. И на этой машине — никогда от root:

adduser --disabled-password --gecos "" agent
mkdir -p /home/agent/work && chown agent:agent /home/agent/work

Никакого sudo, никаких SSH-ключей к другим серверам, никакого доступа к тому, что ему не нужно.

2. Песочница через systemd

systemd умеет огородить процесс без контейнеров. Агент может читать систему, но писать — только в свою рабочую папку:

# /etc/systemd/system/agent.service
[Unit]
Description=AI agent
After=network-online.target

[Service]
User=agent
WorkingDirectory=/home/agent/work
EnvironmentFile=/home/agent/.agent.env
ExecStart=/home/agent/venv/bin/python run_agent.py
Restart=on-failure
NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=read-only
ReadWritePaths=/home/agent/work
PrivateTmp=yes
PrivateDevices=yes
MemoryMax=2G

[Install]
WantedBy=multi-user.target

ProtectSystem=strict делает всю файловую систему доступной только для чтения, кроме ReadWritePaths. MemoryMax не даёт одной вышедшей из-под контроля задаче положить сервер. Проверьте результат командой systemd-analyze security agent — она оценит юнит и покажет, что ещё открыто.

3. Считайте, что ключи утекут

4. Ограничьте, что он может купить

Если агент может тратить деньги, ограничение должно жить вне агента. В EQVPS агент заказывает и продлевает серверы с предоплаченного баланса аккаунта через MCP-сервер или REST API — поэтому баланс и есть жёсткий потолок. Пополняйте его на сумму, которую готовы потерять, а не на весь бюджет. Дайте агенту отдельный аккаунт, если ему не нужно видеть ваши остальные серверы.

5. Человек перед необратимыми действиями

Удаление данных, отправка денег, пуш в main, письма клиентам — пропускайте через шаг подтверждения; хватит сообщения в Telegram с кнопкой «одобрить». Инструменты только для чтения пусть работают свободно; инструменты на запись заслуживают доверие постепенно.

6. Сузьте выходы (если сможете с этим жить)

Белый список исходящих соединений сильно усложняет вывод секретов:

ufw default deny outgoing
ufw allow out 53          # DNS
ufw allow out 443/tcp     # HTTPS APIs
ufw allow out 80/tcp      # package mirrors
ufw default deny incoming && ufw allow 22/tcp && ufw enable

Честно, этот шаг чаще всего выкидывают: агентам, которые браузят веб, нужен произвольный HTTPS, и белый список по портам мало что даёт. Он оправдан для агентов, которые ходят в фиксированный набор API.

7. Логи и путь назад

Логируйте каждый вызов инструмента с аргументами. Делайте снимок, прежде чем выпустить агента на что-то новое: Managed Backups дают ежедневные точки восстановления плюс снимки по требованию — так неудачный день обойдётся восстановлением, а не пересборкой.

Честный итог

Ничто из этого не делает агента безопасным для слепого доверия. Это делает ошибку дешёвой: взломанный агент на своей машине, под своим пользователем, с ограниченным балансом и узкими ключами может нанести лишь небольшой, исправимый ущерб. Это и есть реалистичная цель. Начните с базы из статьи безопасность нового VPS, затем добавьте слои для агента, описанные выше.

Частые вопросы

Какой главный риск у AI-агента на сервере?

Prompt injection: агент читает текст, который написал не он — веб-страницу, письмо, комментарий в issue, — и этот текст велит ему сделать то, о чём вы не просили: например, вывести переменные окружения или выполнить команду. Всё остальное в этом гайде — про то, как ограничить ущерб, когда это случится.

Можно ли запускать агента от root?

Никогда. Дайте ему отдельного непривилегированного пользователя без sudo и ограничьте запись песочницей systemd. Если его обманом заставят выполнить разрушительную команду, пострадает только его рабочая папка.

Как не дать агенту потратить лишнее?

Используйте жёсткие лимиты вне агента: лимиты трат на ключах провайдера моделей и предоплаченный баланс для всего, что он может купить. В EQVPS агент тратит с баланса аккаунта, так что сам баланс и есть потолок — пополняйте его на сумму, которую готовы потерять, не больше.

Можно ли полностью заблокировать prompt injection?

Нет — надёжного фильтра сегодня не существует. Работает уменьшение радиуса поражения: инструменты с минимальными правами, подтверждение человеком для разрушительных и платных действий, никаких секретов в контексте агента и логи, которые можно проверить.

Стоит ли выделять агенту отдельный VPS?

Да, если агент выполняет код или ходит по вебу. Небольшая отдельная машина держит его подальше от ваших баз данных, других проектов и учётных данных. Если его взломают, вы пересоздадите один сервер, а не всю инфраструктуру.

← Назад в блогТарифы и цены →

Комментарии

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

Оставить комментарий

Комментарии проходят модерацию перед публикацией.