Назад | Перейти на главную страницу

Аутентификация пользователя PostgreSQL против PAM

Я пытаюсь настроить аутентификацию через PAM для PostgreSQL 9.3. Мне уже удалось заставить это работать на сервере Ubuntu 12.04, но я не могу заставить это работать при установке Centos-6.

Подходящий pg_hba.conf линия:

host    all             all             0.0.0.0/0               pam     pamservice=postgresql93

В pam.d/postgressql93 - это конфигурация по умолчанию, поставляемая с официальным пакетом postgresql 9.3:

#%PAM-1.0

auth            include         password-auth
account         include         password-auth

Когда пользователь пытается аутентифицироваться, в secure журнал:

hostname unix_chkpwd[31807]: check pass; user unknown
hostname unix_chkpwd[31808]: check pass; user unknown
hostname unix_chkpwd[31808]: password check failed for user (myuser)
hostname  postgres 10.1.0.1(61459) authentication: pam_unix(postgresql93:auth): 
    authentication failure; logname= uid=26 euid=26 tty= ruser= rhost=  user=myuser

Соответствующее содержание password-auth конфигурация:

auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     required      pam_permit.so

Проблема в pam_unix.so. Он не может проверить пароль и получить информацию о пользователе (когда я удаляю auth вход pam_unix.so).

Установке Centos-6 всего 5 дней, поэтому у нее не так много багажа.

В unix_chkpwd является suid и имеет права на выполнение для всех, поэтому он должен иметь возможность проверять теневой файл (у которого вообще нет привилегий?).

Я решил проблему, изменив настройку Centos, чтобы она больше походила на настройку в Ubuntu.

Я создал группу shadow с низким идентификатором группы и без участников. Я сменил группу на /etc/shadow и /sbin/unit_chkpwd в созданную группу shadow. И наконец я сделал unix_chkpwd SGID:

----r----- 1 root shadow 1049 Aug 22 16:38 /etc/shadow
-rwxr-sr-x 1 root shadow 34840 Nov 22  2013 /sbin/unix_chkpwd

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