Что я упустил в конфигурации PAM для Apache на RedHat?

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

Я пытаюсь настроить PAM для использования файлов “passwd” и “shadow” хостинговой системы для аутентификации пользователя, который работает с веб-приложением.

Я использую RedHat 6, Apache версии 2.2, модуль mod_authnz_pam для Apache.

PAM в apache (httpd.conf) настроен следующим образом:

<Location />
  AuthType Basic
  AuthName "basic_auth"
  AuthBasicProvider PAM
  AuthPAMService httpd
  Require valid-user
</Location>

Я создал файл с именем httpd в /etc/pam.d со следующей конфигурацией:

auth    required    pam_unix.so
account required    pam_unix.so
session required    pam_unix.so

SELinux включен. getenforce возвращает “Enforcing”.
Я также выполнил следующее

setsebool -P allow_httpd_mod_auth_pam 1

Поэтому при попытке посетить IP-адрес у меня запрашивают учетные данные пользователя. Но когда я ввел свои системные учетные данные, я получил следующие логи

unix_chkpwd[29856]: check pass; user unknown

unix_chkpwd[29856]: password check failed for user (username)

localhost httpd: pam_unix(httpd:auth): authentication failure; logname= uid=48 euid=48 tty= ruser= rhost=xxx.xx.xx.x user=username

Мое имя пользователя определенно существует в файлах passwd и shadow, но почему-то PAM утверждает, что его не существует.

Что еще я упустил?

Настройте /etc/pam.d/httpd следующим образом или похоже.

#%PAM-1.0
auth       include    system-auth
account    required   pam_nologin.so
account    include    system-auth
password   include    system-auth
session    optional   pam_keyinit force revoke
session    include    system-auth
session    required   pam_loginuid.so

Идея заключается в том, чтобы заставить стек pam просматривать другие файлы вместо того, чтобы пытаться проверить вход. system-auth обычно вызывается многими другими службами pam, такими как login, su и sudo.

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

Вопрос: Что мне не хватает в настройке PAM для Apache на RedHat?

Ответ:

Вы на верном пути, но ключевая проблема заключается в том, как настроены PAM и файлы конфигурации. Давайте рассмотрим, что может быть упущено или отрегулировано для успешной аутентификации пользователей через модуль mod_authnz_pam в Apache.

Актуальность и контекст

Вы используете RedHat 6 с Apache 2.2 и хотите аутентифицировать пользователей с использованием файлов passwd и shadow. Исходя из вашей конфигурации, аутентификация запускается, но PAM не может найти пользователя, основанного на входных данных, что подразумевает, что настройки PAM либо неверны, либо недостаточны.

Настройка PAM

  1. Проверка файла /etc/pam.d/httpd:
    Такие конфигурации, как ваша, могут не всегда правильно включать другие необходимые модули PAM. Вместо простой настройки, я рекомендую адаптировать файл PAM, чтобы использовать system-auth, как это предложено вами:
#%PAM-1.0
auth       include    system-auth
account    required   pam_nologin.so
account    include    system-auth
password   include    system-auth
session    optional   pam_keyinit force revoke
session    include    system-auth
session    required   pam_loginuid.so

Эта конфигурация обеспечит использование всех основных механизмов аутентификации, которые уже настроены в system-auth, что должно упростить разбирание и устранение проблем.

  1. Проверка конфигурации system-auth:
    Проверьте сам файл /etc/pam.d/system-auth, чтобы удостовериться, что он правильно настроен для работы с pam_unix.so. Важно проверить, правильно ли установлены параметры для pam_unix, такие как nullok, try_first_pass и аналогичные.

SELinux и его влияние

Убедитесь, что SELinux не блокирует работу Apache или PAM. Вы уже активировали allow_httpd_mod_auth_pam, но также проверьте логи SELinux на наличие записей, указывающих на потенциальные блокировки. Используйте команду:

sudo ausearch -m avc -ts recent

Это покажет записи о блокировках, если они есть. Если проблемы будут выявлены, вы можете временно установить SELinux в режим разрешения для диагностики:

setenforce 0

Логи и отладка

Логи, которые вы предоставили, показывают, что unix_chkpwd не может найти пользователя, это часто связано с тем, что пользователь не был найден в системных файлах. Убедитесь, что выполняется следующее:

  • Пользователь существует в /etc/passwd и /etc/shadow.
  • Убедитесь, что формат и структура этих файлов корректны, и у пользователя есть права доступа, соответствующие требованиям.

Дополнительные рекомендации

  • Проверьте разрешения для файлов конфигурации PAM. Они должны быть защищены (например, chmod 700) от несанкционированного доступа.
  • Убедитесь, что Apache работает от имени пользователя, который имеет доступ к необходимым файловым ресурсам.
  • Возможно, стоит протестировать аутентификацию с помощью другой утилиты, которая использует PAM, чтобы подтвердить корректность конфигурации PAM отдельно от Apache.

Заключение

Убедившись, что настройки PAM правильные и что SELinux настроен для работы с Apache, ваша конфигурация должна заработать. Если же возникает необходимость в дальнейшей диагностике, используйте логи PAM и SELinux, чтобы выявить проблему. Во избежание дублирования проблем с аутентификацией всегда полезно сосредотачиваться на детальных и проверенных конфигурациях, которые уже были устоявшимися в других сервисах PAM.

Надеюсь, эти рекомендации помогут вам окончательно настроить аутентификацию PAM для вашего Apache сервера.

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

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