Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Электронные книги по ОС Linux
Beyond Linux From Scratch. Version 2011-12-30
Назад 4. Безопасность Вперед

Пакет Shadow-4.1.4.3

Знакомимся с пакетом Shadow

Пакет Shadow в действительности уже был установлен и его не требуется переустанавливать, если после того, как была собрана система LFS, вы не устанавливали пакет CrackLib или пакет Linux-PAM. Если после сборки системы LFS вы установили пакет CrackLib, то переустановка пакета Shadow позволит пользоваться стойкими паролями. Если у вас установлен пакет Linux-PAM, то переустановка пакета Shadow позволит таким программам, как login и su, пользоваться технологией PAM.

Известно, что пакет правильно собирается и работает на платформе LFS-7.0.

Информация о пакете

  • Загрузка (HTTP): http://pkg-shadow.alioth.debian.org/releases/shadow-4.1.4.3.tar.bz2
  • Контрольная сумма MD5: b8608d8294ac88974f27b20f991c0e79
  • Размер загружаемого пакета: 1,8 MB
  • Оценочный размер требуемого дискового пространства: 30 MB
  • Оценочное время сборки: 0,3 SBU

Зависимости пакета Shadow

Обязательные

Linux-PAM-1.1.5 и/или CrackLib-2.8.18

Замечания для пользователей: http://wiki.linuxfromscratch.org/blfs/wiki/shadow

Установка пакета Shadow

Важно

Установочные команды, показанные ниже, предназначены для переустановки пакета Shadow в тех случаях, когда был установлен пакет Linux-PAM (с установкой или без установки пакета CrackLib) с тем, чтобы обеспечить поддержку использования Linux-PAM.

Если вы переустанавливаете пакет Shadow для того, чтобы можно было использовать стойкие пароли, что реализовано с помощью библиотеки CrackLib, и вам не нужно использовать Linux-PAM, добавьте к скрипту configure, показанному ниже, параметр --with-libcrack, а также выполните следующую команду:

sed -i 's@DICTPATH.*@DICTPATH\t/lib/cracklib/pw_dict@' etc/login.defs

Переустановите пакет Shadow с помощью следующих команд:

sed -i 's/groups$(EXEEXT) //' src/Makefile.in                   &&
find man -name Makefile.in -exec sed -i 's/groups\.1 / /' {} \; &&
sed -i -e 's/ ko//' -e 's/ zh_CN zh_TW//' man/Makefile.in       &&

sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD MD5@' \
       -e 's@/var/spool/mail@/var/mail@' etc/login.defs         &&

./configure --sysconfdir=/etc                                   &&
make

В этом пакете набор тестов отсутствует.

Теперь в роли пользователя root выполните:

make install &&
mv -v /usr/bin/passwd /bin

Пояснение команд

sed -i 's/groups$(EXEEXT) //' src/Makefile.in: Эта команда используется для подавления установки программы groups, поскольку более предпочтительной является версия из пакета Coreutils, установленная в системе LFS.

find man -name Makefile.in -exec ... {} \;: Эта команда используется для подавления установки страниц man для программы groups, поскольку существующие страницы, которые установлены из пакета Coreutils, замены не требуют.

sed -i -e '...' -e '...' man/Makefile.in: Эта команда отключает установку страниц руководств на китайском и корейском языках, поскольку пакет Man-DB не может правильно их форматировать.

sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD MD5@' -e 's@/var/spool/mail@/var/mail@' etc/login.defs: Вместо метода 'crypt', используемого по умолчанию, эта команда изменяет установку так, что в ней используется более надежный метод шифрования паролей 'md5', который также позволяет использовать пароли, длина которых больше восьми символов. Также происходит замена устаревшего директория /var/spool/mail на директорий /var/mail, в котором по умолчанию пакет Shadow должен хранить почтовые ящики пользователей.

mv -v /usr/bin/passwd /bin: Программа passwd может потребоваться в тех случаях, когда файловая система /usr еще не смонтирована, поэтому эта программа перемещается в корневой раздел.

Конфигурирование пакета Shadow

В вашем случае конфигурование пакета Shadow может оказаться нежелательным для утилиты useradd. Единственный параметр, используемый в useradd, предназначен для создания файлов почтовых ящиков для вновь добавляемых пользователей. Утилита useradd определяет для этого файла группу владельцев как mail с правами доступа 0660. Если вы предпочитаете, чтобы эти файлы почтовых ящиков не создавались с помощь утилиты useradd, выполните в роли пользователя root следующую команду:

sed -i 's/yes/no/' /etc/default/useradd

Конфигурирование Linux-PAM для работы с Shadow

Оставшаяся часть этого раздела посвящена настройке пакета Shadow для правильной работы с Linux-PAM. Если у вас пакет Linux-PAM не установлен и вы переустановили пакет Shadow только для поддержки работы со стойкими паролями, что реализуется с помощью библиотеки CrackLib, то никаких дополнительных настроек не требуется.

Конфигурационные файлы

/etc/pam.d/* или как альтернатива /etc/pam.conf, /etc/login.defs и /etc/security/*

Подробнее о конфигурировании

Настройка системы для использования Linux-PAM может оказаться сложной задачей. Ниже описывается базовая настройка, благодаря которой функции проверки имени и пароля будут эффективно выполняться Linux-PAM. Дополнительную информацию о конфигурировании и необходимые ссылки смотрите на странице Linux-PAM-1.1.5. Информацию, относящуюся к интеграции пакетов Shadow, Linux-PAM и CrackLib, вы можете получить по следующим ссылкам:

Конфигурирование /etc/login.defs

В текущий момент программа login выполняет большинство функций, которые должны реализовываться с помощью модулей Linux-PAM. Следующая команда sed закомментирует соответствующие строки в файле /etc/login.defs, и программа login не будет выполнять эти функции (также будет создан резервный файл с именем /etc/login.defs.orig, в котором будет сохранено содержимое исходного файла). Выполните в роли пользователя root следующие команды:

install -v -m644 /etc/login.defs /etc/login.defs.orig &&
for FUNCTION in LASTLOG_ENAB MAIL_CHECK_ENAB \
                PORTTIME_CHECKS_ENAB CONSOLE \
                MOTD_FILE NOLOGINS_FILE PASS_MIN_LEN \
                SU_WHEEL_ONLY MD5_CRYPT_ENAB \
                CONSOLE_GROUPS ENVIRON_FILE \
                ULIMIT ENV_TZ ENV_HZ ENV_SUPATH \
                ENV_PATH QMAIL_DIR MAIL_DIR MAIL_FILE \
                CHFN_AUTH FAILLOG_ENAB QUOTAS_ENAB FTMP_FILE \
                OBSCURE_CHECKS_ENAB CRACKLIB_DICTPATH \
                PASS_CHANGE_TRIES PASS_ALWAYS_WARN ISSUE_FILE
do
    sed -i "s/^$FUNCTION/# &/" /etc/login.defs
done

Конфигурирование файлов /etc/pam.d/

Как уже ранее упоминалось в инструкциях пакета Linux-PAM, в Linux-PAM поддерживается два способа конфигурирования. В командах, приведенных ниже, считается, что вы выбрали метод с использованием для конфигурирования директория, в котором для каждой программы есть свой собственный конфигурационный файл. При желании можно пользоваться единственным конфигурационным файлом /etc/pam.conf и записать в него текст из файлов, приведенных ниже, а в качестве дополнительного первого поля в каждой строке указать имя конфигурируемой программы.

Перейдите в роль пользователя root и с помощью следующих команд замените указанные ниже конфигурационные файлы Linux-PAM, находящиеся в директории /etc/pam.d/ или добавьте их содержимое в файл /etc/pam.conf (в приведенных ниже скриптах были переведены комментарии, исходные версии скриптов смотрите в оригинале - прим.пер.):

Файл 'system-account'

cat > /etc/pam.d/system-account << "EOF"
# Начало /etc/pam.d/system-account

account   required    pam_unix.so

# Окончание /etc/pam.d/system-account
EOF

Файл 'system-passwd' (с cracklib)

cat > /etc/pam.d/system-password << "EOF"
# Начало /etc/pam.d/system-password

# Проверяется стойкость новых паролей (man pam_cracklib)
password  required    pam_cracklib.so   type=Linux retry=3 difok=5 \
                                        difignore=23 minlen=9 dcredit=1 \
                                        ucredit=1 lcredit=1 ocredit=1 \
                                        dictpath=/lib/cracklib/pw_dict
# используется хэш значение sha512 для шифрования, используется shadow, и используется
# аутентификационная лексема (выбранный пароль), заданная с помощью pam_cracklib
# указанным ранее (или любым предыдущим модулем)
password  required    pam_unix.so       sha512 shadow use_authtok

# Окончание /etc/pam.d/system-password
EOF

Замечание

В конфигурации, используемой по умолчанию, даже в случае, когда значение minlen установлено равным 11, модуль pam_cracklib разрешает использовать несколько паролей, длина которых меньше 6 символов. Вы должны посмотреть man-страницу pam_cracklib(8) и выяснить, являются ли эти значения, используемые в системе по умолчанию, допустимыми с точки зрения безопасности вашей системы.

Файл 'system-passwd' (без cracklib)

cat > /etc/pam.d/system-password << "EOF"
# Начало /etc/pam.d/system-password

# используется хэш значение sha512 для шифрования, используется shadow, и делается попытка использовать любую
# ранее определенную аутентификационную лексему (выбранный пароль), заданную ранее с помощью любого модуля
password  required    pam_unix.so       sha512 shadow try_first_pass

# Окончание /etc/pam.d/system-password
EOF

Файл 'system-session'

cat > /etc/pam.d/system-session << "EOF"
# Начало /etc/pam.d/system-session

session   required    pam_unix.so

# Окончание /etc/pam.d/system-session
EOF

Файл 'login'

cat > /etc/pam.d/login << "EOF"
# Начало /etc/pam.d/login

# Устанавливает задержку в 3 секунды для повторного приглашения в случае неудачного входа
auth      optional    pam_faildelay.so  delay=3000000

# Проверка наличия у пользователя возможности регистрации в системе
auth      requisite   pam_nologin.so

# Проверка наличия у пользователя root возможности регистрации в системе
auth      required    pam_securetty.so

# Additional group memberships - по умолчанию отключено
#auth      optional    pam_group.so

# Добавляется настройка auth, используемая по умолчанию
auth      include     system-auth

# Проверка возможности пользователя войти в систему
account   required    pam_access.so

# Добавляется настройка account, используемая по умолчанию
account   include     system-account

# Устанавливает переменные среды окружения, доступные пользователю по умолчанию
session   required    pam_env.so

# Устанавливает ограничения на ресурсы, доступные пользователю
session   required    pam_limits.so

# Выдача даты последней регистрации в системе - по умолчанию отключено
#session   optional    pam_lastlog.so

# Выдача "сообщения дня" - по умолчанию отключено
#session   optional    pam_motd.so

# Проверка почты пользователя – по умолчанию отключено
#session   optional    pam_mail.so      standard quiet

# Используются ключи xauth (если имеются)
session   optional    pam_xauth.so

# Добавляется настройки session и password, используемые по умолчанию
session   include     system-session
password  include     system-password

# Окончание /etc/pam.d/login
EOF

Файл 'passwd'

cat > /etc/pam.d/passwd << "EOF"
# Начало /etc/pam.d/passwd

password  include     system-password

# Окончание /etc/pam.d/passwd
EOF

Файл 'su'

cat > /etc/pam.d/su << "EOF"
# Начало /etc/pam.d/su

# всегда имеется для root
auth      sufficient  pam_rootok.so
auth      include     system-auth

# Добавляется настройка account, используемая по умолчанию
account   include     system-account

# Используются ключи xauth (если имеются)
session   optional    pam_xauth.so

# Устанавливает для пользователя сервиса переменные среды окружения, используемые по умолчанию
session   required    pam_env.so

# По умолчанию в систему добавляется session
session   include     system-session

# Окончание /etc/pam.d/su
EOF

Файл 'chage'

cat > /etc/pam.d/chage << "EOF"
#Начало /etc/pam.d/chage

# всегда имеется для root
auth      sufficient  pam_rootok.so

# в системе по умолчанию используются auth account и session
auth      include     system-auth
account   include     system-account
session   include     system-session

# Всегда выполняется при обновлениях аутентификации
password  required    pam_permit.so

# Окончание /etc/pam.d/chage
EOF

Файлы 'chfn', 'chgpasswd', 'chgpasswd', 'chsh', 'groupadd', 'groupdel', 'groupmems', 'groupmod', 'newusers', 'useradd', 'userdel' и 'usermod'

for PROGRAM in chfn chgpasswd chpasswd chsh groupadd groupdel \
               groupmems groupmod newusers useradd userdel usermod
do
    install -v -m644 /etc/pam.d/chage /etc/pam.d/$PROGRAM
    sed -i "s/chage/$PROGRAM/" /etc/pam.d/$PROGRAM
done

Теперь вы должны выполнить простой тест с тем, чтобы убедиться, что пакет Shadow работает так, как ожидалось. Откройте еще один терминал и войдите в систему как пользователь, а затем наберите команду su для перехода в роль пользователя root. Если никаких ошибок не будет, то все в порядке и вам следует приступить к оставшейся части конфигурирования. Если ошибки будут, то сразу же остановитесь и вручную повторно проверьте конфигурационные файлы, приведенные выше. Вы также можете запустить набор тестов, имеющийся в пакете Linux-PAM, который поможет вам в обнаружении проблемы. Если вы не можете найти и исправить ошибку, вы должны перекомпилировать пакет Shadow, добавив к команде configure, указанной в приведенных выше инструкциях, параметр --without-libpam (также скопируйте содержимое резервной копии файла /etc/login.defs.orig в файл /etc/login.defs). Если вы этого не сделаете этого и ошибки останутся, вы не сможете войти в вашу систему.

Файл Other

В настоящий момент файл /etc/pam.d/other сконфигурирован так, что любой, у кого есть учетная запись на машине, может пользоваться любыми программами, которые обращаются к PAM; конфигурационные файлы этих программ использоваться при этом не будут. После того, как будет проверено, что конфигурация Linux-PAM задана правильно, установите файл other, в котором заданы более строгие требования, заставляющие использовать конфигурационные файлы конкретных программ:

cat > /etc/pam.d/other << "EOF"
# Начало /etc/pam.d/other

auth              required        pam_warn.so
auth              required        pam_deny.so
account        required        pam_warn.so
account        required        pam_deny.so
password    required        pam_warn.so
password    required        pam_deny.so
session        required        pam_warn.so
session        required        pam_deny.so

# Окончание /etc/pam.d/other
EOF

Конфигурирование входа в систему

Вместо того, чтобы для управления доступом к системе использовать файл /etc/login.access, Linux-PAM использует модуль pam_access.so и файл /etc/security/access.conf. Переименуйте файл /etc/login.access с помощью следующей команды:

if [ -f /etc/login.access ]; then
    mv -v /etc/login.access /etc/login.access.NOUSE
fi

Конфигурирование лимитов на ресурсы

Вместо того, чтобы для ограничения использования системных ресурсов использовать файл /etc/limits, Linux-PAM использует модуль pam_limits.so и файл /etc/security/limits.conf. Переименуйте файл /etc/limits с помощью следующей команды:

if [ -f /etc/limits ]; then
    mv -v /etc/limits /etc/limits.NOUSE
fi

Конфигурирование среды окружения, используемой по умолчанию

Во время предыдущего конфигурирования из файла /etc/login.defs были удалены несколько компонентов. Управление некоторыми из них теперь осуществляется с помощью модуля pam_env.so и конфигурационного файла /etc/security/pam_env.conf. В частности, изменяется путь, используемый по умолчанию. Чтобы восстановить путь, используемый вами по умолчанию, выполните следующие команды:

ENV_PATH=`grep '^ENV_PATH' /etc/login.defs.orig | \
    awk '{ print $2 }' | sed 's/PATH=//'` &&
echo 'PATH        DEFAULT='`echo "${ENV_PATH}"`\
'        OVERRIDE=${PATH}' \
    >> /etc/security/pam_env.conf &&
unset ENV_PATH

Замечание

Переменная ENV_SUPATH, предназначенная для модификации пути, используемого по умолчанию пользователем root, не работает с PAM. Вместо этого вы должны настроить скрипт, который будет выполняться при входе в систему пользователя root.

Описание пакета

Список установленных файлов, вместе с их кратким описанием можно найти в шестой главе проекта LFS.

Перевод сделан с варианта оригинала, датированного 2011-11-16 19:44:45 +0000


Предыдущий раздел: Оглавление Следующий раздел:
Пакет polkit-gnome-0.94   Пакет Stunnel-4.46