Доступ к аутентификации пользователей LDAP запрещен

Вопрос или проблема

В настоящее время я настраиваю LDAP-клиент для аутентификации пользователей на сервере. Разрешена только аутентификация по SSH-ключу (аутентификация по паролю не разрешена).

Моя конфигурация SSH (/etc/ssh/sshd_config)

PermitRootLogin no
AuthorizedKeysCommand /path/to/getsshkey.sh
AuthorizedKeysCommandUser root
PasswordAuthentication no

Мои другие конфигурационные файлы:

Я добавил следующую строку в /etc/pam.d/common-auth

auth    required    pam_access.so

Я добавил следующую строку в /etc/pam.d/sshd

account required pam_access.so

Я добавил следующую строку в /etc/security/access.conf

-: ALL EXCEPT root (group1) (group2): ALL except LOCAL

Я также настроил все эти файлы (/etc/ldap.conf, /etc/nsswitch.conf, /etc/pam.d/common-session)

Например, username1 принадлежит group1

Когда я выполняю эту команду

ssh -i private.pem username1@ip_address

Я получаю следующую ошибку в auth.log на сервере

Access denied for user username1 by PAM account configuration [preauth]

Почему доступ запрещен?

Пожалуйста, помогите мне

Лично я бы использовал директивы nss_base_<map>, так как они немного более гибкие и работают с фильтрами pam. Однако, раз вы уже так далеко продвинулись, вот хороший способ pinpoint вашей проблемы:

Сначала проверьте вашу информацию LDAP с помощью следующих команд

$ id
$ id YOURUSERNAME (не отобразит дополнительные группы)

$ getent passwd
$ getent shadow
$ getent group

Затем проверьте ваши конфигурации фильтров pam в /etc/ldap.conf и убедитесь, что имена хостов совпадают

Смотрите документацию по LDAP для получения дополнительной информации.

Измените DNS ИМЯ или установите DNS ИМЯ в customization.login на клиентской машине, измените имя хоста hostnamectl set-hostname.

Ответ или решение

Почему возникает ошибка доступа при аутентификации пользователя LDAP?

При настройке аутентификации пользователя через LDAP вы столкнулись с проблемой, заключающейся в том, что вы получаете ошибку "Access denied for user username1 by PAM account configuration [preauth]". Данная проблема может быть связана с несколькими факторами, и её решение требует внимательного анализа конфигурации аутентификации и прав доступа.

1. Проверка конфигурации PAM

Ваша текущая конфигурация PAM включает в себя следующие ключевые элементы:

  • В файле /etc/pam.d/common-auth, вы добавили:

    auth    required    pam_access.so
  • В файле /etc/pam.d/sshd:

    account required pam_access.so
  • В файле /etc/security/access.conf:

    -: ALL EXCEPT root (group1) (group2): ALL except LOCAL

Обратите внимание на правильность синтаксиса и логики конфигурации access.conf. Текущая конфигурация запрещает доступ для всех пользователей, кроме тех, кто находится в группах group1 и group2, и в то же время позволяет доступ только для локальных пользователей (LOCAL). Убедитесь, что пользователь username1 действительно находится в одной из этих групп.

2. Проверка членства в группах

Проверьте, правильно ли определено членство пользователя в группах. Для этого выполните следующие команды:

$ id username1

Это покажет, к каким группам принадлежит username1. Также посмотрите, как настроены группы в LDAP с помощью:

$ getent group

3. Проверка LDAP конфигурации

Необходимо удостовериться в корректности ваших LDAP-данных и их доступности. Проверьте конфигурационный файл /etc/ldap.conf. Убедитесь, что параметры host, base, и binddn прописаны верно и соответствуют настройкам вашего LDAP-сервера.

Используйте следующие команды для проверки:

$ getent passwd username1
$ getent shadow username1
$ getent group username1

Если команды не выводят данные для username1, значит, есть проблемы с доступом к LDAP.

4. Настройка SSH

Кроме того, проверьте настройки SSH. В вашем файле /etc/ssh/sshd_config вы установили:

PasswordAuthentication no

Это верно, но убедитесь, что ваш скрипт getsshkey.sh, указанный в AuthorizedKeysCommand, правильно реализован и возвращает SSH-ключи для пользователя username1. Если скрипт не работает должным образом, это может быть причиной отказа доступа.

5. Ошибки и журналы

Для более детального анализа изучите журнал /var/log/auth.log (или другой, в зависимости от вашей конфигурации системы), чтобы получить больше информации о причине ошибки. Ищите записи, которые непосредственно относятся к вашей попытке входа в систему.

6. Дополнительные проверки

  • Убедитесь, что hostname клиентской машины соответствует настройкам DNS hostnamectl set-hostname.
  • Проверьте, что используемые библиотеки PAM и их модули соответствуют версии вашей операционной системы и правильно настроены.

Заключение

Аутентификация через LDAP может быть сложной задачей, особенно с учётом всех факторов. Проанализировав вышеперечисленные аспекты, вы сможете pinpoint (точно определить) причину ошибки доступа и внесёте необходимые изменения в конфигурацию. Если после выполнения всех шагов проблема не решится, возможно, стоит обратиться за помощью к специалистам или в сообщество для более глубокого анализа ситуации.

Оцените материал
Добавить комментарий

Капча загружается...