Модель безопасности
Эта страница описывает, что защищает ваш сервис и чего достигает каждая защита, от канала между панелью и её узлами до прав каждой учётной записи администратора. Как включать защиты и управлять учётными записями, описано в Безопасность, Администраторы, Роли и Токены API.
Между панелью и её узлами
- Взаимный TLS. Панель и каждый узел подтверждают, кто они, при каждом подключении. Узел принимает только клиентский сертификат панели; никто другой в интернете не проходит дальше TLS-рукопожатия на его управляющем порту.
- Закрепление при первом использовании. Панель запоминает сертификат каждого узла при первом подключении и потом принимает только его. Другая машина на том же адресе отклоняется, а не получает доверие.
- Одноразовые токены установки. Команда установки один раз обменивает свой токен на клиентский сертификат панели; больше токен не работает. Автоматической установке по SSH токен не нужен: она загружает всё через SSH-соединение.
- SSH тоже закрепляется и никогда не сохраняется. Панель запоминает ключ хоста SSH сервера при первом контакте и отклоняет другой. Пароль используется для одного подключения и отбрасывается. Собственный SSH-ключ панели добавляется на сервер, только когда вы отмечаете этот параметр, и его можно отозвать из меню узла.
- Узлы не хранят ваших секретов. Пользователи, ключи и сертификаты попадают на узел в память и исчезают, когда он останавливается.
См. Узел и его панель.
Сессии
- Вход создаёт случайный токен сессии, который передаётся как cookie, недоступный скриптам страницы. Панель хранит только его хеш, поэтому таблица сессий не даёт доступа.
- Сессия заканчивается через 24 часа без использования или через 30 дней с Запомнить меня на 30 дней. Сессии переживают перезапуск панели.
- Каждый администратор может посмотреть свои сессии с адресом, приложением и последней активностью и завершить любую из них. Главный администратор может завершить все сессии другой учётной записи.
- Каждый вход и каждая неудачная попытка входа записываются, даже при выключенном журнале изменений, а вход с нового адреса создаёт
admin.login_new_ip.
Двухфакторный вход и повторное подтверждение
- Двухфакторная аутентификация использует код из приложения- аутентификатора (TOTP) и десять одноразовых кодов восстановления. Код принимается только один раз.
- Повторное подтверждение. Чувствительные действия просят свежий код, если последний был введён больше 10 минут назад: управление администраторами, создание и удаление API-токенов, восстановление резервной копии, перезапуск панели, изменение настроек адреса, сертификата или базового пути панели. Учётные записи без двухфакторной аутентификации и API-токены не спрашивают.
- Единый вход никогда не создаёт учётную запись, а учётная запись с двухфакторной аутентификацией всё равно должна ввести свой код после провайдера.
Роли, области и владение
Что может делать администратор, решают два отдельных механизма, и именно их разделение держит реселлеров порознь:
- Области решают, какие действия. Каждому маршруту API нужна область, и каждый запрос, от сессии или токена, проверяется по областям роли вызывающего.
- Владение решает, какие строки. Реселлер видит и меняет только пользователей, которыми владеет. Никакая область этого не расширяет: реселлер с правом читать пользователей всё равно читает только своих.
Роли добавляют три правила:
- Роль сужает уровень; ничто его не расширяет. Собственная роль начинается с уровня главного администратора, администратора или реселлера и убирает права.
- Никто не выдаёт того, чего не имеет сам. Создание роли, назначение роли учётной записи, сброс пароля другой учётной записи и выпуск токена для другой учётной записи требуют, чтобы у вызывающего были все затронутые права.
- Смена роли завершает входы всех, у кого она есть, поэтому новые права действуют сразу.
У панели один владелец — единственная учётная запись, которую нельзя удалить или понизить, поэтому всегда есть учётная запись, до которой дотянется команда восстановления.
API-токены
API-токен позволяет программе пользоваться API:
- Привязан к администратору. Токен действует как его администратор: обращается только к пользователям этого администратора и ограничен его лимитом.
- Никогда не больше своего администратора. Его области при каждом запросе урезаются до роли администратора, поэтому сужение прав администратора сразу сужает каждый токен, а удаление администратора удаляет его токены.
- Показывается один раз, хранится как хеш. Токен виден один раз, при создании.
- С ограничением частоты. 120 запросов в минуту по умолчанию или частота, заданная на токене.
- Некоторые действия закрыты для любого токена: смена пароля, перезапуск или обновление панели и восстановление резервной копии.
Защита входа
- Пять неудачных попыток с одного адреса блокируют вход с него на 10 минут. Шаг двухфакторной аутентификации и страница настройки тоже считаются.
- Повторные блокировки становятся банами, которые переживают перезапуск и растут с каждым повтором в течение недели: 10 минут, 1 час, 24 часа, 7 дней. Главный администратор может забанить адрес и вручную.
- Бан закрывает только то, что доступно без сессии: вход, его второй шаг и страницу настройки.
- За CDN или обратным прокси укажите его в Доверенные прокси, иначе панель видит каждого посетителя с адресом прокси, и один бан заблокирует всех. Список разрешённых для входа называет адреса, которые никогда не блокируются и не банятся: ваша собственная сеть, ваш путь обратно.
Барьер настройки
Пока не пройден мастер настройки, панель отвечает «не найдено» на каждый запрос, кроме одноразовой ссылки, которую напечатал установщик. Пока нет администратора, войти невозможно, поэтому панель никому не показывает страницу входа. Токен мастера разрешает одну отправку, которая вместе создаёт главного администратора, все настройки и сертификат панели, и удаляется после использования.
Секреты никогда не показываются обратно
- Сохранённые учётные данные больше не показываются. Сохранённый пароль, токен или ключ в форме выглядит как Задан — оставьте пустым, чтобы сохранить; пустое поле сохраняет то, что хранится.
- Секреты-предъявители не читаются вовсе. Токен настройки, парольная фраза резервных копий и секрет, из которого выводятся все учётные данные туннелей, исключены из API настроек и из списка в командной строке.
- События не несут учётных данных. См. Шина событий.
- Резервные копии содержат все учётные данные. Задайте парольную фразу резервных копий, чтобы архив был бесполезен тому, кто его найдёт.
Где доступна панель
- Панель отвечает под собственным базовым путём, если он задан (мастер настройки предлагает случайный), поэтому один только порт не показывает страницу входа.
- Адреса подписок отдельны. На домене подписки панель отвечает только на своём базовом пути, поэтому адрес, который есть у каждого клиента, ничего не говорит о том, где администрируется панель.
- Другие сайты не могут встроить панель в рамку, поэтому её кнопки нельзя спрятать под чужой страницей.
- Вебхуки, которые вы добавляете, не могут указывать в собственную сеть панели.
Журнал аудита
Журнал изменений записывает, кто что изменил и когда. По умолчанию он выключен и включается в настройках; входы, неудачные попытки входа и экспорт ссылок подписки записываются в любом случае. Поля, похожие на секреты (пароли, ключи, токены, учётные данные, адреса подписок), заменяются на [redacted] при записи и ещё раз при чтении. Читать и очищать журнал может только главный администратор, и очистка тоже записывается. См. Журнал аудита.
Восстановление
nexora-panel admin reset-password, запущенная на сервере панели, задаёт новый пароль учётной записи (по умолчанию владельца), выключает её двухфакторный вход, завершает её сессии и удаляет её привязки единого входа. Потерянный телефон и забытый пароль — одно и то же восстановление, и команда остаётся единственным путём обратно. См. Установка панели.
