Библиотека сайта rus-linux.net
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, показанному ниже, параметр 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
ЗамечаниеВ конфигурации, используемой по умолчанию, даже в случае, когда значение |
Файл '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, указанной в приведенных выше инструкциях, параметр |
Файл 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, предназначенная для модификации пути, используемого по умолчанию пользователем |
Описание пакета
Список установленных файлов, вместе с их кратким описанием можно найти в шестой главе проекта LFS.
Перевод сделан с варианта оригинала, датированного 2011-11-16 19:44:45 +0000
Предыдущий раздел: | Оглавление | Следующий раздел: |
Пакет polkit-gnome-0.94 | Пакет Stunnel-4.46 |