Безопасность сервера
Что уже сделано установкой
- Вход по SSH только по ключу, вход под root закрыт (после проверки входа под
deploy), не больше 3 попыток за соединение. - Firewall пропускает только SSH, 80 и 443. База и API не видны из интернета, потому что Docker не публикует их порты наружу.
- fail2ban банит перебор паролей SSH.
- Автообновления безопасности системы.
- Секреты — только в
.envна сервере (права 600), не в образах Docker и не в git. Ключи, вписанные в админке, хранятся зашифрованными. - Роль базы для приложения не может менять и удалять журнал действий и журнал денег — даже при взломе сайта историю не переписать.
- Бэкапы шифруются и снимаются каждый час.
Админка по IP
Админка работает только на поддомене admin. и пускает два вида адресов:
ADMIN_ALLOWED_IPSв.env— аварийный доступ владельца. Работает всегда, даже если API лежит. Меняется на сервере, после правки —docker compose up -d caddy.- Адреса сотрудников из Настройки → Сотрудники — добавляются в админке и работают сразу, без правки сервера.
Остальным админка отвечает отказом ещё до страницы входа. Скрытый адрес вроде /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.
- Не ставьте на этот же сервер другие сайты и панели управления.
Если подозреваете взлом
- Оставьте в
ADMIN_ALLOWED_IPSтолько свой адрес. - В «Сотрудниках» проверьте список: отключите незнакомых и лишних, уберите чужие IP у сотрудников и ролей — ворота админки пускают и по ним.
- Завершите все сессии и смените пароли и 2FA сотрудников.
- Смените
SESSION_SECRETиADMIN_GATE_SECRETв.env(openssl rand -hex 32) и перезапуститеdocker compose up -d api worker caddy— все входы станут недействительны. - Перевыпустите ключи у платёжных систем, AML-провайдера, почты и токен Telegram-бота и впишите новые.
- Посмотрите журнал действий — что и кто делал.
- Снимите копию базы и напишите в поддержку OneSwaper.