SliTaz Man Pages

Community Doc Forum Pro Shop Bugs Hg Cook

TCB

Section: File Formats (5)
Updated: 02 March 2002
Index Return to Main Contents

Название

TCB - альтернативная схема управления теневыми паролями.

Задача

Согласно традиционной схеме управления теневыми паролями, хеши паролей всех пользователей, а также информация о сроке их действия хранится в едином файле - /etc/shadow. Таким образом, процесс, которому предоставляется доступ к информации о пароле одного из пользователей системы, автоматически получает права, достаточные для получения аналогичного доступа к информации о паролях всех остальных пользователей. Этот явный изъян в дизайне легко проследить на примере утилиты passwd(1). Предположим, что политика безопасности позволяет непривилегированным пользователям изменять собственные пароли. Какими бы ни были права доступа к файлу /etc/shadow, программа passwd(1), запущенная непривилегированным пользователям U, должна иметь возможность вносить изменения в этот файл. Если злоумышленник U найдет способ взять под свой контроль процесс passwd(1) (с помощью ошибки непосредственно в коде программы passwd(1), используемых ею библиотеках, или в ядре), то этот пользователь получит возможность менять пароли всех пользователей и таким образом возьмет под свой контроль операционную систему.

Решение

Решение проблемы простое - каждому пользователю соответствует отдельный теневой shadow-файл. Поскольку теневой файл пользователя U принадлежит этому пользователю U, то программа passwd(1), запущенная U, уже не требует рутовых прав.

Все теневые файлы пользователей располагаются в каталоге /etc/tcb:

drwx--x---    2 root     shadow       1024 Май  4 01:18 /etc/tcb

Для каждого пользователя создается подкаталог в /etc/tcb с соответствующими правами доступа:

# ls -l /etc/tcb
всего 2
drwx--s---    2 root     auth         1024 Май  4 01:18 root
drwx--s---    2 user     auth         1024 Май  4 01:18 user

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

# ls -l /etc/tcb/user
всего 1
-rw-r-----    1 user     auth           91 Май  4 01:18 shadow

Эти персональные каталоги используются для хранения временных файлов и блокировочных файлов, создаваемых во время смены пароля либо изменения другой информации, хранящейся в теневом файле.

Преимущества

Описанный выше дизайн обладает следующими преимуществами:
1. Утилита
passwd(1) должна быть установлена с правами SGID-shadow, а не SUID-root. Утилита chage(1) и вспомогательная программа /sbin/tcb_chkpwd также должны быть установлены с правами SGID-shadow; это значит, что в соответствии со схемой TCB запущенные процессы будут обладать правами, достаточными для изменения только пользовательской теневой записи. Таким образом, весь вред, который может причинить злоумышленник в случае обнаружения ошибки в реализации этих программ, ограничен возможностью изменения своего собственного теневого файла.
2. Если процессу необходим доступ по чтению ко всем теневым файлам сразу,
достаточно дополнительно включить его в группы "shadow" и "auth".
3. Схема TCB полностью прозрачна для приложений, которым требуется читать
информацию о паролях. Разделяемая библиотека libnss_tcb реализует интерфейс к функции getspnam(3) и другим функциям работы с теневыми записями. Смена паролей обеспечивается PAM-модулем pam_tcb(5).

Информацию о введении в действие схемы TCB можно прочесть в tcb_convert(8), где рассказано, как это сделать наиболее безболезненно.

Недостатки

Честно говоря, их всего несколько, и они крайне незначительные:
1.
Невозможно установить блокировку всей теневой базы данных (см. tcb_unconvert(8)).
2.
Процесс, обладающий доступом по чтению ко всем теневым файлам, как это описано выше, автоматически обладает доступом по изменению своего собственного теневого файла.
3.
Невозможно предоставить процессу права доступа по чтению к одному конкретному теневому файлу иначе как исполняя этот процесс с правами соответствующего пользователя.
4.
Средства управления доступом пользователей требуют значительной доработки для обеспечения поддержки схемы TCB.

Авторы

Rafal Wojtczuk <nergal@owl.openwall.com>, Solar Designer <solar@owl.openwall.com> - реализация схемы TCB для ОС Openwall GNU/*/Linux.
Dmitry V. Levin <ldv@alt-linux.org> - аудит кода,
адаптация схемы TCB для ОС ALT Linux, перевод документации по TCB на русский язык.
Реализация PAM-модуля
pam_tcb призвана обеспечивать обратную совместимость с pam_unix, ввиду чего некоторые решения были заимствованы из pam_unix. Некоторые менее критичные фрагменты кода, а также в некоторой мере композиция кода взяты из реализации модуля pam_unix в Linux-PAM. Имена соавторов pam_unix приведены в каталоге orig_copyright/ исходного кода схемы TCB.

Ссылки

login.defs(5), pam_tcb(5), tcb_convert(8)

Index

Название
Задача
Решение
Преимущества
Недостатки
Авторы
Ссылки