LINUX.ORG.RU
ФорумAdmin

Squid: аутентификация системой PAM через модуль LDAP, mod_ldap


0

0

Настроил Squid версии 2.6.5 (Debian Etch) для использования pam_auth
(PAM, Pluggable Application Modules) в качестве программы,
производящей аутентификацию. В настройках PAM для Squid'а указал
использовать модули pam_ldap и pam_unix. Однако, Squid берет данные
учетных записей у модуля pam_unix.

Вот соответствующие файлы настроек:

# /etc/squid/squid.conf
# PAM authentication
auth_param basic program /usr/lib/squid/pam_auth
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
# Ждать 2 часа до истечения срока действия данных учетных записей
auth_param basic credentialsttl 2 hours
acl password proxy_auth REQUIRED
# Прошедшим проверку по паролю разрешаем доступ по HTTP
http_access allow password
http_access deny all

# /etc/pam.d/squid
auth sufficient pam_ldap.so
auth required pam_unix.so try_first_pass
account sufficient pam_ldap.so
account required pam_unix.so

В чем ошибка? Почему Squid пропускает только по Unix-аутентификации?

★★★★★
Ответ на: комментарий от undertaker

$ grep -v ^# /etc/pam_ldap.conf | tr -s '\n'

host debian
base dc=debian
uri ldap://debian:389/
ldap_version 3
binddn cn=admin,dc=debian
bindpw ****
rootbinddn cn=admin,dc=debian
pam_password exop

Но проблема в том, что, похоже, программа pam_auth пытается использовать Unix-аутентификацию вместо LDAP (и, даже под системным Unix-именем, не может авторизоваться):
# /var/log/auth.log
....
Apr 17 xx:xx:xx debian sudo: debian : TTY=pts/3 ; PWD=/etc/pam.d ; USER=root ; COMMAND=/usr/lib/squid/pam_auth
Apr 17 xx:xx:xx debian sudo: PAM pam_parse: expecting return value; [...sufficent]
Apr 17 xx:xx:xx debian pam_auth: (pam_unix) check pass; user unknown
Apr 17 xx:xx:xx debian pam_auth: (pam_unix) authentication failure; logname=user uid=0 euid=0 tty= ruser= rhost=
Apr 17 xx:xx:xx debian CRON[30648]: (pam_unix) session opened for user root by (uid=0)
Apr 17 xx:xx:xx debian CRON[30648]: (pam_unix) session closed for user root

Проверка же доступа напрямую, запуском программы pam_auth, проходит успешно:
$ sudo /usr/lib/squid/pam_auth
user password
OK
admin xxx
ERR

pacify ★★★★★
() автор топика
Ответ на: комментарий от pacify

Поменял /etc/pam.d/squid на следующий:
auth sufficient pam_ldap.so debug
auth required pam_unix.so try_first_pass
auth required pam_deny.so

account sufficient pam_ldap.so debug
account required pam_unix.so try_first_pass
account required pam_deny.so

password sufficient pam_ldap.so debug
password required pam_unix.so try_first_pass
password required pam_deny.so

Ошибка нераспознавания имени пользователя исчезла из /var/log/auth.log,
однако осталось сообщение об ошибке аутентификации тем же самым модулем, pam_auth.so:

# /var/log/auth.log
....

$ cat log.txt | colrm 1 15 | grep -i -E "(pam|squid)"
debian sudo: debian : TTY=pts/5 ; PWD=/etc/squid ; USER=root ; COMMAND=/usr/sbin/squid -k reconfigure
debian sudo: PAM pam_parse: expecting return value; [...sufficent]
....
debian CRON[31774]: (pam_unix) session opened for user root by (uid=0)
debian CRON[31774]: (pam_unix) session closed for user root
debian (pam_auth): (pam_unix) authentication failure; logname= uid=13 euid=13 tty= ruser= rhost= user=t
debian (pam_auth): (pam_unix) authentication failure; logname= uid=13 euid=13 tty= ruser= rhost= user=d
debian (pam_auth): (pam_unix) authentication failure; logname= uid=13 euid=13 tty= ruser= rhost=

pacify ★★★★★
() автор топика
Ответ на: комментарий от pacify

> Apr 17 xx:xx:xx debian sudo: PAM pam_parse: expecting return value; [...sufficent]

Странно, а зачем оно использует sudo? Может, попробовать поковырять /etc/pam.d/sudo ?

Ниже может быть написан бред:

Может, для корректной работы pam_ldap требуется еще libnss-ldap (для правильного разрешения имен)?

undertaker ★★
()
Ответ на: комментарий от undertaker

Здравствуйте, Сергей.

> Странно, а зачем оно использует sudo?

Для аутентификации системных пользователей, sudo использует pam_ldap, pam_unix,
/etc/pam.d/common-auth:
auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure use_first_pass
Программа sudo же запущена из командной строки командой 'sudo squid -k reconfigure' (см. вышеприведенный текст).

> Может, попробовать поковырять /etc/pam.d/sudo ?
Думаю, что незачем, я его и не трогал, /etc/pam.d/sudo:
#%PAM-1.0

@include common-auth
@include common-account

> Может, для корректной работы pam_ldap требуется еще libnss-ldap (для правильного разрешения имен)?

libnss-ldap настроен, задан файл настроек /etc/libnss-ldap.conf, и файл пароля /etc/libnss-ldap.secret.

pacify ★★★★★
() автор топика
Ответ на: комментарий от pacify

Пример обращения к базе данных LDAP:
$ getent passwd | grep test
test:x:1024:1:Test User:/home:/bin/bash

pacify ★★★★★
() автор топика
Ответ на: комментарий от undertaker

> > Apr 17 xx:xx:xx debian sudo: PAM pam_parse: expecting return value; [...sufficent]
> Странно, а зачем оно использует sudo? Может, попробовать поковырять /etc/pam.d/sudo ?

Для исполняемого файла pam_auth выставлен флаг SUID:
$ ls -l /usr/lib/squid/pam_auth
-rwxr-sr-- 1 proxy shadow 10884 2007-12-28 02:08 /usr/lib/squid/pam_auth

pacify ★★★★★
() автор топика
Ответ на: комментарий от undertaker

> А настройки самого pam_ldap где?

Вы были правы, Сергей - в настройках pam_ldap была ошибка,
строки /etc/pam_ldap.conf:
binddn cn=admin,dc=debian
bindpw ****
указывать не нужно. Думаю, указывать их не нужно, потому, что
пользователю Squid'а надо подключаться к базе LDAP со своей учетной записью.

В итоге, авторизация Squid'ом пользователей посредством LDAP заработала.

pacify ★★★★★
() автор топика
Ответ на: комментарий от pacify

> Вы были правы, Сергей - в настройках pam_ldap была ошибка, > строки /etc/pam_ldap.conf: > binddn cn=admin,dc=debian > bindpw **** > указывать не нужно. Думаю, указывать их не нужно, потому, что > пользователю Squid'а надо подключаться к базе LDAP со своей учетной записью.

Ну, хоть я явно этого и не сказал, но таки по логике pam_ldap+libnss_ldap, ваши ldap-пользователи - они равноправны в системе, и pam_ldap обращается к ldap с dn вида cn=youruid,$base_dn. Спасибо, что детально описали проблему - мне может самому пригодится :)

undertaker ★★
()
Ответ на: комментарий от undertaker

> Таки uid=youruid,...

Да, это Posix Account.

pacify ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.