В первой части мы обсудили правила HBAC и SUDO для ограничения доступа к хостам и предоставления прав на повышение привилегий. Теперь поднимем не менее важные вопросы: мы поговорим о политиках паролей, необходимости обновления учетных данных хостов и способах делегирования прав на ввод хостов в домен рядовым сотрудникам ИТ-службы.
1. Устанавливаем политики паролей
2. Обновляем пароли рабочих станций
3. Делегируем права на ввод хостов в домен
1. Устанавливаем политики паролей
Пароли являются самым простым, но при этом не самым безопасным способом аутентификации, так как их можно подобрать или перехватить, а если не устанавливать дополнительных ограничений по длине и сложности, то каждый двадцатый сотрудник в организации окажется счастливчиком, который угадает комбинацию из Топ-100, типа, 123456, password или qwerty. Совокупность требований к паролям называют также политиками. Чем строже эти требования, тем сложнее злоумышленнику подобрать пароль и воспользоваться результатами успешной атаки, но вместе с тем сложнее и пользователям работать в таком домене. Для разных групп пользователей следует устанавливать разные требования, обеспечивающие компромисс между удобством и безопасностью. И в этом вопросе главное - достичь компромисса с ИБ, поскольку, как известно, если жена хочет на море, а муж - в горы, то все едут загорать, но мужчине разрешают взять с собой лыжи.
Механизм политик паролей в домене ALD Pro (FreeIPA) позволяет для каждой группы пользователей создать отдельный набор правил. Учитывая то, что пользователь может входить сразу в несколько групп, алгоритм проверки выглядит следующим образом:
Из контейнера «cn=cosTemplates,cn=accounts» отбираются шаблоны, под действие которых попадает текущий пользователь в соответствии с его участием в группах. В этих записях содержится минимальное количество информации, а расширенные наборы параметров представлены в контейнере «cn=kerberos» и связаны с шаблонами ссылками через значение атрибута krbPwdPolicyReference.
Если на пользователя не распространяется действие ни одной политики, ему будет назначена глобальная политика (global_policy) по умолчанию.
Если пользователь попадает под действие сразу нескольких политик, то параметры политик не суммируются, а выбирается одна из них, приоритет которой будет иметь наименьшее значение (см. таблицу 1).
Таблица 1. Выбор политики в зависимости от приоритета
Параметр |
Политика для группы А (приоритет 0) |
Политика для группы В (приоритет 1) |
Результат (используются параметры для группы А, приоритет 0) |
Максимальный срок действия |
60 дней |
90 дней |
60 дней |
Минимальная длина |
10 символов |
0 (без ограничений) |
10 символов |
Проверки паролей ограничены возможностями MIT Kerberos, поэтому они поддерживают тот же самый набор параметров (см. таблицу 2).
Таблица 2. Параметры политик паролей
Параметр политики |
Значение глобальной политики по умолчанию |
Максимальный срок действия задает период в количестве дней, в течение которого система не будет требовать смены пароля |
krbMaxPwdLife = 90 Пароль активен 90 дней, после чего пользователю будет предложено сменить его. |
Минимальный срок действия задает период в часах, в течение которого система будет запрещать повторную смену пароля |
krbMinPwdLife = 1 После смены пароля пользователь должен подождать 1 час перед повторной сменой. |
Размер журнала определяет количество предыдущих паролей, которые нельзя использовать повторно |
krbPwdHistoryLength = 0 Запрет на повторное использование паролей не налагается. |
Классы символов – этот параметр, который определяет требование по сложности пароля, указывая сколько разных классов символов должно быть использовано в пароле: цифры;буквы нижнего регистра;буквы верхнего регистра;символы UTF-8;все остальные символы, не вошедшие ни в одну из предыдущих групп, например, ! " # $ % и т.д. Занятно, что при использовании одного и того же символа более двух раз подряд сложность пароля будет занижена на один балл. Например, если сложность пароля «Secret1pwd» будет оценена в три балла (большие буквы + маленькие буквы + цифры), то для пароля «Secret111pwd» сложность снизится до двух баллов (минус штраф за повторы символа «1»). При этом последний символ в пароле не учитывается, поэтому если повторяющиеся символы будут идти в конце строки, то нужно, чтобы их было не меньше четырех «Secretpwd1111», иначе штраф налагаться не будет. |
krbPwdMinDiffChars = 0 Требований по сложности пароля по умолчанию нет. |
Минимальная длина задает минимально допустимое количество символов в пароле. |
krbPwdMinLength = 8 Пользователь не может использовать пароль короче 8 символов. |
Максимальное количество ошибок определяет, сколько раз пользователь может неправильно ввести пароль, прежде чем его аккаунт будет временно заблокирован. Блокировка выполняется только на текущем контроллере, на другие сервера эта информация не передается. |
krbPwdMaxFailure = 6 Пользователь будет временно заблокирован после 7 неверно введенных паролей подряд. Срок блокировки указан в параметре krbPwdLockoutDuration. |
Интервал сброса ошибок задает период в секундах, по истечении которого счетчик неудачных попыток входа будет сброшен. |
krbPwdFailureCountInterval = 60 Если пользователь выждет 1 минуту после 6 неудачных попыток введения пароля, то счетчик неудачных попыток обнулится. |
Длительность блокировки задает период в секундах, в течение которого пользователь не сможет выполнить аутентификацию в домене. Блокировка накладывается после превышения количества разрешенных неудачных попыток входа. Блокировка выполняется только на текущем контроллере, на другие сервера эта информация не передается. |
krbPwdLockoutDuration = 600 Временно заблокированный пользователь не сможет осуществить вход в систему в течение последующих 10 минут. |
Следствием интеграции с MIT Kerberos является возможность использования таких атрибутов, как krbPrincipalExpiration и krbLastSuccessfulAuth. Например, с помощью команды ipa user-mod вы можете установить срок действия учетной записи, после которого пользователю станет недоступна Kerberos аутентификация:
|
где срок действия учетной записи задается в формате временной метки:
2033 – год;
07 – месяц;
25 – день месяца;
115110 – часы, минуты, секунды;
Z – часовой пояс по нулевому (Zero) меридиану.
Стоит заметить, что логирование даты последнего входа по умолчанию отключено из соображений повышения производительности домена, но ее можно включить изменением конфигурации сервера. Для этого потребуется посмотреть текущие настройки и установить новое значение параметра ipaconfigstring, исключив из него значение «KDC:Disable Last Success»:
|
1.1. Повышаем требования к паролям администраторов
Требования глобальной политики довольно лояльны, поэтому для группы администраторов их целесообразно сделать строже. Для этого откройте страницу «Групповые политики > Политики паролей» и нажмите кнопку «+ Новая политика паролей». В поле «Наименование группы пользователей» выберите admins, установите наименьший «Приоритет», равный 0, и нажмите кнопку «Сохранить». Далее вам станет доступна страница управления политикой, где вы можете задать необходимые настройки, как на нижеприведенной иллюстрации. То же самое можно сделать из командной строки:
|
Обратите внимание, изменение максимального срока действия пароля сразу же ни на что не повлияет, т.к. проверка выполняется по значению пользовательского атрибута krbPasswordExpiration, которое устанавливается в момент смены пароля. Текущее значение этого атрибута можно уточнить командой user-show:
|
Таким образом, чтобы изменения в части срока действия паролей вступили в силу, пользователь должен хотя бы один раз сменить свой пароль, но при необходимости вы можете установить значение krbPasswordExpiration вручную с помощью команды user-mod. Это удобно также в тех случаях, когда вам нужно сбросить пользователю пароль, но вы не хотите, чтобы система сразу же требовала смены пароля.
|
2. Обновляем пароли рабочих станций
При вводе компьютера в домен создается учетная запись вида host/pc-1.ald.company.lan, пароль от которой сохраняется в файле /etc/krb5.keytab и используется для проверки Kerberos-билетов при аутентификации пользователей и для получения информации из LDAP-каталога (правила HBAC и SUDO, информация о пользователях и группах и др.). Содержимое keytab-файла можно посмотреть с помощью утилиты klist:
|
В файле находятся AES-ключи, полученные в результате хеширования сложных паролей, но это не защищает от всех видов атак, поэтому их все равно необходимо время от времени менять. Сделать это можно с помощью утилиты ipa-getkeytab, выполнив аутентификацию из-под учетной записи самого компьютера:
|
После смены пароля можно убедиться, что в keytab-файле появилась новая пара ключей следующей версии:
|
3. Делегируем права на ввод хостов в домен
Ввод компьютера в домен ALD Pro осуществляется с помощью утилиты aldpro-client-installer, которая по цепочке вызывает утилиту astra-freeipa-client и скрипт ipa-client-install. Фактически присоединение к домену выполняет именно скрипт ipa, а две других утилиты отвечают за настройку агентов ALD Pro и других служб в соответствии с особенностями операционной системы Astra Linux. Но какой бы скрипт или утилиту вы ни использовали, процедура ввода в домен требует повышенных привилегий, и если вы предоставите учетные данные обычного пользователя, то получите ошибку «Joining realm failed: No permission to join this host to the IPA domain».
В большинстве инструкций для ввода машины в домен предлагают использовать учетную запись администратора домена, что не подходит для крупных организаций с большим штатом ИТ-специалистов, где эту функцию делегируют сотрудникам, не имеющим отношения к администрированию серверной группировки. Правильнее будет выдать данным сотрудникам минимальные права, которых достаточно для выполнения конкретной задачи. Для решения указанной задачи нам потребуется немного погрузиться в механизм работы ролевой модели.
Права доступа в службе каталога FreeIPA назначаются с помощью трехуровневой модели безопасности, которая включает в себя Роли (Roles), Привилегии (Privileges) и Разрешения (Permissions). На низком уровне Разрешениям соответствуют инструкции управления доступом 389 Directory Server (Access Control Instructions, ACI), которые определяют права на добавление, удаление, чтение, запись и другие действия по отношению к конкретным записям и атрибутам каталога. Разрешения группируются в Привилегии, Привилегии объединяются в Роли, а Роли назначаются пользователям.
В системе уже есть Роль «Enrollment Administrator», которая включает Привилегию «Host Enrollment», объединяющую почти все необходимые Разрешения за исключением права на создание хостов «System: Add Hosts», поэтому самым простым способом решения задачи является расширение списка Разрешений указанной Привилегии и назначение роли «Enrollment Administrator» пользователю.
|
Если вы не хотите изменять объекты, созданные в системе по умолчанию, то можно создать новую Роль и новую Привилегию, в которую включить все необходимые Разрешения:
|
После создания Роли ее можно будет назначать пользователям через веб-интерфейс на странице «Управление доменом \ Роли и права доступа \ Роли в системе»
На этом, наверное, пока все. Будем рады вашим комментариям. Команда ALD Pro прикладывает значительные усилия для выработки лучших практик использования продуктов технологического стека, и мы будем рады, если наши наработки помогут вам в реализации программы импортозамещения на вашем предприятии.
Комментарии (5)
hatefastfood_oz
02.09.2023 09:00Очень полезный контент в условиях "импортозамещения". Продолжайте!
AnatolijL
02.09.2023 09:00Большое спасибо за высокую оценку, будем стараться и дальше радовать вас качественными материалами. В настоящий момент готовим к публикации объемный документ, который всесторонне раскрывает механизмы работы компьютера в составе домена через SSSD
MrG00dman
Сделали бы хоть алиас вместо ipa, например ald. А то это это просто описание работы с kerb и ipa :)
AnatolijL
Для обращения к REST API от ALD Pro продуктовая команда разрабатывает отдельные инструменты. В ближайшее время станет доступна утилита для возможности быстрого импорта дополнительных параметров групповых политик, что существенно упростит обмен наработками между участниками сообщества.
beremour
Больше переименований полезных и разных! Больше новых обоев красивых и привлекательных!