Перейти к основному содержимому
Возможность

Защита сессий

Защитите сессию под единым policy graph — от генерации Session ID и безопасности cookie до контроля IP+UA bind и управления idle и absolute timeout.

TR7 Защита сессий управляет реальным процессом безопасности, начинающимся после входа пользователя. Сессия рассматривается не просто как значение cookie, а вместе с форматом session ID, флагами безопасности cookie, контекстом клиента, политикой timeout и лимитом одновременных сессий. TR7 WAAP/AAM выстраивает управление сессиями на четырёх основных слоях: session affinity и генерация cookie через SAM, обнаружение смены контекста после входа через session binding, снижение tampering/replay через опциональное шифрование cookie AES-256-CBC и управление idle / absolute timeout через атомарный session refresh на базе Redis. Встроенные policy preset предоставляют готовыми разные профили использования: корпоративное использование по умолчанию, строгий банковский профиль, длительные SaaS-сессии и сценарии одного устройства. Оператор управляет в одной модели режимом binding IP, IP+UA, composite или none; значениями idle и absolute timeout; политикой максимума одновременных сессий. Итог: TR7 выводит безопасность сессий из настроек, разбросанных по коду приложения; он превращает её в централизованную, прослеживаемую и адаптируемую по типу приложения модель session governance на слое WAAP/AAM.

4
Встроенных policy preset: default, strict, relaxed, singleDevice
AES-256-CBC
Шифрование cookie — IP+UA bind, 8-byte salt на cookie, opt-in
1
Round-trip к Redis — атомарный Lua session refresh, SPOE non-blocking

Когда сессию похищают, недостаточно проверить только токен; нужно проверить и контекст сессии.

Session hijacking — классическая, но всё ещё критическая проблема. Когда сессионный cookie пользователя перехвачен, злоумышленник пытается перехватить сессию с тем же токеном. Если система смотрит только на наличие токена, она не проверяет, в каком контексте IP, устройства, браузера или пользователя был сгенерирован этот токен. В этом случае идентификатор сессии в одиночку становится границей безопасности.

Забытые флаги безопасности cookie — тоже распространённая слабость. Без HttpOnly клиентские скрипты могут получить доступ к cookie; без Secure ослабляется транспортный слой; без SameSite кросс-сайтовые запросы становятся более рискованными. Ожидать, что каждая команда приложения будет последовательно применять эти настройки, в крупных организациях нереалистично.

Управление timeout тоже зачастую настраивается неполно. Idle timeout определяет, как долго сессия остаётся открытой после последней активности; absolute timeout же ограничивает максимальную продолжительность жизни с момента входа, даже если пользователь активен. Особенно в финансовых, медицинских и корпоративных порталах эти два лимита должны управляться по отдельности.

Контроль одновременных сессий не решается сам собой стандартной системой cookie. Решения вроде того, со скольких устройств может входить пользователь, должен ли новый вход сбрасывать старую сессию или новый вход должен быть отклонён, требуют централизованного session store и отслеживания активных сессий. В многоузловых структурах это становится ещё более критичным.

TR7 Защита сессий объединяет эту потребность под единым policy graph: генерация session ID, флаги безопасности cookie, binding IP / IP+UA / composite, idle и absolute timeout, максимум одновременных сессий и опциональное шифрование cookie сходятся в одной модели управления.

Наш подход

TR7 применяет защиту сессий не как единственную настройку cookie, а как многослойную политику, простирающуюся от генерации к проверке и от обновления к завершению.

Слой SAM управляет генерацией cookie и session ID

SAM совместно управляет session affinity, именем cookie, источником cookie, форматом сессии и флагами безопасности. TR7 может генерировать session ID или работать с cookie, сгенерированным backend; могут использоваться форматы UUID, IP+timestamp+random, IP+random или custom.

Session binding улавливает смену контекста после входа

После открытия сессии может применяться один из режимов binding: IP, IP+UA, composite или none. При обнаружении смены контекста помечается session mismatch, и приложение может запросить повторную проверку или дополнительный контроль.

Опциональное шифрование cookie снижает риск tampering и replay

При включённом шифровании cookie на базе AES-256-CBC выбранные cookie становятся нечитаемыми на стороне клиента. Благодаря дополнительной привязке, производной из контекста IP+UA, повторное использование токена на другом клиенте затрудняется.

Атомарный session refresh на базе Redis безопасно управляет timeout

Операция session refresh выполняется атомарно с помощью Lua-функций Redis. Idle timeout может обновляться при каждой активности; absolute timeout остаётся привязан к времени входа. Контроль максимума одновременных сессий также может применяться через централизованное session state.

Возможности

Защита сессий предлагает готовые профили, опции binding, управление timeout и безопасность cookie для разных потребностей безопасности и пользовательского опыта.

Четыре встроенных policy preset обеспечивают разные профили безопасности сессий

Профиль default спроектирован для корпоративного стандартного использования с IP binding, idle timeout 8 часов и absolute timeout 7 дней. Профиль session_strict обеспечивает более строгую безопасность с IP+UA binding, idle 30 минут, absolute timeout 8 часов и одной одновременной сессией. Профиль session_relaxed подходит для длительных SaaS-сессий без binding с idle 7 дней и absolute timeout 90 дней. Профиль session_singleDevice используется в приложениях, требующих ограничения по лицензии или устройству, с IP binding и политикой одной одновременной сессии.

Формат session ID выбирается по потребности приложения и безопасности

TR7 не навязывает session ID единую фиксированную модель. Формат ipTimestampRandom обеспечивает сильный формат по умолчанию из комбинации IP, времени и random-значения; формат uuid генерирует непрозрачное значение без IP. Формат ipRandom использует IP и random-значение; формат custom позволяет оператору создать ключ сессии из заголовков, cookie или кастомных переменных. Эта гибкость обеспечивает адаптацию к разным архитектурам приложений.

Флаги безопасности cookie применяются и стандартизируются централизованно

На слое SAM HttpOnly может быть настроен как минимальный флаг безопасности. На уровне политики могут добавляться и дополнительные флаги, такие как Secure, SameSite=Strict или SameSite=Lax. Значение Max-Age cookie может быть связано с absolute timeout. Так не ожидается, что каждая команда приложения будет безошибочно делать настройки безопасности cookie по отдельности.

Источник cookie может быть выбран как TR7 или backend

Когда значение samCookieSource равно TR7, session cookie генерируется на слое ADC. Если backend продолжит генерировать собственный cookie, может использоваться cookie, исходящий от backend. В гибридной модели, если у backend есть cookie, продолжение идёт с этим значением, иначе TR7 может создать новое session-значение. Этот подход обеспечивает адаптацию и к новым приложениям, и к старым системам.

Четыре режима binding устанавливают разные балансы безопасности и мобильности

Режим ip binding сохраняет контекст исходного IP, с которого пользователь вошёл; он силён в сценариях корпоративного офиса или VPN. Режим ip+ua binding обеспечивает более строгий контроль, оценивая пару IP и User-Agent вместе. Режим composite binding может быть расширен дополнительными компонентами, такими как Accept-Language, кастомный заголовок или TLS fingerprint. Режим none ведёт себя более гибко при длительных сессиях и частой смене сети в SaaS-использовании.

Шифрование cookie AES-256-CBC работает opt-in для выбранных cookie

Шифрование cookie не считается включённым по умолчанию; это опциональная защита, активируемая для выбранных cookie. При активации применяется поток cookie_encrypt на стороне response и cookie_decrypt на стороне request. С использованием salt, padding и base64-форматирования для каждого cookie значение на стороне клиента становится бессмысленным. При неудачном decryption значение не рассматривается как доверенные данные сессии, и приложение может принять решение о повторной проверке или отклонении.

Idle и absolute timeout управляются по отдельности

sessionIdleTimeout определяет, как долго сессия остаётся действительной после последней активности. sessionAbsoluteTimeout же ограничивает максимальную продолжительность жизни сессии с момента входа и не продлевается постоянно активностью. Это разделение особенно критично в банковских, корпоративных и содержащих чувствительные данные приложениях. Пользовательский опыт и граница безопасности балансируются в одной политике.

Максимум одновременных сессий может быть ограничен на пользователя

Значением maxConcurrentSessions определяется, сколько активных сессий пользователь может иметь одновременно. При превышении лимита с помощью logout_oldest может быть сброшена самая старая сессия, или с помощью deny_new новый вход может быть отклонён. Эта структура может использоваться для лицензии одного устройства, банковской безопасности или корпоративного контроля доступа. Список активных сессий отслеживается в централизованном session state.

События жизненного цикла сессии отслеживаются как create, refresh, mismatch и logout

При входе сессия создаётся, при каждом request может выполняться idle refresh, при binding mismatch сессия помечается как подозрительная, а при logout сессия аннулируется. Этот жизненный цикл обеспечивает управление сессией не только в начале, но на протяжении всего времени использования. Потоки SIEM и audit могут генерировать сигнал безопасности из этих событий. Особенно при расследованиях захвата учётных записей история сессии важна.

В многоузловых структурах непрерывность сессии сохраняется через peer sync и Redis

Для сохранения session state на нескольких узлах TR7 могут совместно использоваться peer-синхронизация и централизованный store на базе Redis. В сценариях failover или rolling restart дизайн обеспечивает сохранение непрерывности сессии. С опциями replication и персистентности на стороне Redis устойчивость session state может быть повышена. Эта структура не позволяет защите сессий зависеть от одного узла.

Операционная глубина

Защита сессий эксплуатируется вместе с именем cookie, генерацией attribute, composite binding, audit-категориями, session store и поведением fallback timeout.

01

Настраиваемое имя cookie

Имя cookie по умолчанию может использоваться как TR7SID. Для каждого pool с помощью samCookieName может быть определено другое имя. Это используется для соответствия бренду, стандарту приложения или совместимости с существующей архитектурой cookie.

02

Генерация attribute cookie во время выполнения

При создании значения cookie attribute, такие как HttpOnly, Secure, SameSite и Max-Age, добавляются согласно настройкам политики. Эти attribute могут устанавливаться только при генерации новой сессии. Так безопасность cookie стандартизируется централизованной политикой.

03

Компоненты composite binding

Composite binding по умолчанию может строиться из компонентов, таких как исходный IP и User-Agent. Оператор может включить дополнительные компоненты, такие как Accept-Language, Accept-Encoding, кастомный заголовок или TLS fingerprint. Это вычисление должно выполняться на поздней стадии, после того как соответствующие переменные сгенерированы.

04

Audit-категории

События сессии и доступа могут логироваться с категориями, такими как whitelisted, authorized или unauthorized. Эта информация облегчает на стороне SIEM расследования захвата учётных записей, злоупотребления и несанкционированного доступа. Для каждого request контекст пользователя и сессии становится более видимым.

05

Redis session store

Session state AAM может храниться в Redis, а операции session refresh выполняются атомарно с помощью Lua-функций. Эта модель убирает классическую задержку базы данных из пути контроля сессии. С помощью функций Redis, таких как AOF и replication, персистентность и устойчивость могут быть повышены.

06

Безопасные значения fallback

Если конфигурация idle timeout отсутствует, может использоваться fallback 1 час. Если отсутствует absolute timeout, может применяться fallback-значение 24 часа. Эти значения обеспечивают безопасные предположения, предотвращающие создание бессрочной сессии при отсутствии конфигурации.

В каких сценариях применяется

Строгий binding и сессия одного устройства в банкинге

Банковское приложение может хотеть удерживать пользователя на одном устройстве и закрывать сессию при 30 минутах неактивности. Профиль session_strict применяется с политикой IP+UA binding, idle 30 минут, absolute timeout 8 часов и одной одновременной сессией. Если похищенная сессия используется в другом контексте, генерируется сигнал mismatch.

Длительная гибкая сессия в SaaS-приложении

Пользователи B2B SaaS могут хотеть доступ к одной учётной записи с ноутбука, телефона и планшета. Профиль session_relaxed сохраняет пользовательский опыт без binding с длинными значениями idle и absolute timeout. Смена IP или разнообразие устройств не порождают лишней повторной проверки.

IP binding и сессия рабочего дня в корпоративном портале

В портале сотрудника пользователь входит через сеть офиса или VPN и работает в течение рабочего дня без повторного входа. Профиль default может применяться с IP binding, idle timeout 8 часов и absolute timeout 7 дней. Если контекст IP меняется, приложение может запросить повторную проверку.

Лимит одновременных сессий для лицензии одного устройства

Премиум-приложение или лицензированный сервис может хотеть, чтобы учётная запись использовалась одновременно только на одном устройстве. Профиль session_singleDevice сбрасывает старую сессию при новом входе с max 1 concurrent session и поведением logout_oldest. Совместное использование лицензии и неконтролируемое множественное использование затрудняются.

Часто задаваемые вопросы

Что происходит при обнаружении session binding mismatch?
При binding mismatch сессия помечается как подозрительная. Приложение, получив этот сигнал, может принять решение о повторной проверке, проверке дополнительного фактора или завершении сессии. В зависимости от используемого режима binding это обнаружение запускает смена компонента IP, IP+UA или composite.
В чём разница между idle timeout и absolute timeout?
Idle timeout определяет, как долго сессия остаётся действительной с момента последней активности; он обновляется, пока пользователь активен. Absolute timeout же отсчитывается с момента входа, и сколько бы пользователь ни был активен, по истечении этого срока сессия завершается. В банковских и чувствительных приложениях оба лимита должны настраиваться по отдельности.
Включено ли шифрование cookie AES-256-CBC по умолчанию?
Нет. Шифрование cookie по умолчанию выключено; его нужно явно активировать для выбранных оператором cookie. При активации применяется шифрование на стороне response и расшифровка на стороне request. При неудачной расшифровке значение не рассматривается как доверенные данные сессии.
Входят ли защита CSRF и JWT в область этой страницы?
Проверка JWT claim может использоваться вместе с session binding и политикой cookie; содержимое JWT может быть частью процесса проверки сессии. Для session fixation поддерживается ротация session ID после входа.
Что происходит при превышении лимита максимума одновременных сессий?
В зависимости от значения concurrentSessionAction может быть выбрано одно из двух поведений: с logout_oldest самая старая активная сессия завершается и новый вход принимается; с deny_new новый вход отклоняется и существующие сессии сохраняются. Какое поведение уместно, определяется на уровне политики в соответствии со сценарием использования.
Как обеспечивается непрерывность сессии в многоузловой установке TR7?
С помощью совместного использования peer-синхронизации stick-table и централизованного session store на базе Redis session state распространяется на все узлы. В случаях failover или rolling restart потери сессии не происходит. На стороне Redis с помощью AOF и replication можно повысить персистентность и устойчивость.

Выведите безопасность сессий из кода приложения

Генерация session ID, флаги безопасности cookie, IP+UA binding, политика timeout и лимит одновременных сессий под единым policy graph. Проведём вас по живой установке с вашими собственными сервисами.