Не знаю, может я неправильно понимаю идею, но: Если держать пользователей в SQL DB то нежелательно их аутентифицировать через NSS, так как это предполагает открытие доступа в таблицу с пользователями, включая их пароли для хоста. То есть, в настройках будет это: # grep getpwuid /etc/nss-pgsql.conf getpwuid = SELECT username, passwd, gecos, homedir, shell, uid, gid FROM passwd_table WHERE uid = $1 В случае если на одном хосте, который берёт пользователей из базы, случится взлом с получением рутовых прав ничто не сможет помешать список пользователей и их парольных хэшей для всех обслуживаемых базой хостов. Значит, аутенфикация пользователей по NSS отменяется. Но и PAM (по крайней мере, модуль pam_pgsql 0.6) требует настройки, содержащей команду, возвращающую пароль (или его хэш): # auth_query - authentication query # (should return one column - password) auth_query = select user_password from account where user_name = %u То бишь, на взломанном хосте берём пароль к базе из настроек NSS, берём из базы все имена пользователей, потом пробегаемся по этим именам используя логин из настроек pam_pgsql и получаем хэши паролей. Заряжаем в перебералку парлей и вуаля - получаем (некоторые, конечно) пароли пользователей всей(!) системы, обслуживаемой данной SQL DB. Как бы перенести проверку пароля с клиентского хоста в саму базу данных или куда-нибудь ещё с потенциально уязывимых машин? В DB у меня уже нужные функции для сличения паролей лежат, надо только придумать способ их вызвать из PAM. (Я с PAM до конца ещё не разобрался, поэтому вопрос может быть дурацкий)
Attachment:
signature.asc
Description: PGP signature