Файлы теневых паролей имеют ограниченные права доступа, которые предотвращают их прочтение злоумышленниками. Зашифрованный пароль хранится только в файле теневых паролей, /etc/shadow, но не в файле /etc/ passwd.

Файл passwd доступен для чтения всем приложениям и пользователям, поскольку содержит информацию, востребованную самыми разнообразными программами. Файл shadow может быть прочитан только администратором и не дублирует сведения, хранящиеся в passwd. Он содержит только пароли и информацию, необходимую для работы с ними. В системе Solaris запись файла shadow имеет следующий формат:

username:password:lastchg:min:max:warn:inactive:expire: flag

username - регистрационное имя пользователя, password - зашифрованный пароль либо, в случае системы Solaris, одно из ключевых слов NP и *LK*. lastchg - дата последней смены пароля, записанная в виде числа дней, истекших с 1 января 1970 года до дня смены пароля, min - минимальное число дней, по истечении которого разрешено сменить пароль, max - число дней, по истечении которого пользователь обязан сменить пароль, warn - число дней до истечения срока действия пароля, за которое пользователь получает предупреждение, inactive - число дней бездействия учетной записи, по истечении которых происходит ее блокировка, expire - дата истечения действия учетной записи. Поле flag не используется.

Зашифрованный пароль хранится только в этом файле. Все поля паролей в файле /etc/passwd содержат букву х, которая сообщает системе, что настоящие пароли следует искать в файле /etc/shadow, содержащем зашифрованный пароль либо ключевые слова NP или *LK*. Ключевое слово NP означает отсутствие пароля и возможности регистрации в системе посредством данной

учетной записи. Системные учетные записи, такие как daemon и ииср, не позволяют пользователю работать с системой, поэтому в их полях паролей содержится ключевое слово NP. *LK* в поле пароля означает, что учетная запись блокирована и не может использоваться в принципе.


Подобные ситуации в других системах обозначаются по-разному; в частности, некоторые системы Linux используют символы * и ! !. Однако во всех системах существует способ отличить активные учетные записи пользователей от учетных записей прочих типов.

Наиболее важной целью применения файла shadow является защита пароля, но дополнительные поля этого файла могут использоваться для решения сопутствующих задач системы безопасности. Механизм устаревания паролей (password aging) позволяет определить время действия для каждого пароля. Когда допустимое время использования пароля подходит к концу, механизм устаревания уведомляет пользователя о том, что пароль необходимо сменить. Если смена пароля не произошла в отведенный период времени, пароль удаляется из системы, а учетная запись пользователя блокируется.

В механизме устаревания паролей задействованы поля lastchg, max и warn. С их помощью система узнает, когда в последний раз менялся пароль, сколько его следует хранить, а также когда следует уведомить пользователя о нависшей над ним опасности. Поле min файла теневых паролей предоставляет еще одну удобную возможность и более тонкий аспект устаревания паролей.

Оно запрещает пользователю менять свой любимый пароль на любой другой, а потом сразу обратно. После смены пароля он должен использоваться в течение числа дней, определенного полем min, прежде чем будет разрешено сменить его снова. Таким образом, можно запретить пользователям проделывать популярный трюк, позволяющий избежать действительной смены пароля. Поля inactive и expire способствуют исключению из системы незадействованных учетных записей. В данном случае «бездействие» определяется числом дней, в течение которого учетная запись пользуется устаревшим паролем. После устаревания пароля пользователь получает определенный срок для входа в систему и смены пароля. Если пользователь не сделает этого до истечения указанного числа дней, учетная запись блокируется и пользователь теряет возможность работать с системой.


Поле expi re позволяет создавать учетные записи пользователей с ограниченным временем «жизни». По наступлении даты, хранимой в поле expire, учетная запись пользователя блокируется, даже если все еще является активной. Дата прекращения действия учетной записи хранится в виде числа дней, истекших с 1 января 1970 года.

В системе Solaris файл /etc/shadow не редактируется напрямую. Его правка выполняется посредством окна Users инструмента admintool либо специальных ключей командной строки passwd. Окно Users представлено на рис. 12.1. Можно наблюдать поля username, password, min, max, warn, inactive и expire. Ключи -n min, -w warn и -x max команды passwd системы Solaris позволяют ука- зывать значения полей min, max и warn для файла /etc/shadow. Перечисленные ключи доступны только пользователю root. В данном примере администратор ограничивает время жизни пароля пользователя Tyler сроком в 180 дней:

  • passwd -х 180 tyler

Система Solaris позволяет администратору установить значения по умолчанию для всех подобных параметров, чтобы не указывать их каждый раз при создании пользователя посредством admintool или командной строки passwd. Значения по умолчанию сохраняются в файле /etc/default/passwd.

% cat /etc/default/passwd 
#ident "@(#)passwd.dfl 1.3 92/07/14 SMI " 
MAXWEEKS = 
MINWEEKS = 
PASSLENGTH= 6

В файле /etc/default/passwd могут устанавливаться следующие значения по умолчанию:

MAXWEEK S

Максимальная продолжительность жизни пароля. Срок определяется в неделях, а не днях. Период в 180 дней из приведенного выше примера можно определить при помощи этого параметра как MAXWEEKS=26.

MINWEEKS

Минимальное число недель использования пароля до его смены. PASSLENGTH Минимальное ограничение на число символов в пароле. В приведенном примере минимальная длина пароля - 6 символов. В системе Solaris значимыми являются лишь 8 первых символов пароля, и установка большего значения не меняет этого факта.

WARNWEEK S

Число недель до окончательного устаревания пароля, за которое пользователь получает предупреждение.

В данном разделе приведен пример для системы Solaris. Система теневых паролей входит в состав операционной системы Solaris. Она также включается в дистрибутивы Linux. Описанный здесь файл shadow в системе Linux имеет в точности такой же формат и действует точно таким же образом.

Задача расшифровки зашифрованного пароля невероятно сложна, однако шифрованные пароли могут подвергаться сравнению с зашифрованными словами из словаря. Поэтому применение слабых паролей облегчает их угадывание. Позаботьтесь о защите файла /etc/passwd и пользуйтесь качественными паролями.