Пользователи, группы и безопасность
В даннойглаве рассматриваются следующие вопросы:
— пользователи;
– различия между привилегированными инепривилегированными пользователями;
– файлы входа в систему;
– файл /etc/passwd;
– файл /etc/shadow;
– файл /etc/gshadow;
– файл /etc/login.defs;
– модификация сведений об устареваниипаролей;
– РАМ.
В основебезопасности МСВС лежат концепции пользователей и групп. Все решения о том, чторазрешается или не разрешается делать пользователю, принимаются на основаниитого, кем является вошедший в систему пользователь с точки зрения ядраоперационной системы.
Общий взгляд на пользователей
МСВСявляется многозадачной многопользовательской системой. В обязанностиоперационной системы входят изоляция и защита пользователей друг от друга.Система следит за каждым из пользователей и, исходя из того, кем является этотпользователь, определяет, можно ли предоставить ему доступ к тому или иномуфайлу или разрешить запуск той или иной программы.
Присоздании нового пользователя ему ставится в соответствие уникальное имя
ПРИМЕЧАНИЕ
Система определяетпривилегии пользователя на основании идентификатора пользователя (user ID, UID). В отличие отимени пользователя, UID может и не быть уникальным, в этом случае длясопоставления ему имени пользователя берется первое найденное имя, UID которого совпадаетс данным.
Каждомуновому регистрируемому в системе пользователю ставятся в соответствиеопределенные элементы системы.
Привилегированные и непривилегированные пользователи
Придобавлении нового пользователя в систему ему выделяется специальный номер,называемый идентификатором пользователя (user ID, UID). В Caldera МСВС выделение идентификаторов новымпользователям начинается с 500 и продолжается в сторону больших чисел, вплотьдо 65 534. Номера до 500 зарезервированы для системных учетных записей.
В общеми целом идентификаторы с номерами, меньшими 500, ничем не отличаются отостальных идентификаторов. Часто программе для нормального функционированиятребуется специальный пользователь с полным доступом ко всем файлам.
Нумерацияидентификаторов начинается с 0 и продолжается до 65 535. UID 0 — это особенный UID. Любой процесс или пользователь снулевым идентификатором является привилегированным. Такой человек или процессимеет неограниченную власть над системой. Ничто не может служить для негозапретом. Учетная запись root(учетная запись, UID которой равен0), также называемая учетной записью суперпользователя, делает вошедшегос ее использованием если не владельцем, то как минимум его доверенным лицом.
ОстаетсяUID, равный 65 535. Он тоже не изобычных. Этот UID принадлежит пользователю nobody (никто).
Когда-тоодним из способов взлома системы было создание пользователя с идентификатором65 536, в результате чего он получал привилегии суперпользователя.Действительно, если взять любой UID иперевести соответствующее число в двоичную форму, то получится комбинация изшестнадцати двоичных разрядов, каждый из которых равен либо 0, либо 1.Подавляющее количество идентификаторов включают в себя как нули, так и единицы.Исключением является нулевой UIDсуперпользователя, состоящий из одних нулей, и UID nobody, равный 65535 и состоящий из 16 единиц, то есть1111111111111111. Число 65 536 нельзя разместить в 16 разрядах — дляпредставления этого числа в двоичной форме требуется использовать уже 17разрядов. Самый старший разряд будет равен единице (1), все остальные равнынулю (0). Так что же происходит при создании пользователя с идентификаторомдлиной в 17 двоичных разрядов — 10000000000000000? Теоретически, пользователь снулевым идентификатором: поскольку под идентификатор отводится лишь 16 двоичныхразрядов, 17 разряд хранить негде, и он отбрасывается. Стало быть, единственнаяединица идентификатора теряется, и остаются одни нули, а в системе появляетсяновый пользователь с идентификатором, а значит, и привилегиями,суперпользователя. Но теперь же в МСВС нет программ, которые позволили бы вамустановить UID в 65 536.
ПРИМЕЧАНИЕ
Пользователей сидентификаторами, превышающими 65 536, создавать можно, но использовать их безподмены /bin/login не получится.
Любойвзломщик обязательно постарается получить привилегии суперпользователя. Кактолько он их получит, дальнейшая судьба системы полностью будет зависеть от егонамерений. Возможно, он, удовлетворившись самим фактом взлома, не сделает с нейничего плохого и, послав вам письмо с описанием найденных им дыр в системебезопасности, навсегда оставит ее в покое, а возможно, и нет. Если намерениявзломавшего хакера не столь чисты, то тогда лучшее, на что можно надеяться, —это выведение системы из строя.
Файл /etc/passwd
Желающийвойти в систему должен ввести имя пользователя и пароль, которые проверяются побазе данных пользователей, хранящейся в файле /etc/passwd.В нем, кроме всего прочего, хранятся пароли всех пользователей. При подключениик системе введенный пароль сверяется с паролем, соответствующим данному имени,и в случае совпадения пользователь допускается в систему, после чегозапускается программа, указанная для данного имени пользователя в файлепаролей. Если это командная оболочка, пользователь получает возможность вводитькоманды.
Рассмотримлистинг 1.1. Это файл passwdв старом стиле.
Листинг1.1. Файл /etc/passwd в старом стиле
root: *:1i DYwrOmhmEBU: 0:0: root:: /root: /bin/bash
bin:*:1:1:bin:/bin:
daemon:*:2:2:daemon:/sbin:
adm:*:3:4:adm:/var/adm:
lp:*:4:7:lp:/var/spool/lpd:
sync:*:5:0:sync:/sbin:/bin/sync
shutdown:*:6:11:shutdown:/sbin:/sbin/shutdown
halt:*:7:0:halt:/sbin:/sbin/halt
mail:*:8:12:mail:/var/spool/mail:
news:*:9:13:news:/var/spool/news:
uucp:*:10:14:uucp:/var/spool/uucp:
operator:*:11:0:operator:/root:
games:*:12:100:games:/usr/games:
gopher:*:13:30:gopher:/usr/1ib/gopher-data:
ftp:*:14:50:FTP User:/home/ftp:
man:*:15:15:Manuals Owner:/:
majordom:*:16:16:Majordomo:/:/bin/false
postgres:*:17:17:Postgres User:/home/postgres:/bin/bash
mysql:*:18:18:MySQL User:/usr/local/var:/bin/false
silvia:1iDYwrOmhmEBU:501:501:Silvia Bandel:/home/silvia:/bin/bash
nobody:*:65534:65534:Nobody:/:/bi n/false
david:1iDYwrOmhmEBU:500:500:David A. Bandel :/home/david:/bin/bash
Файлпаролей имеет жестко заданную структуру. Содержимое файла представляет собойтаблицу. Каждая строка файла — это запись таблицы. Каждая запись состоит изнескольких полей. Поля файла passwd,разделяются двоеточием, поэтому двоеточия нельзя использовать ни в одном изполей. Всего имеется семь полей: имя пользователя, пароль, идентификаторпользователя, идентификатор группы, поле GECOS (оно же поле комментариев), домашний каталог икомандная оболочка входа в систему.
Подробнее о /etc/passwd
В первомполе указывается имя пользователя. Оно должно быть уникальным — нельзя, чтобыдва пользователя системы имели одно и то же имя. Поле имени являетсяединственным полем, значение которого должно быть уникальным. Во втором поле хранитсяпароль пользователя. Для того чтобы обеспечить защиту системы, пароль хранитсяв хэшированном виде. Термин «хэшированный» в данном контексте означает«зашифрованный». В случае с МСВС пароль шифруется по алгоритму DES (Data Encryption Standard). Длина хэшированного пароля в этомполе всегда равна 13 символам, причем некоторые из символов, такие какдвоеточие и одинарная кавычка, никогда не встречаются среди них. Любое другоезначение поля, отличное от правильного хэшированного 13-символьного пароля,делает невозможным вход данного пользователя в систему, за одним чрезвычайноважным исключением: поле пароля может быть пустым.
Вовтором поле не стоит ничего, даже пробела, это означает, что соответствующемупользователю не нужен пароль для входа в систему. Если изменить пароль,хранящийся в поле, добавив к нему какой-либо символ, например одинарнуюкавычку, то данная учетная запись окажется заблокированной, а соответствующийпользователь не сможет войти в систему. Дело в том, что после добавления в14-символьный хэшированный пароль нелегального символа система отказываласьаутентифицировать пользователя с таким паролем.
Внастоящее время длина пароля ограничена восьмью символами. Пользователь можетвводить и более длинные пароли, однако значимыми будут только первые восемьсимволов. Первые два символа хэшированного пароля являются затравкой (salt). (Затравкой называется число,используемое для инициализации алгоритма шифрования. При каждой смене паролязатравка выбирается случайным образом.) В результате число всех возможныхперестановок достаточно велико, поэтому выяснить, есть ли в системе пользователис одинаковыми паролями, простым сравнением хэшированных паролей нельзя.
ПРИМЕЧАНИЕ
Атака по словарю (dictionary attack) относится кметодам взлома паролей грубой силой и подразумевает использование словаря иизвестной затравки. Атака состоит в переборе всех слов словаря, шифрования их сданной затравкой и сравнении результата со взламываемым паролем. При этом кромеслов из словаря обычно рассматриваются и некоторые их модификации, например,все буквы заглавные, только первая буква заглавная и добавление чисел (обычнотолько 0-9) в конец всех этих комбинаций. Подобным образом можно взломатьдостаточно много легко угадываемых паролей.
Втретьем поле указывается идентификатор пользователя. Идентификатор пользователяне обязан быть уникальным. В частности, кроме пользователя root, может быть сколь угодно других пользователейс нулевым идентификатором, и все они будут обладать привилегиямисуперпользователя.
Четвертоеполе содержит идентификатор группы (Group ID, GID). Группа, указанная в этом поле, называетсяпервичной группой пользователя (primary group). Пользователь может принадлежать к несколькимгруппам, но одна из них обязательно должна быть первичной группой.
Пятоеполе теперь называют полем комментариев, но первоначальное его название — GECOS, от «GE Consolidated Operating System». При запросе информации о пользователе через finger или иную программу содержимоеданного поля теперь возвращается как истинное имя пользователя. Полекомментариев может быть пустым.
Шестоеполе задает домашний каталог пользователя. У каждого пользователя должен бытьсвой домашний каталог. Обычно пользователь, войдя в систему, оказывается всвоем домашнем каталоге, но если такового не существует, то он попадает вкорневой каталог.
Седьмоеполе задает командную оболочку входа в систему. Не всякую оболочку можноуказать в этом поле. В зависимости от настроек системы в нем может быть указанатолько оболочка из списка допустимых оболочек. В МСВС список допустимыхоболочек находится по умолчанию в файле /etc/shells.
Файл /etc/shadow
Владельцемфайла /etc/shadow является пользователь root и только он имеет право читать этот файл. Для егосоздания нужно взять имена пользователей и хэши-рованные пароли из файла passwd и поместить их в файл shadow, заменив при этом все хэшированныепароли в файле passwd символами х.Если посмотреть на файл passwdсистемы, то можно увидеть, что на месте хэшированных паролей там стоят символых. Данный символ указывает системе на то, что пароль следует смотреть не здесь,а в файле /etc/shadow. Переход от простых паролей к теневым и обратноосуществляется посредством трех утилит. Для перехода к теневым паролям сначала запускаетсяутилита pwck. Она проверяет файл passwd на предмет всяких аномалий, из-закоторых следующий шаг может закончиться неудачей или попросту зациклиться.После того как отработает pwck,запускается утилита pwconv длясоздания /etc/shadow. Обычно это делается после ручного обновления файла /etc/passwd. Для возвращения к обычным паролям запускается pwuncov.
Файлтеневых паролей во многих отношениях схож с файлом обычных паролей. Вчастности, первые два поля этих файлов одинаковы. Но помимо этих полей в нем,естественно, есть и дополнительные поля, отсутствующие в файле обычных паролей.Листинг 1.2. показывает содержимое типичного файла /etc/shadow.
Листинг1.2. Файл /etc/shadow
root:1iDYwrOmhmEBU:10792:0:: 7:7::
bin:*:10547:0::7:7::
daemon:*:10547:0::7:7::
adm:*:10547:0::7:7::
lp:*:10547:0::7:7::
sync:*:10547:0::7:7::
shutdown:U:10811:0:-1:7:7:-1:134531940
halt:*:10547:0::7:7::
mail:*:10547:0::7:7::
news:*:10547:0::7:7::
uucp:*:10547:0::7:7::
operator:*:10547:0::7:7::
games:*: 10547:0: :7:7::
gopher:*:10547:0::7:7::
ftp:*:10547:0::7:7::
man:*:10547:0::7:7::
majordom:*:10547:0::7:7::
postgres:*:10547:0::7:7::
mysql:*:10547:0::7:7::
si1via:1iDYwrOmhmEBU:10792:0:30:7:-l::
nobody:*:10547:0::7:7::
david:1iDYwrOmhmEBU:10792:0::7:7::
Подробнее о /etc/shadow
Назначениепервого поля файла shadow такое же,как и у первого поля файла passwd.
Второеполе содержит хэшированный пароль. Реализация теневых паролей в МСВС допускаетхэшированные пароли длиной от 13 до 24 символов, однако программа шифрованияпаролей crypt умеет выдавать только 13-символь-ныехэшированные пароли. Символы, используемые в хэше, берутся из набора,состоящего из 52 букв алфавита (строчных и прописных), цифр 0-9, точки инаклонной черты вправо (/). Итого выходит 64 символа, допустимых в полехэшированного пароля.
Затравка,таким образом, которая, как и ранее, представляет собой первые два символа,может выбираться из 4096 возможных комбинаций (64×64). Для шифрованияиспользуется алгоритм DES с56-битным ключом, то есть пространство ключей этого алгоритма насчитывает 256ключей, что приблизительно равно 72 057 590 000 000 000 или 72 квадрильонам. Числовыглядит впечатляюще, однако перебрать все ключи из пространства такого размераможно на самом деле за весьма короткое время.
Стретьего поля начинается информация об устаревании пароля. В нем хранится числодней, прошедших с 1 января 1970 года до дня последнего изменения пароля.
Четвертоеполе задает минимальное число дней, которые должны пройти, прежде чем можнобудет вновь изменять пароль. Пока со дня последнего изменения пароля не пройдетстолько дней, сколько указанно в этом поле, вновь изменять пароль нельзя.
Пятоеполе задает максимальное число дней, в течение которых можно использоватьпароль, после чего он подлежит обязательной смене. При положительном значенииэтого поля попытка пользователя войти в систему после истечения срока действияпароля приведет к тому, что команда password будет запущена не как обычно, а в режиме обязательной сменыпароля.
Значениеиз шестого поля определяет, за сколько дней до окончания срока действия пароляследует начать выдавать предупреждение об этом. Получив предупреждение,пользователь может начать придумывать новый пароль.
Седьмоеполе задает число дней, начиная со дня обязательной смены пароля, по истечениикоторых данная учетная запись блокируется.
Впредпоследнем поле хранится день блокировки учетной записи.
Последнееполе зарезервировано и не используется.
Подробнее о /etc/group
Каждаязапись файла /etc/group состоит из четырех полей, разделенных двоеточиями.Первое поле задает имя группы. Подобно имени пользователя.
Второеполе обычно всегда пустое, так как механизм паролей для групп обычно неиспользуется, однако если данное поле не пусто и содержит пароль, то к группеможет присоединиться любой пользователь. Для этого нужно выполнить команду newgrp с именем группы в качествепараметра, после чего ввести правильный пароль. Если пароль для группы незадан, то присоединиться к ней могут только пользователи, перечисленные всписке членов группы.
Третьеполе задает идентификатор группы (Group ID, GID). Смысл его такой же, как и уидентификатора пользователя.
Последнееполе представляет собой список имен пользователей, принадлежащих к группе.Имена пользователей перечисляются через запятую без пробелов. Первичная группапользователя указывается (в обязательном порядке) в файле passwd и назначается при подключениипользователя к системе исходя из этой информации. Соответственно, если изменитьпервичную группу пользователя в файле passwd, то пользователь более не сможет присоединиться к своей бывшей первичнойгруппе.
Файл /etc/login.defs
Добавитьнового пользователя в систему можно несколькими способами. В МСВС для этого используютсяследующие программы: coastooL, LISA, useradd. Подойдет любая из них. Утилита COAS использует свой собственный файл. Апрограммы useradd и LISA берут информацию о значениях по умолчанию для полейфайлов passwd и shadow из файла /etc/login.defs. Содержимое этого файла в сокращенной форме показанов листинге 1.4.
Листинг1.4. Сокращенныйфайл /etc/login.defs
#Максимальноеколичество дней, в течение которого разрешается использовать пароль:
#(-1 — сменапароля не обязательна) PASS_MAX_DAYS -1
Минимальное количестводней между сменами пароля: PASS_MIN_DAYS О
#За какоеколичество дней до даты смены пароля должно выдаваться предупреждение: PASS_WARN_AGE 7
#Какое количестводней должно пройти после истечения допустимого срока использования пароля, преждечем учетная запись будет блокирована: PASS_INACTIVE -1
# Форсировать истечение срокаиспользования пароля в заданный день:
# (датаидентифицируется количеством дней после 70/1/1, -1 = не форсировать) PASS_EXPIRE -1
###
# Значения полей создаваемой учетнойзаписи для программы useradd
# группа по умолчанию: GROUP 100
# домашний каталог пользователя: %s = имя пользователя) НОMЕ /home/%s
# командная оболочка по умолчанию: SHELL /bin/bash
# каталог, в котором расположен скелетдомашнего каталога: SKEL /etc/skel
# минимальное и максимальное значениядля автоматического выбора gid в groupadd GID_MIN 100
GID_MAX 60000
Содержимоеэтого файла задает значения по умолчанию для полей файлов passwd и shadow. Если не переопределить их из командной строки, будутиспользованы именно они. Как отправная точка, эти значения вполне подойдут,однако для реализации устаревания паролей некоторые из них нужно будет изменить.Значение, равное -1, означает отсутствие ограничений.
Впрограмме COAS дистрибутива Caldera используется графический интерфейспользователя л то
Изменение информации об устаревании пароля
Дляизменения информации об устаревании пароля для одного или двух пользователейможно воспользоваться командой chage(change aging — изменить устаревание). Непривилегированныепользователи могут запускать chageтолько с параметрами -l исобственным именем пользователя, то есть запрашивать информацию об устареваниитолько собственного пароля. Для изменения информации об устаревании достаточноуказать имя пользователя, остальные параметры будут запрошены в диалоговомрежиме. Вызов chage без параметров выдаст краткуюсправку об использовании.
ПрограммаCOAS может использоваться с цельюизменения параметров устаревания паролей для каждой из учетных записей поотдельности. При этом значения указываются в днях. Интерфейс программыочевиден.
ПРИМЕЧАНИЕ –
Для полученияинформации об устаревании пароля пользователя или форсирования этого процессаможно воспользоваться командой expiry.
Система безопасности РАМ
Основнаяидея РАМ состоит в том, что всегда можно написать новый модуль безопасности,который бы обращался к файлу или устройству за информацией и возвращалрезультат выполнения процедуры авторизации: УСПЕХ (SUCCESS), НЕУДАЧА (FAILURE) или ИГНОРИРОВАТЬ (IGNORE). А РАМ, в свою очередь, возвратит УСПЕХ (SUCCESS) или НЕУДАЧА (FAILURE) вызвавшей ее службе. Таким образом, неважно, какиепароли, теневые или обычные, используются в системе, если в ней есть РАМ: всеподдерживающие РАМ программы будут прекрасно работать и с теми и другими.
Перейдемтеперь к рассмотрению основных принципов работы РАМ. Рассмотрим листинг 1.6. Вкаталоге /etc/pam.dсодержатся файлы конфигурации и для других служб, таких как su, passwd и т. п., в зависимости от того, какое программноеобеспечение установлено в системе. Каждой службе с ограничением доступа (restricted service) соответствует свой файл конфигурации. Если таковогонет, то данная служба с ограничением доступа попадает в категорию «other», с файлом конфигурации other.d. (Службой с ограничением доступа называется любая служба илипрограмма, для использования которой требуется пройти авторизацию. Инымисловами, если при нормальных условиях служба запрашивает у вас имя пользователяи пароль, она является службой с ограничением доступа.)
Листинг1.6. Файл конфигурации службы login
auth required pam_securetty.so
auth required pam_pwdb.so
auth required pam_nologin.so
#auth required pam_dialup.so
auth optional pam_mail.so
account required pam_pwdb.so
session required pam_pwdb.so
session optional pam_lastlog.so
password required pam_pwdb.so
Каквидно из листинга, файл конфигурации состоит из трех столбцов. Строки,начинающиеся с символа решетки (#), игнорируются. Стало быть, модуль pam_dialup (четвертая строка листинга 1.6.) будет пропущен. Вфайле есть строки с одинаковым третьим полем — pam_pwd.so, и первым — auth. Использование нескольких строк с одинаковым первымполем называется накоплением (stacking) модулей и позволяет получать многошаговую авторизацию (стек модулей),включающую несколько различных процедур авторизации.
/>
Типы модулей РАМ
Первыйстолбец является столбцом типа. Тип определяется одной из четырех символьныхметок: auth, account, sessionи password. Содержимое всех столбцоврассматривается без учета регистра.
— Тип auth (authentication — аутентификация) используется длявыяснения, является ли пользователь тем, за кого он себя выдает. Как правило,это достигается сравнением введенного и хранимого паролей, но возможны и другиеварианты.
— Тип account (учетная запись) проверяет дозволеноли использовать службу данному пользователю, на каких условиях, не устарел липароль и т. д.
— Тип password (пароль) используется для обновлениямаркеров авторизации.
— Тип session (сеанс) выполняет определенныедействия при входе пользователя в систему и при выходе пользователя из системы.
Управляющие флаги
Второйстолбец является полем управляющего флага, определяющим, что делать послевозврата из модуля, то есть реакцию РАМ на значения УСПЕХ (SUCCESS), ИГНОРИРОВАТЬ (IGNORE) и НЕУДАЧА (FAILURE). Разрешенные значения: requisite, required, sufficient и optional. От значения в этом поле зависит,будут ли обработаны остальные строки файла.
— Флаг requisite (обязательный) задает наиболеежесткое поведение. Обработка любой строки с флагом requisite, модуль которой вернул значениеНЕУДАЧА (FAILURE), будет прекращена и вызвавшей ееслужбе будет возвращен статус НЕУДАЧА (FAILURE). Никакие другие строки рассматриваться не будут. Этотфлаг используется достаточно редко. Дело в том, что если помеченный им модуль выполняетсясамым первым, то следующие за ним модули могут и не выполниться, в том числе иотвечающие за протоколирование, поэтому вместо него обычно применяется флаг required (необходимый).
— Флаг required (необходимый) не прерываетвыполнение модулей. Каков бы ни был результат выполнения помеченного им модуля:УСПЕХ (SUCCESS), ИГНОРИРОВАТЬ (IGNORE) или НЕУДАЧА (FAILURE), РАМ всегда переходит к обработкеследующего модуля. Это наиболее часто используемый флаг, так как результатвыполнения модуля не возвращается до тех пор, пока не отработают все остальныемодули, а значит, модули, отвечающие за протоколирование, обязательновыполнятся.
— Флаг sufficient (достаточный) приводит кнемедленному завершению обработки строки и возврату значения УСПЕХ (SUCCESS) при условии, что помеченный иммодуль вернул значение УСПЕХ (SUCCESS)и ранее не встречалось модуля с флагом required, вернувшего статус НЕУДАЧА (FAILURE). Если такой модуль встречался, тофлаг sufficient игнорируется. Если помеченный этимфлагом модуль возвратил значение ИГНОРИРОВАТЬ (IGNORE) или НЕУДАЧА (FAILURE), то флаг sufficient рассматривается аналогично флагу optional.
— Результат выполнения модуля с флагом optional (необязательный) принимается во внимание лишь тогда, когдаон является единственным модулем в стеке, вернувшим значение УСПЕХ (SUCCESS). В противном случае результат еговыполнения игнорируется. Таким образом, неуспешное выполнение помеченного иммодуля не влечет за собой неуспех всего процесса авторизации.
Чтобыпользователь смог получить доступ к системе, модули, помеченные флагами requisite и required, не должны возвращать значенияНЕУДАЧА (FAILURE). Результат выполнения модуля сфлагом optional принимается в рассмотрение, лишьесли он является единственным модулем в стеке, вернувшим УСПЕХ (SUCCESS).
Модули РАМ
Третийстолбец содержит полное имя файла модуля, связанного с данной строкой. Впринципе, модули могут располагаться где угодно, однако если они размещены впредопределенном каталоге для модулей, то можно указывать одно лишь имя, впротивном случае нужен еще и путь. В МСВС предопределенным каталогом является /lib/security.
Четвертыйстолбец предназначен для передачи в модуль дополнительных параметров. Не у всехмодулей есть параметры, а если есть, то они могут и не использоваться. Передачапараметра модулю позволяет изменить его поведение тем или иным образом.
Листинг1.7 содержит список модулей РАМ, входящих в состав МСВС.
Листинг1.7. Список модулейРАМ, входящих в состав МСВС
pam_access.so
pam_cracklib.so
pam_deny.so
pam_dialup.so
pam_env.so
pam_ftp.so
pam_group.so
pam_lastlog.so
pam_limits.so
pam_listfile.so
pam_mail.so
pam_nologin.so
pam_permit.so
pam_pwdb.so
pam_radius.so
pam_rhosts_auth.so
pam_rootok.so
pam_securetty.so
pam_shells.so
pam_stress.so
pam_tally.so
pam_time.so
pam_unix_acct.so
pam_unix_auth.so
pam_unix_passwd.so
pam_unix_session.so
pam_warn.so
pam_wheel.so
О модулях подробнее
Модуль pam_access.soиспользуется для предоставления/запрещения доступа на основании файла /etc/security/access.conf.Строки этого файла имеют следующий формат:
права:пользователи: откуда
Где:
— права— либо + (разрешить), либо — (запретить)
— пользователи — ALL, имяпользователя или пользователь@узел, где узел соответствует имени локальноймашины, иначе запись игнорируется.
— откуда— одно или несколько имен файлов терминалов (без префикса /dev/), имена узлов, доменные имена(начинающиеся с точки), IPадреса, ALL или LOCAL.
Модуль pam_cracklib.so проверяет пароли по словарю. Он предназначен для проверкинового пароля и позволяет предотвратить использование в системе легковзламываемых паролей, каковыми считаются общеупотребительные слова, пароли,содержащие повторяющиеся символы, и слишком короткие пароли. Естьнеобязательные параметры: debug,type= и retry=. Параметр debug включает занесение отладочной информации в файл журнала. Параметр type, за которым следует строка, меняет ввыводимом по умолчанию приглашении New Unix password: слово Unix на указанную строку. Параметр retry задает число попыток,предоставляемых пользователю для ввода пароля, по исчерпании которыхвозвращается ошибка (по умолчанию дается одна попытка).
Рассмотримлистинг 1.8. В нем показано содержимое файла /etc/ pam.d/other. В этом файле содержится конфигурация, используемаямеханизмом РАМ в отношении служб, не имеющих своих собственных конфигурационныхфайлов в каталоге /etc/pam.d. Иными словами, этот файл применяется в отношении всехслужб, неизвестных системе РАМ. В нем представлены все четыре типа авторизации,auth, account, password и session, каждая из которых вызываетпомеченный флагом required модуль pam_deny.so.Таким образом, выполнение неизвестной службы запрещается.
Листинг1.8. Файл /etc/pam.d/other
auth required pam_deny.so
auth required pam_warn.so
account required pam_deny.so
password required pam_deny.so
password required pam_warn.so
session required pam_deny.so
Модуль pam_dialup.soпроверяет, нужно ли указывать пароль для доступа к удаленному терминалу илитерминалам, для чего используется файл /etc/security/ ttys.dialup. Модуль применим не только к ttyS, а вообще к любому tty-терминалу. Когда пароль нужен, он сверяется спрописанным в файле /etc/ security/passwd.dialup.Изменения файла passwd.dialup осуществляются программой dpasswd.
Модуль pam_group.soзанимается проверками в соответствии с содержимым файла /etc/security/group.conf.В этом файле указываются группы, членом которых может стать указанный в файлепользователь при выполнении определенных условий.
Модуль pam_lastlog.soзаносит в файл lastlog сведения отом, когда и откуда пользователь вошел в систему. Обычно этот модуль помечаетсятипом session и флагом optional.
Модуль pam_limits.soпозволяет накладывать различные ограничения на пользователей, вошедших всистему. Эти ограничения не распространяются на пользователя root (или любого другого пользователя снулевым идентификатором). Ограничения устанавливаются на уровне входа в системуи не являются глобальными или постоянными, действуя только в пределах одноговхода.
Модуль pam_lastfile.so принимает некоторую запись (item), сравнивает ее со списком в файле и на основаниирезультатов сравнения возвращает УСПЕХ (SUCCESS) или НЕУДАЧА (FAILURE). Параметры этого модуля следующие:
— item=[терминал пользователь |удаленный_узел | удаленный_пользователь | группа| оболочка]
— sense=[allow|deny](статус для возврата; когда запись найдена в списке, в противном случае возвращаетсястатус, противоположный указанному)
filе=/полный/путь/и/имя_файла- onerr=[succeed|fail](какой статус возвращать в случае возникновения ошибки)
— арр1у=[пользователь|@группа] (задает пользователя или группу, в отношениикоторой применяются ограничения. Имеет смысл только для записей вида item=[терминал | удаленный_узел |оболочка], для записей вида item=[пользователь| удаленный_пользователь | группа] игнорируется)
Модуль pam_nologin.soиспользуется при авторизации типа auth с флагом required. Этотмодуль проверяет, существует ли файл /etc/nologin, и если нет, то возвращает значениеУСПЕХ (SUCCESS), иначе содержимое файла показываетсяпользователю и возвращается значение НЕУДАЧА (FAILURE). Этот модуль обычно используется в тех случаях,когда система еще не до конца введена в строй или временно закрыта дляобслуживания, но не отсоединена от сети.
Модуль pam_permit.soявляется дополнительным к модулю pam_deny.so. Он всегда возвращает значение УСПЕХ (SUCCESS). Любые переданные параметры модулемигнорируются.
Модуль pam_pwdb.soпредоставляет интерфейс к файлам passwdи shadow. Возможны следующие параметры:
— debug — запись отладочной информации вфайл журнала;
— audit — дополнительная отладочнаяинформация для тех, кому недостаточно обычной отладочной информации;
— use_first_pass —никогда не запрашивать пароль у пользователя, а брать его у предыдущих модулейстека;
— try_first_pass —попробовать получить пароль у предыдущих модулей, в случае неудачи запросить упользователя;
— use_authtok — возвратить значение НЕУДАЧА (FAILURE) в случае, если pam_authtok не был установлен, не запрашивать пароль упользователя, а брать его у предыдущих модулей стека (только для стека модулейтипа password);
— not_set_pass —не устанавливать пароль из этого модуля в качестве пароля для последующих модулей;
— shadow — поддерживать систему теневыхпаролей;
— unix — помещать пароли в файл /etc/passwd;
— md5 — при следующей смене паролейиспользовать пароли md5;
— bigcrypt — при следующей смене паролейиспользовать пароли DEC C2;
— 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 userroot
by david(uid=0)
Jan 11 16:45:25 chiriqui PAM_pwdb[30022]: (su) session closed for userroot
Jan 11 17:18:06 chiriqui login[13217]: FAILED LOGIN 1 FROM (null) FORdavid,
Authentication failure
Jan 11 17:18:13 chiriqui login[13217]: FAILED LOGIN 2 FROM (null) FORdavid.
Authentication failure
Jan 11 17:18:17 chiriqui PAM_pwdb[13217]: (login) session opened for userdavid
by (uid=0)
Jan 11 17:18:06 chiriqui login[13217]: FAILED LOGIN 1 FROM (null) FORdavid.
Authentication failure
Jan 11 17:18:13 chiriqui login[13217]: FAILED LOGIN 2 FROM (null) FORdavid,
Authentication failure
Jan 11 17:18:17 chiriqui PAM_pwdb[13217]: (login) session opened for userdavid
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 userdavid
Каждаязапись начинается с даты, времени и имени узла. После чего следует имя модуляРАМ и идентификатор процесса, заключенный в квадратные скобки. Затем, в круглыхскобках, идет имя службы с ограничением доступа. Для листинга 1.9 это либо su, либо login. После имени службы следует либо «session opened» (сеанс открыт), либо «session closed» (сеанс закрыт).
Запись,следующая непосредственно за записью с «session opened», является сообщением о входе в систему, из которогоможно узнать, кто и откуда вошел в систему.
Безопасность уровня пользователей и групп
Рассматриваютсяследующие вопросы:
— чтотакое пользовательская группа по умолчанию и частные пользовательские группы;
— изменение пользователя/группы;
— какизменение пользователя/группы влияет на графический интерфейс;
— безопасность и пользователи;
— безопасность и пароли;
— защитапаролей;
— выборхорошего пароля;
— взломпаролей.
Группа по умолчанию
Внастоящее время ограничения на одновременную принадлежность пользователя лишь кодной группе более не существует. Любой пользователь может принадлежатьодновременно к нескольким группам. По команде newgrp пользователь становится членом указанной в командегруппы, при этом данная группа становится для данного пользователя группойвхода в систему (login group). При этомпользователь продолжает оставаться членом тех групп, в которые он входил довыполнения команды newgrp. Группавхода в систему является группой, которая становится групповым владельцемфайлов, создаваемых пользователем.
Различиемежду группой по умолчанию и частными группами пользователей заключается встепени открытости этих двух схем. В случае схемы с группой по умолчанию любойпользователь может читать (а часто и изменять) файлы другого пользователя. Счастными же группами чтение или запись файла, созданного другим пользователем,возможны лишь, если его владелец явно предоставил права на эти операцииостальным пользователям.
Еслитребуется, чтобы пользователи могли присоединяться и покидать группу безвмешательства системного администратора, то этой группе можно назначить пароль.Пользователь может пользоваться привилегиями определенной группы только вслучае, если он принадлежит к ней. Здесь есть два варианта: либо он принадлежитк группе с момента входа в систему, либо он становится членом группывпоследствии, уже после того, как он начал работу с системой. Чтобыпользователь мог присоединиться к группе, к которой он не принадлежит, этойгруппе должен быть назначен пароль.
Поумолчанию в МСВС групповые пароли не используются, поэтому файла gshadow в каталоге /etc нет.
СОВЕТ –
Если для выполнениярутинных задач администрирования пользователей вы постоянно используете толькоодну из программ — useradd, LISA или COAS, — файлы настроекпользователей получаются более согласованными и более легкими в сопровождении.
Преимуществосхемы с группой по умолчанию заключается в том, что она облегчает совместное использованиефайлов, так как при ее использовании не нужно заботиться о правах доступа кним. Эта схема подразумевает открытый подход к системе по принципу «разрешеновсе, что не запрещено».
СОВЕТ
Настройка параметровпользователей по умолчанию — это высокоприоритетная задача, которую следуетвыполнить сразу же после того, как вы установите систему.
Частные группы пользователей
Частныегруппы пользователей обладают именами, совпадающими с именами пользователей.Частная группа делается группой входа в систему, поэтому по умолчанию, то естьесли атрибуты каталога не предписывают ничего другого, она назначается в качествегруппы-владельца всех файлов данного пользователя.
Преимуществочастных групп пользователя состоит в том, что пользователям не нужно думать обограничении доступа к своим файлам: по умолчанию доступ к пользовательскимфайлам с самого момента их создания будет ограничен. В МСВС, при использованиичастных групп пользователь может читать или изменять только принадлежащие емуфайлы. Кроме того, создавать файлы он может только в своем домашнем каталоге.Данное поведение по умолчанию может быть изменено системным администратором илипользователем, причем как на уровне отдельного файла, так и на уровне каталога.
Изменение пользователя/группы
Естьнесколько команд, при помощи которых пользователь может управлять своим именеми/или группой, к которой он принадлежит, или именем или группой, от лицакоторых выполняется программа. Одна из таких программ newgrp.
Команда newgrp может быть выполнена любымпользователем. Она позволяет ему присоединиться к группе, к которой он непринадлежал, но только если этой группе назначен пароль. Данная команда непозволит вам присоединиться к группе без пароля, если вы не являетесь членомэтой группы.
Команду newgrp можно использовать в отношениигруппы, членом которой уже является пользователь. В этом случае newgrp делает указанную группу группойвхода в систему. Группы пользователя подразделяются на два типа: группа входа всистему и все остальные группы, к которым принадлежит этот пользователь.Пользователь может принадлежать к нескольким группам, однако группой-владельцемфайлов, создаваемых пользователем, всегда будет назначаться группа входа всистему этого пользователя.
Помимо newgrp для управления принадлежностью файлатому или иному пользователю или группе можно использовать также команды chown и chgrp.
Областьдействия команды newgrp в среде X Window ограничивается программой xterm, в которой она была выполнена: в контексте новойгруппы будут выполняться лишь программы, запущенные через этот терминал, азначит, пользователь не может изменять с ее помощью группу входа в систему дляпрограмм, запущенных посредством диспетчера окон. Программу, которую всегданужно выполнять в контексте вторичной группы, можно запускать через сценарий,устанавливающий для нее требуемую группу входа в систему.
Далее про X
Система X Window всегда привносит в жизнь пользователей дополнительныетрудности. В данном случае трудности эти не связаны напрямую с X, а следуют из логики работы /etc/groups и /etc/gshadow. Тем, кто не использует теневые паролидля групп, беспокоиться особенно не о чем. В случае с X установить группу, защищенную паролем, из простого сценарияне получится, однако для вторичных групп пользователя, не требующих вводапароля, смена группы осуществляется предельно просто. Достаточно следующегосценария:
#!/bin/bash
sg — gifs -с /usr/X11R6/bin/xv&
Врезультате запуска этого сценария будет запущена программа xv, первичной группой которой будетсделана группа gifs. Что итребовалось получить.
Труднеетем, кто использует теневые групповые пароли, поскольку в этом случае привыполнении данного сценария на экране появится сообщение об ошибке. Когда вфайле /etc/groups перечислены входящие в группу пользователи, любой изних автоматически считается ее членом непосредственно после входа в систему.Однако в случае теневых паролей список пользователей группы перемещен в файл /etc/gshadow, так что вошедший в систему пользователь незачисляется автоматом в ее члены, но может присоединяться к ней посредствомкоманды newgrp или же выполнять от ее именикакую-либо программу при помощи команды sg. Проблема в том, что с точки зрения X данный пользователь (который не обязательно являетсяпользователем, инициировавшим рабочий сеанс X) не имеет права на установку соединения. Поэтому длянезащищенных паролем групп приведенный ранее сценарий изменяется следующимобразом:
#!/bin/bash
xhosts +lосаlhost
sg — gifs -c /usr/X11R6/bin/xv &
Добавленнаястрока позволяет получать доступ к экрану новой группе (gifs). Для большинства рабочих станцийэто не должно привести к каким-либо существенным проблемам с безопасностью,поскольку данная строка всего лишь разрешает доступ к экрану пользователямлокального узла (для получения дополнительной информации об X и xhost обратитесь к хорошему руководству системного администратораLinux).
ПРИМЕЧАНИЕ
ИспользованиеХ-сервера (в особенности совместо с xdm или kdm) влечет за собойцелый ряд своих тонкостей, еще более усугубляемых графическими приложениями,поскольку их можно запускать не только через командную строку, но и при помощизначка на графическом рабочем столе.
Изменение пользователя
ПРИМЕЧАНИЕ
Обычный пользовательне в силах нанести системе столько вреда, сколько может сделать неосторожныйсуперпользователь. Последствия вашей опечатки как суперпользователя могут бытьвесьма фатальными, вплоть до того, что всем вашим системным файлам (а то ивообще всем файлам, хранящимся в системе) можно будет сказать «прощай». Внекоторых компаниях после этого могут сказать «прощай» и вам.
Превращениемодного пользователя в другого занимается команда su. Свое название команда получила от «substituteuser» (подстановка пользователя), но так как чаще всего онаиспользуется, чтобы стать суперпользователем..
Команда su, вызванная без аргументов, запроситу пользователя пароль, после чего (получив в ответ правильный пароль) сделаетвас пользователем root. Даннаякоманда является службой с ограничением доступа, поэтому все аспекты еебезопасности можно настроить через файл /etc/pam.d/su.
ПРИМЕЧАНИЕ –
Обращение su без указания именипользователя (с дефисом или без) трактуется, как указание сделать вас пользователемroot.
Даннаякоманда sudo позволяет избранным пользователямвыполнять некоторые программы на правах суперпользователя, причем у обратившегосяк этой команде пользователя запрашивается не пароль суперпользователя, а егособственный пароль. Используется sudoподобно команде sg. Пользовательвводит sudo команда_для_выполнения, затем свойпароль, и если ему это разрешено, указанная команда выполняется в контекстепривилегий суперпользователя.
Безопасность и пользователи
Пользователиобычно интересуются только тем, как войти в систему и запустить нужные импрограммы. Интерес к безопасности появляется у них лишь после утери важныхфайлов. Но длится он недолго. Узнав, что меры приняты, пользователи быстрозабывают о всякой предосторожности.
Вообщеговоря, не их это забота — безопасность. Системный администратор долженпродумать, реализовать и поддерживать политику безопасности, которая позволилабы пользователям делать свою работу, не отвлекаясь на посторонние для нихвопросы защиты.
Основнаяопасность для системы, как правило, исходит изнутри, а не снаружи. Ееисточником (особенно в крупных системах) может стать, например, рассерженныйпользователь. Следует, однако, избегать излишней подозрительности, когда вред,нанесенный по незнанию, принимается за злой умысел. О том, как оградитьпользователей от непреднамеренного повреждения своих и чужих файлов,рассказывается в первой части книги. Как показывает практика,среднестатистический пользователь не в состоянии повредить систему. Беспокоитьсянужно лишь о тех пользователях, которые в состоянии найти лазейку в механизмахзащиты и действительно способны причинить целенаправленный вред системе. Нотаких пользователей обычно мало и со временем они становятся известны, особенноесли знать, на что обращать внимание. К группе риска относятся пользователи,которые в силу своего положения или благодаря своим связям могут получитьдоступ на уровне привилегий root.По мере того как вы будете овладевать материалом данной книги, вы будетеузнавать, что именно следует расценивать как признаки надвигающейся беды.
Поумолчанию пользователи получают полный контроль над своими домашнимикаталогами. Если вы используете группу по умолчанию, все пользователи системыпринадлежат к одной группе. Любой пользователь обладает правом доступа кдомашним каталогам других пользователей и расположенным в них файлам. Прииспользовании схемы с частными группами пользователей любой из пользователей системыобладает доступом только к своему собственному домашнему каталогу, а домашниекаталоги других пользователей ему не доступны.
Если длявсех пользователей системы требуется обеспечить общий доступ к некоторомунабору общих файлов, рекомендуется создать где-нибудь общий каталог специальнодля этих целей, завести группу, членами которой были бы все пользователи (этоможет быть группа users или любаядругая созданная вами группа), и предоставить этой группе соответствующие правадоступа к данному общему каталогу. Если пользователь желает сделать некоторыеиз своих файлов доступными для других пользователей, он может простоскопировать их в этот каталог и обеспечить, чтобы эти файлы принадлежали к тойсамой группе, членами которой являются все пользователи.
Некоторыепользователи нуждаются в использовании или просто не могут обойтись безпрограмм, не входящих в комплект МСВС. Большинство пользователей со временемобзаводится множеством собственных файлов: документы, конфигурационные файлы,сценарии и т. п. Система OpenLinux не предоставляет пользователям особой помощи в деле организации своихфайлов, оставляя эту задачу системному администратору.
Структуракаталогов, создаваемых в домашнем каталоге каждого нового пользователя,определяется содержимым каталога /etc/skel. В типичном /etc/skel обычно присутствуют следующие каталоги:
/bin
/src
/docs
/misc
Этикаталоги используются для хранения (соответственно) бинарных файлов, исходныхфайлов, файлов документов и других разнообразных файлов. Многие программы поумолчанию предлагают сохранять файлы тех или иных типов в одном из этихподкаталогов. Получив разъяснение о назначении имеющихся в их распоряжениикаталогов, пользователи обычно охотно начинают пользоваться ими, поскольку этоизбавляет их от необходимости придумывать что-то свое. Не забудьте толькосделать каталог ~/bin одним изпоследних каталогов, перечисляемых в переменной PATH пользователей.
Безопасность и пароли
Говорят,что где тонко, там и рвется, — это высказывание часто вспоминают, когда речьзаходит о значимости паролей в системе безопасности. Вообще говоря, надежностьсистемы безопасности определяется множеством факторов, в частности тем, какиеслужбы МСВС-система делает доступными для внешних пользователей (используетсяли она в качестве web-сервера, можноли войти в нее при помощи telnetи т. д.). Другим определяющим фактором являются пароли пользователей, чтоподводит нас к еще одному фактору — соблюдение пользователями политикбезопасности. Простой пользователь знать ничего не желает о безопасности. Еслимы уважаем пользователя и не хотим менять его отношение к безопасностипринудительными методами, нам следует сделать систему безопасности удобной ипонятной для него. Труднее всего обеспечить удобство. Все безопасное обычно неслишком удобно (поскольку за удобством стоят не сочетающиеся с безопасностьюпредсказуемость и элементарность) и потому входит в конфликт с обычнымповедением людей, предпочитающих всем возможным способам самый удобный. В концеконцов, пользователи работают с системой для того, чтобы выполнить возложеннуюна них работу, а не добавить себе новой. Дабы пользователи сознательно не шлипо пути наименьшего сопротивления при работе с паролями, я обычно стараюсьобъяснить им, для чего вообще нужны пароли и почему так важно поддерживать ихбезопасность. Важно не с общих позиций типа «систему с низкой безопасностьюмогут взломать и украсть или повредить важные файлы», а с позиций личныхинтересов пользователя.
Большинствопользователей понимают всю важность электронной почты для своей работы. Тем не менее,они не осознают, что любой вошедший в систему под их именем получаетвозможность использовать их электронную почту от их имени против них. Спроситеу пользователя, использует ли он электронную почту в личных целях. Скореевсего, он ответит, что да. Затем спросите его, приходилось ли ему решать поэлектронной почте важные деловые вопросы. Таких, которые ответят «нет», скаждым днем становится все меньше и меньше. Но даже в случае отрицательногоответа некоторые из деловых партнеров вполне могут считать сделку поэлектронной почте столь же обязывающей, как сделка по телефону.
Послечего объяснить пользователю, что его электронные письма подчас обладают такойже важностью, как и его личная подпись. И хотя заголовок электронного посланияможно подменить, в большинстве случаев подобная подмена так же противозаконна,как и подделка подписи. Но если некто, тем или иным способом узнав парольдругого пользователя, войдет в систему под его именем, то тем самым он, образноговоря, получит возможность подписываться подписью другого человека. Любаяпочта, отправленная им, будет технически неотличима от почты, отправленнойсамим пользователем. Практика предоставления кому-либо возможности входа в системупод другим именем является нежелательной и ее следует избегать (исключениемявляются системные администраторы, которые используют эту возможность длятестирования сценариев входа в систему и параметров пользователя, но для этогоим нет необходимости знать пароль этого пользователя). К нежелательным явлениямследует отнести и вход в систему под чужим именем (даже с разрешения другогопользователя). Насколько это нежелательно? Ответ на этот вопрос определяетсястрогостью политики безопасности предприятия.
Однакопользователи должны понимать, что есть и другие не менее опасные способыполучить несанкционированный доступ к их учетной записи. Наиболее распространенслучай, когда пользователь, опасаясь забыть пароль, делает его простым длязапоминания, а значит, и угадывания, или же записывает пароль на бумажку,которая зачастую просто прикрепляется к монитору. Система парольнойбезопасности основывается на двух вещах: постоянное имя пользователя ипериодически меняющийся пароль. Большинство людей никому не скажут PIN-код длядоступа к своему банковскому счету, однако свой пароль пользователя ониоберегают далеко не столь ревностно. Хотя в отличие от ситуации с банковскимсчетом, где постоянная часть, то есть кредитная карта, является физическимобъектом, доступ к которому еще нужно получить, постоянная часть системыпарольной безопасности, то есть имя пользователя, известна всем (по крайнеймере, всем в пределах компании и тем, с кем данный пользователь вел перепискупо электронной почте). Поэтому если переменная часть где-то записана или легкоугадывается или подбирается программой, перебирающей слова из словаря, то такуюучетную запись нельзя считать хорошо защищенной.
Наконец,пользователи должны знать о существовании такого метода получения пароля, как«социальная инженерия» (social engineering).Большинство из нас встречалось в своей жизни хотя бы с одним человеком, окотором можно сказать «скользкий как уж». Такие люди обладают способностьюубеждать других людей, прибегая к логично построенной аргументации, предоставитьнужную им информацию. Но это не единственно возможный способ узнать чужойпароль. Иногда достаточно просто подсмотреть.
Средствомпротиводействия подобным казусам является регулярная смена пароля. Можно,конечно, менять пароль раз в десять лет, но лучше не делать промежутки междусменами слишком длинными, равно как лучше не делать их и слишком короткими, например,раз в час. Не менять пароль слишком долго означает подвергать себя рискувзлома.
ПРИМЕЧАНИЕ-
Проникновениепостороннего в систему под видом обычного пользователя может иметь печальныепоследствия не только для файлов этого пользователя, но и для всей системы вцелом, поскольку, чем больше этот посторонний будет знать о вашей системе, темлегче ему будет найти прорехи в ее защите.
Обратитевнимание, что перед началом работы сценарий осуществляет некоторые проверки:выполняется ли он на уровне привилегий root, не занят ли начальный UID и т. д. Тем не менее, нельзя сказать, что онпроверяет все.
Взлом паролей
Один изспособов проверки безопасности системы подразумевает, что поставить себя наместо злоумышленника и пытаться думать и действовать так, как действовал бычеловек, пытающийся нарушить защиту. Это означает, что необходимо прогуливатьсреди пользователей, подсматривая, не прикреплен ли к какому-нибудь мониторузаписанный пароль, не оставил ли кто-нибудь на столе бумажку с записанными наней идентификационными данными, или же «проходите мимо» как раз в то утреннеевремя, когда пользователи входят в систему (быть может, удастся заметить, каккто-нибудь из них будет набирать пароль на клавиатуре).
Этотакже означает, что должны обращать внимание на ориентацию мониторапользователя, имеющего доступ к чувствительной информации, дабы выяснить, виднали она кому-нибудь еще. Далее, когда эти пользователи отлучаются от своегорабочего места, запускают ли они заблокированную паролем программу-заставку (screen saver), а может, выходят из системы или же не делаютничего?
СОВЕТ
Однако наилучшийспособ проверить на прочность систему парольной безопасности и отношениепользователей к ней — попытаться взломать пароли пользователей. Регулярноевыполнение программы взлома паролей способно дать достаточно хорошую оценкукрепости вашей системы парольной защиты.