Обмеження входу в обліковий запис за допомогою LDAP та PAM


14

Я сподівався, що деякі гуру PAM / LDAP можуть мені допомогти тут. Нещодавно на Ubuntu Server я створив каталог LDAP для зберігання облікових записів як для своїх клієнтів (для використання з веб-системами), так і для персоналу (якому потрібно буде входити через SSH.)

Аутентифікація LDAP працює бездоганно. Однак я не можу отримати обмеження рахунки працюючих: співробітники рахунку матимуть ідентифікатори між 2001і 2999і буде членом ssh-usersгрупи , щоб дозволити їм входу на сервери.

Проблемні обмеження є /etc/ldap.conf, і є pam_min_uid, pam_max_uidі pam_groupdn.

pam_groupdnмістить повний DN для моєї ssh-usersгрупи. pam_min_uid= 2000і pam_max_uid= 2999.

Тепер мені вдалося змусити їх працювати, додавши:

account [success=1 default=ignore] pam_ldap.so

над pam_unix.soрядком в /etc/pam.d/common-account. Однак локальні облікові записи Unix НЕ можуть увійти в систему: SSH-сервер вбиває з'єднання, як тільки вони спробують.

Я встановив pam_ldap.soмодуль sufficientу наведеному вище файлі, але потім недійсні користувачі отримують повідомлення про те, що вони не можуть увійти, але він все-таки реєструє їх.

Отже, як я можу встановити ці обмеження для облікових записів для користувачів LDAP, одночасно дозволяючи користувачам UNIX входити в систему?

Як ви можете, напевно, здогадуєтесь, що я новачок у PAM, хоча мені вдалося змусити модуль «автоматично зробити домашні каталоги» робочим :-)

Велике спасибі, Енді

Відповіді:


11

PAM має можливість обмежувати доступ на основі списку контролю доступу (принаймні на Ubuntu), який, як і відповідь kubanskamac (+1), розглядає групи як групи посіксу, зберігаються вони в LDAP /etc/groupабо NIS.

/etc/security/access.conf- це список списку доступу. У своєму файлі я поклав в кінці:

-:ALL EXCEPT root sysadmin (ssh-users):ALL

Це заперечує всіх, крім root, sysadmin та у групі ssh-користувачів (що є в LDAP), де б вони не входили (другий ALL).

Потім у свій файл облікового запису PAM (це модуль облікового запису) я додаю в самому кінці:

account required pam_access.so

що вказує PAM використовувати цей файл. Це працює частування :-)


Варто зауважити, що вам, можливо, знадобиться поставити pam_access.so в самому початку файлу вашого облікового запису PAM, щоб він набув чинності.
крб

5

Я б просто скористався

auth required    pam_listfile.so   sense=accept item=group file=/etc/groups.allow onerr=fail

щоб дозволити лише певні групи (як для локальних, так і для LDAP). Таким чином, вам не потрібно нічого вказувати ldap.conf.

Якщо ви хочете зберегти авторизацію на своєму шляху, вам не слід фільтрувати користувачів за пропуском "рахунок". Я вважаю, що вам слід скоріше зробити це на "автентичному" проході. По-друге, як ви самі бачите, pam_unix обробляє як локальні, так і LDAP-акаунти (принаймні, на пропуск "акаунт"), тому, схоже, у пам’яті зовсім не потрібно.

EDIT: По-третє, якщо ви наполягаєте на тому, щоб мати пропуск на "акаунт" (який, на мою думку, може мати дивні побічні ефекти), ваша послідовність повинна закінчуватися такими словами: ..., "достатній pam_ldap", "потрібно pam_localuser", "потрібно pam_unix" . Я маю на увазі, якщо у вас є будь-які інші модулі, перемістіть їх перед pam_ldap - інакше вони будуть ігноровані для облікових записів LDAP через "достатній" пункт.


Я думаю, що pam_unix використовує гетентні виклики для отримання інформації облікового запису, яка використовує LDAP як у /etc/nsswitch.conf. Ці рядки були додані до файлів конфігурації PAM інсталятором пакету libpam-ldap. Дія pam_groupdn за замовчуванням нічого не робила, і під час пошуку відповідей хтось сказав, що це не набере чинності, якщо під час пропуску "акаунт" не буде використаний модуль pam_ldap.so. Якщо можливо, я б краще зберігати налаштування в ldap.conf, оскільки це стосується конкретно LDAP.
Енді Шелам

(1) Ви маєте рацію щодо pam_unix. (2) Я оновлюю свою відповідь порадами pam_localuser.
kubanczyk

Все, що я читав про PAM, свідчить про те, що обліковий запис - це правильний розділ для цього. auth - Ідентифікує користувача та підтверджує автентифікацію облікового запису - Перевіряє характеристики облікового запису користувача, такі як старіння пароля, обмеження часу входу та обмеження віддаленого входу. Це не проблема автентифікації - тому що ім’я користувача / пароль є правильним, і користувач може бути виявлено. Це обмеження для облікового запису, оскільки я не хочу, щоб деякі акаунти могли входити в систему.
Енді Шелам

0

Просто додати до @ andy-shellam, ось мій common-accountфайл:

account [success=2 new_authtok_reqd=done default=ignore] pam_unix.so
account [success=1 default=ignore]            pam_ldap.so
account requisite                     pam_deny.so
account required                      pam_access.so
account required                      pam_permit.so
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.