- not_set_pass — не устанавливать пароль из этого модуля в качестве пароля для последующих модулей;
- shadow — поддерживать систему теневых паролей;
- unix — помещать пароли в файл /etc/passwd;
- md5 — при следующей смене паролей использовать пароли md5;
- bigcrypt — при следующей смене паролей использовать пароли DECC2;
- nodelay — отключить односекундную задержку при неудачной авторизации.
Модуль pam_rhosts_auth.so разрешает/запрещает использование файлов .rhosts или hosts.equiv. Кроме того, он также разрешает/запрещает использование «опасных» записей в этих файлах. Параметры этого модуля следующие:
- no_hosts_equiv — игнорировать файл /etc/hosts.equiv;
- no_rhosts — игнорировать файл /etc/rhosts или ~/.rhosts;
- debug — протоколировать отладочную информацию;
- nowarn — не выводить предупреждения;
- suppress — не выводить никаких сообщений;
- promiscuous — разрешить использование подстановочного символа «+» в любом поле.
Модуль pam_rootok.so возвращает значение УСПЕХ (SUCCESS) для любого пользователя с нулевым идентификатором. Будучи помечен флагом sufficient, данный модуль позволяет получать доступ к службе без указания пароля. Параметр у модуля всего один: debug.
Модуль pam_securetty.so можно использовать только в отношении суперпользователей. Этот модуль работает с файлом /etc/securetty, позволяя суперпользователю входить в систему только через перечисленные в этом файле терминалы. Если требуется разрешить вход суперпользователя в систему посредством telnet (псевдотерминал ttyp), то следует либо добавить в этот файл строки для ttyp0-255, либо закомментировать вызов pam_securetty.so в файле для службы login.
Модуль pam_shells.so возвращает значение УСПЕХ (SUCCESS), если оболочка пользователя, указанная в файле /etc/passwd, присутствует в списке оболочек из файла /etc/shells. Если файл /etc/passwd не назначает пользователю никакой оболочки, то запускается /bin/sh. Если в файле /etc/passwd для пользователя указана оболочка, отсутствующая в списке /etc/shells, модуль возвращает значение НЕУДАЧА (FAILURE). Правом на запись в файл /etc/shells должен обладать только суперпользователь.
Модуль pam_stress.so используется для управления паролями. У него достаточно много параметров, в том числе и неизменный debug, но в общем случае из всех параметров интерес представляют только два:
- rootok — разрешить суперпользователю менять пароли пользователей без ввода старого пароля;
- expired — с этим параметром модуль выполняется, как если бы срок действия пароля пользователя уже истек.
Другие параметры модуля позволяют отключить любой из этих двух режимов, использовать пароль от другого модуля или передать пароль другому модулю и т. п. Здесь я не буду рассматривать все параметры модуля, поэтому если у вас возникнет потребность в использовании специальных возможностей этого модуля, прочтите их описание в документации модуля.
В МСВС модуль pam_tally.so в файлах из /etc/pam.d по умолчанию не используется. Этот модуль производит подсчет попыток прохождения авторизации. При успешном прохождении авторизации счетчик числа попыток можно обнулять. Если количество неудачных попыток подключения превысило некоторое пороговое значение, доступ можно запретить. По умолчанию сведения о попытках помещаются в файл /var/log/ faillog. Глобальные параметры таковы:
- onerr=[succeed|fail] — что делать, если возникла ошибка, например не удалось открыть файл;
- filе=/полный/путь/и/имя_файла — если отсутствует, то используется файл по умолчанию. Следующий параметр имеет смысл только для типа auth:
- no_magic_root — включает подсчет числа попыток для суперпользователя (по умолчанию не ведется). Полезно, если разрешен вход суперпользователя в систему через telnet. Следующие параметры имеют смысл только для типа account:
- deny=n — отказать в доступе после n попыток. При использовании этого параметра поведение модуля reset/no_reset по умолчанию изменяется с no_reset на reset. Это происходит для всех пользователей, за исключением пользователя root (UID 0), если только не используется параметр no_magic_root;
- no_magic_root — не игнорировать параметр deny для попыток доступа, осуществляемых пользователем root. При использовании совместно с параметром deny= (см. ранее) для пользователя root по умолчанию устанавливается поведение reset, как и для всех остальных пользователей;
- even_deny_root_account — разрешает блокировку учетной записи суперпользователя при наличии параметра no_magic_root. При этом выдается предупреждение. Если параметр no_magic_root не используется, то независимо от числа неудачных попыток учетная запись суперпользователя, в отличие от записей обычных пользователей, никогда не будет заблокирована;
- reset — обнулять счетчик числа попыток при успешном входе;
- no_reset — не обнулять счетчик числа попыток при успешном входе; используется по умолчанию, если только не указан параметр deny=.
Модуль pam_time.so позволяет ограничить доступ к службе в зависимости от времени. Все инструкции по его настройке можно найти в файле /etc/security/ time.conf. Параметров у него нет: все задается в файле конфигурации.
Модуль pam_unix занимается вопросами обычной авторизации МСВС (обычно вместо этого модуля используется pam_pwdb.so). Физически данный модуль состоит из четырех модулей, каждый из которых соответствует одному из типов РАМ: pam_unix_auth.so, pam_unix_session.so, pam_unix_acct.so и pam_unix_passwd.so. Модули для типов account и auth параметров не имеют. У модуля для типа passwd параметр всего один: strict=false. При его наличии модуль не проверяет пароли на стойкость к взлому, позволяя использовать произвольные, в том числе и небезопасные (легко угадываемые или подбираемые) пароли. Модуль для типа session понимает два параметра: debug и trace. Отладочная информация параметра debug помещается в файл журнала отладочной информации, как указано в syslog.conf, а информация параметра trace из-за ее чувствительности — в журнал authpriv.
Модуль pam_warn.so заносит сообщение о своем вызове в syslog. Параметров не имеет.
Модуль pam_wheel.so разрешает становиться суперпользователем только членам группы wheel. Группа wheel — это специальная системная группа, члены которой имеют большие привилегии, чем обычные пользователи, но меньшие, чем суперпользователь. Ее наличие позволяет уменьшить число пользователей системы с привилегиями суперпользователя, сделав их членами группы wheel и тем самым повысив безопасность системы. Если суперпользователь может входить в систему только при помощи терминала, то данный модуль можно использовать для того, чтобы сделать недоступной для пользователей работу через telnet с привилегиями суперпользователя, отказав им в доступе, если они не принадлежат к группе wheelМодуль использует следующие параметры:
- debug — протоколирование отладочной информации;
- use_uid — определение принадлежности на основании текущего идентификатора пользователя, а не того, что был назначен ему при входе в систему;
- trust — в случае принадлежности пользователя к группе wheel возвращать значение УСПЕХ (SUCCESS), а не ИГНОРИРОВАТЬ (IGNORE);
- group=xxx — использовать для авторизации GID ххх, а не GID группы wheel;
- deny — меняет смысл процедуры на противоположный (возврат НЕУСПЕШНО). В комбинации с group= позволяет отказывать в доступе членам данной группы.
ПРИМЕЧАНИЕ -
Каталог /etc/security имеет непосредственное отношение к каталогу /etc/pam.d, поскольку содержит файлы конфигурации различных модулей РАМ, вызываемых в файлах из /etc/pam.d.
Записи РАМ в файлах журналов
Результаты авторизации служб с ограничением доступа протоколируются демоном syslogd, который помещает все сообщения от РАМ в файл /var/log/secure (листинг 1.9).
Листинг 1.9. Содержимое /var/log/secure
Jan 11 16:45:14 chiriqui PAM_pwdb[30022]: (su) session opened for user root
by david(uid=0)
Jan 11 16:45:25 chiriqui PAM_pwdb[30022]: (su) session closed for user root
Jan 11 17:18:06 chiriqui login[13217]: FAILED LOGIN 1 FROM (null) FOR david,
Authentication failure
Jan 11 17:18:13 chiriqui login[13217]: FAILED LOGIN 2 FROM (null) FOR david.
Authentication failure
Jan 11 17:18:17 chiriqui PAM_pwdb[13217]: (login) session opened for user david
by (uid=0)
Jan 11 17:18:06 chiriqui login[13217]: FAILED LOGIN 1 FROM (null) FOR david.
Authentication failure
Jan 11 17:18:13 chiriqui login[13217]: FAILED LOGIN 2 FROM (null) FOR david,
Authentication failure
Jan 11 17:18:17 chiriqui PAM_pwdb[13217]: (login) session opened for user david
by (uid=0)
Jan 11 17:18:17 chiriqui -- david[13217]: LOGIN ON ttyl BY david
Jan 11 17:18:20 chiriqui PAM_pwdb[13217]: (login) session closed for user david
Каждая запись начинается с даты, времени и имени узла. После чего следует имя модуля РАМ и идентификатор процесса, заключенный в квадратные скобки. Затем, в круглых скобках, идет имя службы с ограничением доступа. Для листинга 1.9 это либо su, либо login. После имени службы следует либо «sessionopened» (сеанс открыт), либо «sessionclosed» (сеанс закрыт).
Запись, следующая непосредственно за записью с «sessionopened», является сообщением о входе в систему, из которого можно узнать, кто и откуда вошел в систему.
Безопасность уровня пользователей и групп
Рассматриваются следующие вопросы:
- что такое пользовательская группа по умолчанию и частные пользовательские группы;
- изменение пользователя/группы;
- как изменение пользователя/группы влияет на графический интерфейс;
- безопасность и пользователи;
- безопасность и пароли;
- защита паролей;
- выбор хорошего пароля;
- взлом паролей.
Группа по умолчанию
В настоящее время ограничения на одновременную принадлежность пользователя лишь к одной группе более не существует. Любой пользователь может принадлежать одновременно к нескольким группам. По команде newgrp пользователь становится членом указанной в команде группы, при этом данная группа становится для данного пользователя группой входа в систему (logingroup). При этом пользователь продолжает оставаться членом тех групп, в которые он входил до выполнения команды newgrp. Группа входа в систему является группой, которая становится групповым владельцем файлов, создаваемых пользователем.
Различие между группой по умолчанию и частными группами пользователей заключается в степени открытости этих двух схем. В случае схемы с группой по умолчанию любой пользователь может читать (а часто и изменять) файлы другого пользователя. С частными же группами чтение или запись файла, созданного другим пользователем, возможны лишь, если его владелец явно предоставил права на эти операции остальным пользователям.