Включение продвинутой защиты от брутфорс-атаки

Продукт «Служба идентификации и управления доступом "Фидена"» позволяет включить защиту не только на уровне области безопасности (realm), но и выполнить дополнительную конфигурацию защиты для конкретных пользователей, которым назначены определенные роли.

Настроить опцию продвинутой защиты от брутфорс-атаки можно только при условии, что включена стандартная защита на уровне области безопасности (realm).

Для этого выберите роль и задайте для нее необходимые атрибуты:

  • bruteforce_protection.enabled — флаг, позволяющий отключить возможность блокировки пользователя при переборе неверных паролей:

    • true — включает переопределенную настройку защиты; прочие значения игнорируются;

    • false — отключает для обладателей данной роли блокировку при попытках перебора пароля вне зависимости от прочих настроек;

  • bruteforce_protection.permanent_lockout — флаг, устанавливающий тип блокировки:

    • true — устанавливает постоянную блокировку пользователей;

    • false — устанавливает временную блокировку; прочие значения параметра или его отсутствие интерпретируется как значение false;

  • bruteforce_protection.max_login_failures — количество неудачных попыток ввода пароля перед блокировкой — целое число (нецелочисленные значения параметра или его отсутствие интерпретируется как 30);

  • bruteforce_protection.quick_login_check_ms — минимальное время между попытками ввода неверного пароля в миллисекундах (нецелочисленные значения параметра или его отсутствие интерпретируется как 1000, 1 секунда или 1000 миллисекунд); в случае если интервал между неудачными попытками ввода пароля меньше значения данного параметра, осуществляется временная блокировка пользователя на временной интервал из параметра bruteforce_protection.min_quick_login_wait_sec. Данное правило применяется всегда при включенной защите от брутфорс-атак вне зависимости от выбранного типа блокировки (временная или постоянна) в параметре bruteforce_protection.permanent_lockout.

  • bruteforce_protection.min_quick_login_wait_sec — минимальное время, в течение которого пользователю будет недоступен ввод пароля, при попытках входа в систему чаще, чем установлено в предыдущем параметре, в секундах (нецелочисленные значения параметра или его отсутствие интерпретируется как 60, 1 минута или 60 секунд);

  • bruteforce_protection.wait_increment_sec — используется только при временной блокировке пользователей; интервал, на который увеличивается время блокировки учетной записи пользователя, после того как будет превышено число попыток ввода неверного пароля, в секундах (нецелочисленные значения параметра или его отсутствие интерпретируется как 60, 1 минута или 60 секунд);

  • bruteforce_protection.max_wait_sec — используется только при временной блокировке пользователей; максимальное время, в течение которого учетная запись пользователя может быть заблокирована, в секундах (нецелочисленные значения параметра или его отсутствие интерпретируется как 900, 15 минут или 900 секунд);

  • bruteforce_protection.failure_reset_time_sec — используется только при временной блокировке пользователей; время, по истечении которого будет обнулен счетчик неудачных попыток ввода пароля, в секундах (нецелочисленные значения параметра или его отсутствие интерпретируется как 43200, 12 часов или 43200 секунд).

Чтобы назначить роль (как клиента области безопасности (realm), так и самой области безопасности (realm) пользователю, выберите один из следующих способов:

  • прямое присвоение роли пользователю;

  • присвоение роли пользователю через композитную роль области безопасности (realm);

  • присвоение пользователю ролей через группу пользователей, обладающих данными ролями (с учетом родительских и дочерних групп).

Вы можете присвоить учетной записи пользователя одновременно несколько ролей с переопределенными параметрами защиты от брутфорс-атак.

С учетом этих особенностей алгоритм выбора защиты от брутфорс-атак выглядит следующим образом:

  1. Для учетной записи пользователя, который неправильно ввел пароль, осуществляется поиск всех ролей (с учетом наследования через композитные роли и группы пользователей), обладающих атрибутами защиты.

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

    1. Настройка с явно отключенной защитой является более приоритетной по сравнению с другими.

    2. Настройка с временной блокировкой пользователей является более приоритетной, по сравнению с постоянной блокировкой.

    3. Среди настроек с одинаковым типом блокировки (временной, постоянной) более приоритетной считается настройка с наибольшим числом попыток неудачного ввода пароля.

  3. Выбранная настройка защиты применяется к пользователю по аналогии со штатным механизмом защиты Keycloak.

  4. Если для конкретного пользователя не нашлось настроек защиты от такого типа атак, то исполняется настройка защиты для всей области безопасности (realm) — штатный механизм защиты Keycloak.

Данный алгоритм позволяет установить наиболее надежные (строгие) параметры защиты от брутфорс-атак на уровне области безопасности (realm), а также ослабить их для пользователей с определенными ролями/группами.

Настройка защиты с помощью ролей

  1. На главной странице из выпадающего списка выберите область безопасности (realm), для которой вы хотите выполнить настройку.

  2. Выберите роль, для которой вы хотите назначить атрибут:

    • Если это роль уровня области безопасности (realm):

      1. В главном меню выберите пункт Realm roles.

      2. На открывшейся форме Realm roles выберите роль, для которой вы хотите назначить атрибут.

        assign atribute to role 1
    • Если это роль уровня клиента области безопасности (realm):

      1. В главном меню выберите пункт Clients и перейдите на форму настроечных параметров необходимого клиента.

      2. На форме Clients перейдите на вкладку Roles и выберите роль, для которой вы хотите назначить атрибут.

        assign atribute to role 3
  3. На форме настроечных параметров роли перейдите на вкладку Attributes.

  4. В поле Key задайте необходимый атрибут.

  5. В поле Value укажите значение этого атрибута.

  6. Используйте кнопку Add an attribute, чтобы добавить еще аттрибут и его значение.

  7. Подтвердите свои действия, нажав на кнопку Save.

    assign atribute to role 2

Настройка защиты с помощью композитных ролей

  1. На главной странице из выпадающего списка выберите область безопасности (realm).

  2. В главном меню выберите пункт Realm roles.

  3. На открывшейся форме Realm roles выберите композитную роль, для которой вы хотите назначить атрибут.

    assign atribute to composite role
  4. Назначьте атрибуты для композитной роли целиком, как показано в п. 4 - 8 или назначьте для композитной роли те роли, для которых уже заданы необходимые атрибуты, для этого:

    1. Перейдите на вкладку Associated roles.

    2. Нажмите на кнопку Assign role.

      assign role to composite role 1
    3. На открывшейся форме Assign roles to <название роли> выберите роли, которые вы хотите включить в состав композитной:

      1. Используйте фильтр Filter by realm roles, чтобы назначить роли уровня области безопасности.

      2. Используйте фильтр Filter by clients, чтобы назначить роли уровня клинта.

      3. Нажмите на кнопку Assign — выбранные роли будут назначены.

        assign role to composite role 2

Назначение аттрибута для групп пользователей

  1. На главной странице из выпадающего списка выберите область безопасности (realm).

  2. В главном меню выберите пункт Groups.

  3. На открывшейся форме Groups создайте (кнопка Create group) или выберите группу пользователей, для которой вы хотите назначить атрибут.

    assign atribute to group 1
  4. На форме настроечных параметров группы пользователей перейдите на вкладку Role mapping.

  5. Нажмите на кнопку Assign role

    assign role to group 1
    1. На открывшейся форме Assign roles to <название роли> выберите роли, которые вы хотите включить в состав группы:

      1. Используйте фильтр Filter by realm roles, чтобы назначить роли уровня области безопасности.

      2. Используйте фильтр Filter by clients, чтобы назначить роли уровня клинта.

      3. Нажмите на кнопку Assign — выбранные роли будут назначены.

        assign role to group 2