Безопасная установка OpenClaw: Закрываем все порты
Пошаговый гайд по установке OpenClaw на VPS с максимальной безопасностью. Настраиваем firewall, SSH и изолируем gateway от внешнего мира.
Безопасная установка OpenClaw
Примечание: OpenClaw ранее назывался MoltBot и Clawdbot. Все команды взаимозаменяемы (
openclaw,moltbot,clawdbot).
OpenClaw — мощный AI-ассистент, но любой сервер, торчащий в интернет, это потенциальная уязвимость. В этом гайде настроим OpenClaw так, чтобы ни один порт не был открыт наружу, кроме минимально необходимых.
Что получим в итоге
- ✅ SSH только через нестандартный порт + ключи (пароли отключены)
- ✅ OpenClaw gateway на 127.0.0.1 (недоступен извне)
- ✅ Telegram/WhatsApp работают через исходящие соединения
- ✅ UFW firewall с минимальными правилами
- ✅ Fail2ban для защиты от брутфорса
Требования
- VPS с Ubuntu 22.04+ (DigitalOcean, Hetzner, любой)
- Доменное имя (опционально, для webhooks)
- Node.js 22+
Шаг 1: Первоначальная настройка сервера
Создаём пользователя (не работаем под root)
# Подключаемся как root
ssh root@your-server-ip
# Создаём пользователя
adduser clawbot
usermod -aG sudo clawbot
# Копируем SSH ключи
mkdir -p /home/clawbot/.ssh
cp ~/.ssh/authorized_keys /home/clawbot/.ssh/
chown -R clawbot:clawbot /home/clawbot/.ssh
chmod 700 /home/clawbot/.ssh
chmod 600 /home/clawbot/.ssh/authorized_keys
Настраиваем SSH (меняем порт, отключаем пароли)
sudo nano /etc/ssh/sshd_config
Меняем/добавляем:
Port 2222 # Нестандартный порт
PermitRootLogin no # Запрет root
PasswordAuthentication no # Только ключи
PubkeyAuthentication yes
AllowUsers clawbot # Только наш пользователь
sudo systemctl restart sshd
⚠️ Важно: Не закрывай текущую сессию! Открой новый терминал и проверь подключение:
ssh -p 2222 clawbot@your-server-ip
Шаг 2: Настройка Firewall (UFW)
Базовые правила
# Сбрасываем все правила
sudo ufw --force reset
# Политика по умолчанию: блокировать входящие
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Разрешаем только SSH на нашем порту
sudo ufw allow 2222/tcp comment 'SSH'
# Включаем firewall
sudo ufw enable
# Проверяем
sudo ufw status verbose
Должно быть:
Status: active
To Action From
-- ------ ----
2222/tcp ALLOW Anywhere
Никаких 80, 443, 18789! OpenClaw не нуждается во входящих соединениях для Telegram.
Шаг 3: Установка OpenClaw
Устанавливаем Node.js 22
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
Устанавливаем OpenClaw
npm install -g openclaw@latest
Запускаем wizard
openclaw onboard --install-daemon
Wizard спросит:
- API ключ — вставляем ключ Anthropic/OpenAI
- Модель — выбираем (claude-sonnet-4 оптимально)
- Каналы — выбираем Telegram
Шаг 4: Конфигурация безопасности OpenClaw
Редактируем конфиг
nano ~/.openclaw/openclaw.yaml
Критически важные настройки:
gateway:
# Слушаем ТОЛЬКО localhost — недоступен извне
host: "127.0.0.1"
port: 18789
# Аутентификация
auth:
token: "СГЕНЕРИРУЙ_ДЛИННЫЙ_ТОКЕН_32+_СИМВОЛОВ"
# DM Pairing — одобряем новых пользователей вручную
dmPairing:
enabled: true
approvalMode: "manual" # или "auto" если доверяешь
agent:
model: "anthropic/claude-sonnet-4"
# Ограничиваем что может делать агент
tools:
exec:
security: "allowlist" # Только разрешённые команды
allowedCommands:
- "ls"
- "cat"
- "grep"
- "npm"
- "node"
blockedCommands:
- "rm -rf"
- "sudo"
- "chmod 777"
Генерируем безопасный токен
openssl rand -hex 32
Шаг 5: Настройка Telegram (без открытых портов)
OpenClaw использует long polling для Telegram — это исходящие соединения. Никакие порты открывать не нужно!
Получаем токен бота
- Открываем @BotFather в Telegram
/newbot→ называем бота- Копируем токен
Добавляем в конфиг
channels:
telegram:
enabled: true
token: "YOUR_BOT_TOKEN"
# Polling mode — никаких webhooks
polling: true
Шаг 6: Запускаем как systemd service
Создаём service файл
sudo nano /etc/systemd/system/openclaw.service
[Unit]
Description=OpenClaw Gateway
After=network.target
[Service]
Type=simple
User=clawbot
WorkingDirectory=/home/clawbot
ExecStart=/usr/bin/openclaw gateway
Restart=always
RestartSec=10
# Безопасность
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=read-only
ReadWritePaths=/home/clawbot/.openclaw
PrivateTmp=true
[Install]
WantedBy=multi-user.target
Запускаем
sudo systemctl daemon-reload
sudo systemctl enable openclaw
sudo systemctl start openclaw
# Проверяем
sudo systemctl status openclaw
Шаг 7: Fail2ban для SSH
sudo apt install fail2ban -y
sudo nano /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600
sudo systemctl restart fail2ban
Проверка безопасности
Сканируем порты извне
С другого сервера или через онлайн-сканер:
nmap -Pn your-server-ip
Должен показать только порт 2222 (SSH). Если видишь что-то ещё — проверяй UFW.
Проверяем что OpenClaw не слушает наружу
sudo ss -tlnp | grep openclaw
Должно быть 127.0.0.1:18789 — НЕ 0.0.0.0:18789.
Чек-лист безопасности
- SSH на нестандартном порту (не 22)
- Вход только по ключам (PasswordAuthentication no)
- Root login отключен
- UFW включен, открыт только SSH
- OpenClaw слушает на 127.0.0.1
- Fail2ban настроен
- Токен gateway — длинный и случайный
- DM Pairing включен
Troubleshooting
OpenClaw не подключается к Telegram
Проверь исходящие соединения:
curl -s https://api.telegram.org/bot<TOKEN>/getMe
Если ошибка — возможно провайдер блокирует Telegram. Используй proxy в конфиге.
Не могу подключиться по SSH
Если заблокировал себя:
- Используй консоль VPS провайдера (обычно есть в панели)
- Исправь
/etc/ssh/sshd_config sudo systemctl restart sshd
Итог
Теперь у тебя OpenClaw, который:
- Недоступен напрямую из интернета
- Защищён firewall и fail2ban
- Работает через исходящие соединения
- Готов к продакшену
В следующих гайдах разберём настройку WhatsApp, Discord и продвинутые сценарии.