Security

vsftpd 無法通過 pam 身份驗證

  • June 9, 2021

將久經考驗的 vsftpd 配置移動到使用 Fedora 16 的新伺服器上,我遇到了一個問題。一切似乎都按原樣進行,但使用者身份驗證失敗。我在任何日誌中都找不到任何表明發生了什麼的條目。

這是完整的配置文件:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
idle_session_timeout=0
data_connection_timeout=0
nopriv_user=ftpsecure
connect_from_port_20=YES
listen=YES
chroot_local_user=YES
chroot_list_enable=NO
ls_recurse_enable=YES
listen_ipv6=NO

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

FTP 向我詢問使用者名和密碼,我提供了,登錄不正確。我已經驗證,這個使用者可以從 ssh 登錄。事情搞砸了pam_service

匿名(如果更改為允許)似乎運作良好。

SELinux 被禁用。

Ftpsecure 似乎配置得很好……我完全不知所措!

以下是我檢查但沒有成功的日誌文件:

/var/log/messages
/var/log/xferlog      #empty
/var/log/vsftpd.log   #empty
/var/log/secure

發現了一些東西/var/log/audit/audit.log

type=USER_AUTH msg=audit(1335632253.332:18486): user pid=19528 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:authentication acct="kate" exe="/usr/sbin/vsftpd" hostname=ip68-5-219-23.oc.oc.cox.net addr=68.5.219.23 terminal=ftp res=failed'

也許我應該看看/var/log/wtf-is-wrong.help :-)

更多資訊:

/etc/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

唷。我解決了這個問題。它相當於一個配置,但在 /etc/pam.d/vsftpd 內

因為 ssh 會話成功而 ftp 會話失敗,所以我去了

/etc/pam.d/vsftpd,刪除了那裡的所有內容,而是放置 ./sshd 的內容以精確匹配規則。一切正常!

通過消除的方法,我發現有問題的行是:

   auth       required     pam_shells.so

刪除它可以讓我繼續。

調出,“pam_shells 是一個 PAM 模組,僅當使用者 shell 列在 /etc/shells 中時才允許訪問系統。” 我看了看那裡,果然,沒有 bash,什麼都沒有。在我看來,這是 vsftpd 配置中的一個錯誤,因為在文件中沒有任何地方讓您編輯 /etc/shells。因此,預設安裝和說明無法按說明工作。

我現在去尋找可以送出錯誤的地方。

引用自:https://unix.stackexchange.com/questions/37539