Аутентифікація відкритого ключа для користувачів LDAP з використанням локальних авторизованих ключів


3

Ми використовуємо LDAP для інформації про обліковий запис. Середовище налаштовано таким чином ...

  • Сервер каталогів CentOS 7 OpenLDAP
  • Клієнт CentOS 7 налаштований на використання сервера каталогів
    • authconfig використовувався для налаштування клієнта CentOS 7 для аутентифікації LDAP

Я помітив наступне

  • Локальний користувач (той, чиї дані облікового запису в / etc / passwd) може ssh до самого клієнта без використання аутентифікації відкритим ключем (без пароля)
  • Користувач LDAP може ssh до самого клієнта, використовуючи пароль
  • Користувач LDAP не може ssh до самого клієнта, використовуючи аутентифікацію відкритого ключа. Користувач має правильно налаштовані ключі ssh ( id_rsa.pub, id_rsa ) і authorized_keys схожі на локального користувача

Вивід налагодження при виконанні ssh за допомогою локального користувача

debug1: Offering RSA public key: /home/localuser/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279

Вивід налагодження при виконанні ssh за допомогою користувача LDAP

debug1: Offering RSA public key: /home/ldapuser/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic

Журнал, / var / log / secure, має наступний запис після того, як користувач LDAP намагається підключитися за допомогою аутентифікації відкритого ключа

Mar 19 16:47:01 localhost sshd[20539]: Connection closed by x.x.x.x [preauth]

LDAP може знайти обліковий запис користувача

$ getent passwd ldapuser
ldapuser:x:5001:5000::/home/ldapuser:/bin/bash

Коли дозволяє ssh PasswordAuthentication

$ ssh test
ldapuser@test's password: 
Last failed login: Sat Mar 19 17:08:29 UTC 2016 from x.x.x.x on ssh:notty
Last login: Sat Mar 19 15:55:40 2016

Я розумію, що існують такі альтернативи, як OpenSSH-LPK, але хотілося б мати можливість використовувати локальну авторизацію, встановлену за допомогою Puppet, оскільки вона не вимагає підтримки LDAP. Я не впевнений, що цей підхід можливий і, якщо він є, конфігурації sshd, PAM або LDAP. Будь-які вказівники оцінили б ...


Після пропозиції Jakuje встановити рівень журналу на DEBUG для sshd, журнали містили ключ

Mar 19 18:22:42 localhost sshd[20934]: debug1: temporarily_use_uid: 5001/5000 (e=0/0)
Mar 19 18:22:42 localhost sshd[20934]: debug1: trying public key file /home/ldapuser/.ssh/authorized_keys
Mar 19 18:22:42 localhost sshd[20934]: debug1: Could not open authorized keys '/home/ldapuser/.ssh/authorized_keys': Permission denied
Mar 19 18:22:42 localhost sshd[20934]: debug1: restore_uid: 0/0

Домашні каталоги / та / мають наступні дозволи

$ ll -and / /home
dr-xr-xr-x. 17 0 0 4096 Feb 22 17:26 /
drwxr-xr-x.  5 0 0   45 Mar 19 03:05 /home

Каталог / home / ldapuser має такі дозволи

$ ll -an .
drwxr-xr-x. 3 5001 5000  99 Mar 19 16:46 .
drwxr-xr-x. 5    0    0  45 Mar 19 03:05 ..
drwx------. 2 5001 5000  76 Mar 19 02:45 .ssh

У каталозі /home/ldapuser/.ssh доступні такі права

$ ll -an .
total 16
drwx------. 2 5001 5000   76 Mar 19 02:45 .
drwxr-xr-x. 3 5001 5000   99 Mar 19 16:46 ..
-rw-r--r--. 1 5001 5000  419 Mar 19 02:45 authorized_keys
-rw-------. 1 5001 5000 1679 Mar 19 02:45 id_rsa
-rw-r--r--. 1 5001 5000  419 Mar 19 02:45 id_rsa.pub
-rw-r--r--. 1 5001 5000  177 Mar 19 02:45 known_hosts

Демон sshd встановлює ефективного користувача на 5001/5000 і тому не впевнений, чому дозвіл буде відмовлено. Користувач root може переключитися на ldapuser, щоб система знала про користувача.


Jakuje: Велике спасибі! Причиною проблеми була SELinux, і запуск проблеми відновлення було виправлено. Я ціную вашу допомогу і терпіння!


будь ласка, шишка LogLevel принаймні DEBUG на сервері, спробуйте ще раз і розмістіть журнали з сервера ( /var/log/secure або jourtnalctl -e ). Слід зазначити причину відхилення відкритого ключа.
Jakuje

Перевірте також дозволи / і /home.
Jakuje

Так. Це виглядає справедливо. Але я (ми) забув про SELinux. Чи є SELinux? Які відповідні мітки на цих файлах? ls -lZ / /home /home/ldapuser /home/ldapuser/.ssh /home/ldapuser/.ssh/authorized_keys? Біг restorecon -rf /home/ldapuser/ їх слід виправити.
Jakuje

Додано як відповідь. Будь ласка, знайдіть секунду, щоб вибрати відповідь, а не копіювати відповідь на запитання.
Jakuje

Відповіді:


1

Чи є SELinux? Які відповідні мітки на цих файлах?

ls -lZ /home/ldapuser /home/ldapuser/.ssh /home/ldapuser/.ssh/authorized_keys

Біг restorecon -rf /home/ldapuser/ повинні вирішити проблеми.


0

Домашній каталог користувача LDAP повинен належати користувачеві LDAP uid. Те ж саме з каталогом .ssh всередині домашнього користувача LDAP і відкритим ключем (authorized_keys) у каталозі .ssh.

Приклад:

mkdir -p /home/ldapuser/.ssh

cp authorized_keys /home/ldapuser/.ssh

getent passwd
...
kibosh:*:6035:100:kibosh:/home/kibosh:/bin/bash
ldapuser:*:6036:100:ldapuser:/home/ldapuser:/bin/bash

chmod -R 6036:users /home/ldapuser

ls -l /home
drwxr-xr-x  4 ldapuser         users      4096 Nov  2 10:40 ldapuser
...

Примітка: gid 100 - це gid користувачів локальної групи в моїй системі.

Крім того, переконайтеся, що дозволу правильні для $ HOME / .ssh і $ HOME / .ssh / authorized_keys тощо.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.