Подключаемые модули аутентификации (PAM)

В последние годы PAM фактически стал стандартным способом предоставления услуг безопасной аутентификации в системах UNIX. PAM работает как интерфейс между демоном программы или системой и основными методами аутентификации. Это значительно повышает уровень безопасности и гибкость. Как следует из названия, интерфейс является общим для всех методов аутентификации, поддерживаемых PAM, однако за этим единообразием лежит возможность поддержки самых различных методов аутентификации. Вплоть до расширенной поддержки RADIUS для ftp-доступа и /etc/shadow для telnet.

Для ProFTPD требуется PAM версии не ниже 0.59. Системный вызов pam_sm_open_session не предоставляется в более ранних версиях.

Почему PAM используется по умолчанию?

Безопасность, прозрачность и простота. PAM - наиболее безопасный из имеющихся систем аутентификации. Многие вопросы использования и подсказки по настройке содержатся в файле README.PAM, который можно найти в исходных кодах сервера и различных пакетах. Чтобы использовать /etc/passwd непосредственно, вам потребуется перекомпилировать сервер, включив флаг конфигурации --without-pam. Пока подсистема PAM не будет настроена должным образом, подключение к серверу будет срываться.

AuthPAMAuthoritive

Директива AuthPAMAuthorative по умолчанию выставлена в "off", позволяя тем самым использовать другие методы аутентификации. Установка этой директивы в "on" сделает невозможным использование внешних файлов, например, определённых в AuthUserFile.

Предзагрузка

Если это не подходит для вашей системы, можно написать собственный модуль или использовать такой подход как 'ld.so.preload', перехватывающий системные вызовы getpwbynam().

Типичная конфигурация PAM

Proftpd практически не требует настроек для поддержки PAM, однако необходимо выполнить некоторую настройку самой подсистемы PAM. Одна из наиболее часто допускаемых ошибок - отсутствие файла /etc/pam.d/ftp, если он не установлен, то запросы аутентификации будут завершаться ошибкой.

В корневом каталоге исходных кодов ProFTPD есть файл README.PAM, где можно почерпнуть более подробные сведения.

Linux

Многие разработчики ProFTPD используют системы RedHat, однако это не должно создать проблем пользователям других дистрибутивов.

Пример 8-1. Стандартная конфигурация PAM для Linux

#%PAM-1.0
auth       required     /lib/security/pam_listfile.so item=user
sense=deny file=/etc/ftpusers onerr=succeed
auth       required     /lib/security/pam_pwdb.so shadow nullok
account    required     /lib/security/pam_pwdb.so
session    required     /lib/security/pam_pwdb.so

Redhat Linux

Пример 8-2. Конфигурация для Redhat 6.*

#%PAM-1.0
auth       required     /lib/security/pam_listfile.so item=user
sense=deny file=/etc/ftpusers onerr=succeed
auth       required     /lib/security/pam_pwdb.so shadow nullok
account    required     /lib/security/pam_pwdb.so
session    required     /lib/security/pam_pwdb.so

SuSE

SuSE предпочитает использовать pam_unix вместо pam_pwdb, который используется в Redhat. Все упоминания pam_pwdb следует заменить на "pam_unix".

Пример 8-3. Конфигурация для SuSe

/etc/pam.d/ftpd
#%PAM-1.0

# Uncomment this to achieve what used to be ftpd -A.
# auth       required     /lib/security/pam_listfile.so item=user sense=allow file=/etc/ftpchroot onerr=fail

auth     required       /lib/security/pam_listfile.so item=user
sense=deny file=/etc/ftpusers onerr=succeed
auth     sufficient     /lib/security/pam_ftp.so
auth     required       /lib/security/pam_unix.so
auth     required       /lib/security/pam_shells.so
account  required       /lib/security/pam_unix.so
password required       /lib/security/pam_unix.so
session  required       /lib/security/pam_unix.so

FreeBSD

FreeBSD не поддерживает директивы сеансов PAM. Если вы удалите из раздела README.PAM, относящегося к FreeBSD, следующую строку, PAM должен правильно работать на большинстве последних версий FreeBSD.

Пример 8-4. Конфигурация для FreeBSD

ftp session required    pam_unix.so         try_first_pass

Ошибки pam_sm_open_session

ProFTPD требует версию PAM не ниже 0.59, поскольку. pam_sm_open_session не обеспечивается предыдующими версиями.

Конфликты с системой PAM

В общем, эти проблемы можно устранить, либо полностью запретив PAM, либо убедившись, что имеются следующие директивы:

PersistentPasswd   off
AuthPAMAuthorative off

Рейтинг@Mail.ru