Инструментальные средства обеспечения безопасности

Реализация для Linux


Рассмотрим, как можно настроить системную политику в нашей Linux-системе в сравнении с использованием PassFilt.dll под Windows NT. Во-первых, у вас должна быть установлена библиотека cracklib (или libcrack). Эта библиотека проверки паролей, разработанная Алеком Маффетом, является частью установочного комплекта систем Debian, Mandrake, RedHat и SuSE. Для проверки пароля нам необходимо только изменить текст файла, содержащего конфигурацию PAM. Это может быть один из двух возможных файлов:

/etc/pam.conf

или

/etc/pam.d/passwd

Строки в файле /etc/pam.conf, которые относятся к изменению пароля, выглядят примерно так.

passwd password required /lib/security/pam_cracklib.so retry=3 passwd password required /lib/security/pam_unix.so nullok use_authtok

Они логически подразделяются на пять колонок. Первая колонка содержит имя службы - имя программы, на которую распространяются инструкции, прописанные в оставшихся колонках. Файл /etc/pam.d/passwd содержит только четыре колонки, поскольку имя определяет службу passwd. Принятый стиль конфигурации определяет порядок, когда каждое имя службы помещается в отдельный файл, вместо того чтобы использовать один файл для нескольких служб. Независимо от стиля конфигурирования, у службы может быть несколько строк описания. Это выглядит как stacking modules для службы. Ниже приведен пример файла /etc/pam.d/passwd со стеком модулей.

password required /lib/security/pam_cracklib.so retry=3 password required /lib/security/pam_unix.so nullok use_authtok

Первая колонка показывает тип модуля, которому соответствует строка. Строка может содержать один из четырех типов (нас интересует изменение модуля, который управляет изменением пароля).

  • account. Служба управляет действиями, основанными на атрибутах пользователя, такими как проверка полномочий пользователя на доступ и на чтение файла. Например, вы можете использовать описание account для обеспечения доступа к ресурсам, таким как общие файлы. Однако без строки auth пользователь не сможет войти в систему.
  • auth. Обеспечивает взаимодействие с пользователем, например, запрос пароля.
    Такое взаимодействие используется, когда система или ресурс собирается запросить у пользователя разрешение на вход.
  • password. Обновляет аутентификационную информацию, например, изменяет пароль. Не используется для проверки пользователя в системе. Служба разрешает доступ к системе безопасности, которая управляет пользовательскими полномочиями.
  • session. Поддерживает действия, которые происходят до или после работы службы, такие как проверка неудачных попыток входа в систему. Например, может использоваться для немедленного отображения времени дня после того, как пользователь вошел в систему. Первая строка может быть использована для модуля auth проверки пароля пользователя, затем может следовать модуль session, который вызывает модуль pAM для отображения текущего времени. Другой способ использования модуля session может обеспечивать специфические функции, выполняющиеся, когда пользователь войдет в систему, такие как запись строки в системный журнал или истечение срока действия временного идентификатора.


Следующая колонка определяет control для службы, или описывает, как должно поддерживаться ее выполнение. Успешное выполнение означает, что служба выполнила функцию, например такую, как изменение пароля пользователя. Ошибка выполнения означает, что служба не передает корректные данные, такие как пароль пользователя. Ниже приводятся функции управления.

  • requisite. Если работа службы завершилась неудачей, все последующие действия автоматически завершаются неудачно. Это означает, что ни один из модулей в стеке не может быть завершен успешно.
  • required. Если работа службы завершилась неудачно, выполняет последующие действия, но принудительно выдает сообщение о неудачном завершении. Если в стеке присутствуют другие действия, то они могут завершиться успешно, но это не приведет ни к каким изменениям.
  • optional. Если работа службы завершилась неудачно или прошла успешно, выполняются последующие действия. Никак не влияет на результат выполнения последующих действий.
  • sufficient. Если работа службы завершилась успешно и не установлен параметр requisite, или работа этого модуля завершилась неудачно, процесс выполнения завершается с положительным результатом.


Следующая колонка содержит параметр module path для библиотеки аутентификации, которую следует использовать. Этот параметр должен содержать полное имя файла для библиотеки аутентификации. Мы будем использовать cracklib, поэтому убедитесь, что в этой колонке стоит pam_cracklib.so.

Последняя строка содержит аргументы, которые передаются библиотеке аутентификации. Возвращаясь к первому примеру с файлом /etc/pam.conf, мы видим, что модуль pam_cracklib.so должен успешно завершить свою работу с аргументом retry=3, в то время как пользователь меняет пароль с использованием программы passwd.

passwd password required /lib/security/pam_cracklib.so retry=3


Содержание раздела