Ldap

vsftpd 使用者認證

  • August 1, 2018

我已經設置了一個執行 Centos 7 和 VSFTPD 的虛擬機。

VSFTPD 在與本地使用者連接時效果很好。它使用**“useradd -d”將使用者 chroot 到他之前在/ftp/pub/{user_name}中創建的家中。我添加了 TLS 加密,它也很好用(在此處禁用以查看問題所在)。我已將/ftp的 SElinux 上下文設置為public_content_t**;/ftp/pub(/.*)?public_content_rw_t並在 /ftp/pub 上設置 755 權限

最近,我嘗試通過執行以下操作將 LDAP 身份驗證添加到 VSFTPD 伺服器:

authconfig --enableldap --enableldapauth --ldapserver=name_of_my_server --ldapbasedn="dc=item1,dc=item2,dc=item3" --enablemkhomedir --update    

但它只將身份驗證添加到伺服器本身(我可以使用非本地帳戶 ssh 到伺服器),而不是服務(vsftp),所以我遇到了:

500 OOPS:無法更改目錄:/home/default/path

我從這個錯誤中了解到的是,它嘗試登錄預設首頁(顯然不存在)而不創建新首頁。**我想要做的是,當非本地使用者嘗試在我的伺服器上進行 FTP 訪問時,它會在/ftp/pub/{user_name}**中為他創建一個新家並在其中 chroot 他。

這是 pam.d/login:

#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth       substack     system-auth
auth       include      postlogin
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
session    optional     pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    include      postlogin
-session   optional     pam_ck_connector.so

pam.d/vsftpd:

#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_shells.so
auth       include      password-auth
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth

vsftpd.conf:

anonymous_enable=NO
#Permet aux utilisateurs locaux de RW
local_enable=YES
write_enable=YES
local_umask=022
pasv_enable=YES
pasv_max_port=1026
pasv_min_port=1025
dirmessage_enable=YES
connect_from_port_20=YES
ascii_download_enable=YES
ascii_upload_enable=YES
ftpd_banner=Welcome to blah FTP service.

#Partie chroot
chroot_local_user=YES
allow_writeable_chroot=YES
local_root=/ftp/pub/$USER
user_sub_token=$USER
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list

#logs
xferlog_enable=YES
xferlog_std_format=NO
log_ftp_protocol=YES

listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

# Ajouts
use_localtime=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
require_ssl_reuse=NO
ssl_ciphers=HIGH
ssl_enable=NO
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES

我真的被困在 VSFTPD 的 ldap 身份驗證上,在 serverfault 上的其他文章上找不到我應該做什麼。如果有人可以幫助我或推薦文件,將不勝感激。

編輯:SSH登錄在預設路徑(/home)中為使用者成功創建了一個首頁,FTP登錄既不在/home中創建它,也不在**/ftp/pub中創建它,我的目標是在FTP登錄時為使用者創建一個首頁/ ftp/pub**

EDIT2:正如 mxttie 所建議的,我可以使用 pam_exec,但它會更多地“繞過”問題而不真正解決它。我必須在“/home”中創建一個文件夾,然後在“/ftp/pub”中為每個要連接的使用者創建一個文件夾,以解決兩個連續的500 OOPS錯誤

使用pam_exec模組呼叫執行必要命令的腳本(即在**/ftp/pub**中為非本地使用者創建主目錄)

引用自:https://serverfault.com/questions/924256