vsftpdがpam認証に失敗する


13

Fedora 16を使用して、実証済みのvsftpd構成を新しいサーバーに移動すると、問題が発生しました。すべてが正常に実行されるように見えますが、ユーザー認証は失敗します。ログに何が起こったのかを示すエントリが見つかりません。

完全な設定ファイルは次のとおりです。

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

1
PAM構成とは何ですか(/etc/pam.d/vsftpd
ジル「SO-悪であるのをやめる」

/var/log/syslogまたはをお試しくださいdmesg
Hello71

pam config:sessionオプションのpam_keyinit.so強制的に認証を取り消す必要pam_listfile.so item = user sense = deny file = / etc / vsftpd / ftpusers onerr = succeed auth required pam_shells.so auth include password-auth session include pam_loginuid .soセッションにパスワード認証が含まれる
-KateYoak

回答:


24

ふう 問題を解決しました。構成になりますが、/ etc / pam.d / vsftpd内にあります

sshセッションは成功したが、ftpセッションは失敗したため、

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

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

    auth       required     pam_shells.so

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

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

バグを送信できる場所を見つけましょう。


/ etc / shellsは通常、受け入れ可能なシェルのリストを含むと想定されています。これは非常に多くの異なるサブシステムで使用されており、正しいことが期待されています。このファイルはvsftpdによって作成または保守されるのではなく、ディストリビューションのコアセットアップによって作成されます。これはvsftpdのバグではなく、コンピューターのセットアップのバグです。
タイラー

神に感謝します!ログインできないユーザーは、ユーザーシェルとして/ sbin / nologinを持つユーザーと一致することを確認する必要がありました
...-mveroone

どうもありがとうございます!についてのあなたのコメントは/etc/shells、この奇妙な行動の変化の理由を見つけるのに役立ちました。FTP-ユーザーが使用して作成されたShell: /sbin/nologin/sbin/nologinから取り外すことが判明します/etc/shells。そこで、行を追加しましたが/sbin/nologin/usr/sbin/nologinこれauth required pam_shells.soも機能しました。
ボードーヒューゴバーウィッチ

4

私は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

0

あなた自身の答えで述べたように、ユーザーシェルはにリストされて/etc/shellsいるはずです。/sbin/nologinユーザーシェルとして設定して、sshを禁止し、pam構成を変更せずにftpを許可できます。

usermod -s /sbin/nologin restricted_ftp_user

0

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

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

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


0

また、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シェルが含まれていなかったことが判明しました。でPAM認証を行いました/etc/pam.d/vsftpd

auth       required     pam_shells.so

不合格

/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

私の場合、/ 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ファイルを変更することは他のものよりも良い解決策だと思います。


-2

変更を行う前に構成ファイルをバックアップします。

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.back

そして、vsftpd.confを編集します(viまたはnanoを使用)

nano /etc/vsftpd.conf

次に、次の変更を行います

pam_service_name=ftp

変更を保存してftpサーバーを再起動します(nanoを使用する場合は、Ctrl + Oを押してEnterキーを押して保存し、Ctrl + Xキーを押して終了します)

sudo service vsftpd restart
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.