Skip to content

Безопасность сервера ​

Что уже сделано установкой ​

  • Вход по SSH только по ключу, вход под root закрыт (после проверки входа под deploy), не больше 3 попыток за соединение.
  • Firewall пропускает только SSH, 80 и 443. База и API не видны из интернета, потому что Docker не публикует их порты наружу.
  • fail2ban банит перебор паролей SSH.
  • Автообновления безопасности системы.
  • Секреты — только в .env на сервере (права 600), не в образах Docker и не в git. Ключи, вписанные в админке, хранятся зашифрованными.
  • Роль базы для приложения не может менять и удалять журнал действий и журнал денег — даже при взломе сайта историю не переписать.
  • Бэкапы шифруются и снимаются каждый час.

Админка по IP ​

Админка работает только на поддомене admin. и пускает два вида адресов:

  1. ADMIN_ALLOWED_IPS в .env — аварийный доступ владельца. Работает всегда, даже если API лежит. Меняется на сервере, после правки — docker compose up -d caddy.
  2. Адреса сотрудников из Настройки → Сотрудники — добавляются в админке и работают сразу, без правки сервера.

Остальным админка отвечает отказом ещё до страницы входа. Скрытый адрес вроде /admin55 не защищает — защищает именно закрытый поддомен.

Перед запуском в работу

Если на время настройки вы открывали админку широко (например, 0.0.0.0/0), верните в ADMIN_ALLOWED_IPS только свои адреса или подсеть VPN.

Вход сотрудников ​

  • Пароль + код из приложения-аутентификатора (2FA) — обязательно для всех сотрудников.
  • После 5 неверных паролей вход блокируется, адрес перебора банится автоматически.
  • Сессии видны в Настройки → Сотрудники → Сессии: IP, браузер, последняя активность. Любую можно завершить.

Что делать регулярно ​

Как частоЧто
Каждый деньСмотреть Состояние системы и уведомления об ошибках
Каждую неделюСессии сотрудников, баны, журнал действий на странные действия
Каждый месяцПроверить копию на временной базе; df -h
При уходе сотрудникаОтключить его в «Сотрудниках» — сессии завершатся, его IP перестанет пускаться

Чего не делать ​

  • Не добавляйте ports: сервисам db и api в docker-compose.yml: Docker публикует порты в обход firewall (ufw), и база окажется в интернете.
  • Не меняйте правила firewall без нужды.
  • Не давайте сотрудникам доступ к серверу по SSH — вся работа в админке.
  • Не храните .env и копии с паролем бэкапов в одном месте.
  • Не включайте вход по паролю для SSH.
  • Не ставьте на этот же сервер другие сайты и панели управления.

Если подозреваете взлом ​

  1. Оставьте в ADMIN_ALLOWED_IPS только свой адрес.
  2. В «Сотрудниках» проверьте список: отключите незнакомых и лишних, уберите чужие IP у сотрудников и ролей — ворота админки пускают и по ним.
  3. Завершите все сессии и смените пароли и 2FA сотрудников.
  4. Смените SESSION_SECRET и ADMIN_GATE_SECRET в .env (openssl rand -hex 32) и перезапустите docker compose up -d api worker caddy — все входы станут недействительны.
  5. Перевыпустите ключи у платёжных систем, AML-провайдера, почты и токен Telegram-бота и впишите новые.
  6. Посмотрите журнал действий — что и кто делал.
  7. Снимите копию базы и напишите в поддержку OneSwaper.

Документация движка обменника OneSwaper