В настоящее время я пытаюсь настроить FTP-сервер, который аутентифицируется через Active Directory с помощью SSSD.
Мои файлы конфигурации следующие:
/ и т.д. / vsftpd / vsftpd:
[root@StudentOrgFTP vsftpd]# cat vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_log=YES
tcp_wrappers=NO
chroot_local_user=YES
session_support=YES
/etc/sssd/sssd.conf
[sssd]
domains = WORK
services = nss, pam
config_file_version = 2
[pam]
offline_credentials_expiration = 5
[nss]
[domain/WORK]
description = Work domains
enumerate = false
id_provider = ldap
auth_provider = ldap
chpass_provider = none
access_provider = ldap
ldap_pwd_policy = none
ldap_schema = ad
ldap_user_name = sAMAccountName
ldap_user_object_class = person
ldap_group_object_class = group
ldap_id_mapping = True
case_sensitive = false
ldap_id_mapping = True
override_shell = /bin/bash
override_homedir = /srv/student_ftp/%u
# Connection Properties
ldap_uri = ldaps://xxxxx.xxxxxxxx.xxx
# Temporary measure until I can get a hold of a proper certificate
ldap_tls_reqcert = never
ldap_search_base = dc=xxxxxxxx,dc=xxx
ldap_group_search_base = OU=students,dc=xxxxxxxx,dc=xxx
ldap_default_bind_dn = CN=<AD User>,OU=Users,OU=Labs,dc=xxxxxxxx,dc=xxx
ldap_default_authtok_type = password
ldap_default_authtok = <password>
ldap_access_filter = (&(objectClass=person)(ou=students,dc=xxxxxxxx,dc=xxx))
/etc/pam.d/vsftpd
auth required pam_env.so
auth sufficient pam_sss.so
ce with pam_winbind.so
account sufficient pam_sss.so
ce with pam_winbind.so
session required pam_loginuid.so
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpuse
rs onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth
Мне удалось заставить SSSD работать с этой конфигурацией, я могу запустить 'id username' или 'getent passwd username', и они оба возвращаются с правильной информацией, но если я использую общую команду linux 'ftp', vsftp не может пройти аутентификацию правильно.
РЕДАКТИРОВАТЬ: / var / log / безопасный вывод:
Jan 27 04:32:36 StudentOrgFTP vsftpd: vsftpd: PAM (vsftpd) illegal module type: ce
Jan 27 04:32:36 StudentOrgFTP vsftpd: PAM pam_parse: expecting return value; [...with]
Jan 27 04:32:36 StudentOrgFTP vsftpd: PAM (vsftpd) illegal module type: ce
Jan 27 04:32:36 StudentOrgFTP vsftpd: PAM pam_parse: expecting return value; [...with]
Jan 27 04:32:36 StudentOrgFTP vsftpd: PAM (vsftpd) illegal module type: rs
Jan 27 04:32:36 StudentOrgFTP vsftpd: PAM pam_parse: expecting return value; [...onerr=succeed]
Jan 27 04:32:36 StudentOrgFTP vsftpd: PAM (vsftpd) no module name supplied
Jan 27 04:32:36 StudentOrgFTP vsftpd: pam_sss(vsftpd:auth): authentication success; logname= uid=0 euid=0 tty=ftp ruser=some_username rhost=localhost user=some_username
Jan 27 04:32:36 StudentOrgFTP vsftpd: pam_sss(vsftpd:account): Access denied for user some_username: 6 (Permission denied)
Jan 27 04:32:36 StudentOrgFTP vsftpd: pam_sss(vsftpd:account): Access denied for user some_username: 6 (Permission denied)
Сначала я проверил настройки оболочки и добавил следующую строку в свой /etc/sss/sssd.conf:
[domain/example.org]
override_shell = /sbin/rbash
но это не решило проблему.
После комментирования строки
account [default=bad success=ok user_unknown=ignore] pam_sss.so
в /etc/pam.d/common-auth Пользователи Active Directory могут войти в систему со своей учетной записью AD.
Но этот параметр влияет не только на vsftpd, но и на большее количество служб входа в систему. Поэтому я удалил комментарий из этой строки (вернувшись к исходной версии) и вместо этого изменил конфигурацию pam vsftpd:
/etc/pam.d/vsftpd:
# Standard behaviour for ftpd(8).
auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
# Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so.
# Standard pam includes
##@include common-account
account [success=1 new_authtok_reqd=done default=ignore] pam_unix.so
account requisite pam_deny.so
account required pam_permit.so
account sufficient pam_localuser.so
@include common-session
@include common-auth
auth required pam_shells.so
Проверьте оболочку пользователя! Если оболочки нет в списке (chsh -l
), вот где /etc/pam.d/vsftpd
вступает в игру.
Мы изменили пользователя по умолчанию /usr/bin/ksh
к /bin/ksh
и никаких других изменений не потребовалось.
Я предполагаю, что проблема в том,
auth required pam_shells.so
линия в вашем /etc/pam.d/vsftpd
файл конфигурации. Для этого необходимо, чтобы у всех пользователей была оболочка по умолчанию, которая указана в / etc / shells, и ваша аутентификация AD может не обеспечивать это правильно.
Я бы протестировал, просто прокомментировав эту строку, а затем, если она работает, примите решение о том, требуется ли безопасность, обеспечиваемая этим тестом, и нужно ли выяснить, как заставить ее работать с AD и SSSD.
Я сомневаюсь, что проблема заключается в отсутствующей оболочке, в конфигурационном файле указывается локальное переопределение оболочки с помощью директивы override_shell.
Вы видите какие-либо ошибки в / var / log / secure (или в эквиваленте вашего дистрибутива)? Можете ли вы включить debug_level для разделов [pam] и [domain] и посмотреть, есть ли что-нибудь интересное?
Проверка того, могут ли пользователи AD проходить аутентификацию через другую службу PAM (возможно, su), также может быть полезной для определения того, кроется ли проблема в SSSD или vsftpd.