web-dev-qa-db-ja.com

vsftpdがPAM認証に失敗する

実証済みの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
_
13
KateYoak

ふew。私は問題を解決しました。構成に相当しますが、/ etc/pam.d/vsftpd内にあります

Ftpセッションが失敗したときにsshセッションが成功したため、

/etc/pam.d/vsftpd、そこにあったものをすべて削除し、代わりに./sshdの内容を配置してルールに正確に一致させます。すべてがうまくいきました!

除去の方法により、問題のある行は次のとおりであることがわかりました。

    auth       required     pam_shells.so

それを削除すると、続行できます。

「pam_shellsは、ユーザーのシェルが/ etc/shellsにリストされている場合にのみシステムへのアクセスを許可するPAMモジュールです。」私はそこを見ました、そして確かに、bashも何もありません。これは、私の意見ではvsftpd構成のバグであり、ドキュメントのどこにも/ etc/shellsを編集させる必要がないためです。したがって、デフォルトのインストールと指示は、記載されたとおりに機能しません。

今すぐバグを送信できる場所を探しに行きます。

24
KateYoak

私はubuntuを使用していますが、同じ問題がありました

解決:

add-Shell /sbin/nologin
Sudo usermod -s /sbin/nologin ftpme
Sudo vi /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/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
@include common-auth
@include common-account
@include common-password
@include common-session
4
Gadelkareem

また、FTPユーザーが次のように構成されている場合と同じ奇妙な動作に遭遇しました。

# finger <user>
Login: <user>                   Name: 
Directory: /home/user-dir           Shell: /sbin/nologin
Never logged in.
No mail.
No Plan.

一方のシステムではログインでき、もう一方ではログインできません。

@KateYoakの回答を拡張すると、/etc/shellsファイルが異なり、/sbin/nologinシェルが含まれていないことがわかりました。 /etc/pam.d/vsftpdでPAM認証を行った

auth       required     pam_shells.so

fail

/etc/shellsファイルに不足している行を追加するだけで

/sbin/nologin
/usr/sbin/nologin

/etc/pam.d/vsftpdのチェックが機能しました。

したがって、動作する/etc/shellsファイルには次のものが必要です。

# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
0

あなた自身の答えで述べたように、ユーザーShellは/etc/shells/sbin/nologinユーザーShellとして、sshを禁止し、pam構成を変更せずにftpを許可します。

usermod -s /sbin/nologin restricted_ftp_user
0
ml43

私の場合、/ etc/pam.d/vsftpd構成ファイルのauth行にコメントを付けることを選択しました

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

ここにあなたが理由があります。 / sbin/nologinをシェルシステムとして追加すると、システムで不要なバックドアが開かれる可能性があります。代わりに、このファイルを変更しても、影響があるのはvsftpdだけです。

sshdのような別のプロセスがシステムシェルを探すかどうかはわかりませんが、pam.dファイルを変更する方法が他の方法よりも優れていると思います。

0
Sergio Marsilli

Vsftpdが次のエラーで失敗した場合

vsftpd.service:制御プロセスが終了しました、コード=終了ステータス= 2

次に、pasv_addr_resolve=YESファイルに/etc/vsftpd/vsftpd.confが設定されているかどうかを確認することもできます。これにより、FTPサーバーのホスト名がDNSを介して解決されます。 ping yourhostname.example.comができないなど、DNSが解決しない場合は、DNS解決の問題を修正するか、pasv_addr_resolve=NO/etc/vsftpd/vsftpd.confを設定する必要があります。 vsftpdはエラーなしで起動します。

0
allella