vsftpd gagal otentikasi pam

13

Memindahkan konfigurasi vsftpd yang dicoba-dan-benar ke server baru dengan Fedora 16, saya mengalami masalah. Semua tampaknya berjalan sebagaimana mestinya, tetapi otentikasi pengguna gagal. Saya tidak dapat menemukan entri dalam log apa pun yang menunjukkan apa yang terjadi.

Ini file konfigurasi lengkap:

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 menantang saya untuk nama pengguna dan kata sandi, saya berikan, Login Tidak Benar. Saya telah memverifikasi, pengguna ini dapat masuk dari ssh. Sesuatu kacau dengan pam_service.

Anonim (jika diubah menjadi diizinkan) tampaknya berfungsi dengan baik.

SELinux dinonaktifkan.

Ftpsecure tampaknya dikonfigurasi dengan baik ... Saya benar-benar bingung!

Berikut adalah file log yang saya periksa tidak berhasil:

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

Menemukan sesuatu di /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'

Mungkin saya harus melihat /var/log/wtf-is-wrong.help :-)

Info lebih lanjut:

/etc/pam.d/vsftpd terlihat seperti ini:

#%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
KateYoak
sumber
1
Apa konfigurasi PAM ( /etc/pam.d/vsftpd, saya pikir)?
Gilles 'SO- stop being evil'
Coba /var/log/syslogatau dmesg.
Hello71
pam config: sesi opsional pam_keyinit.so memaksa mencabut auth diperlukan pam_listfile.so item = pengertian pengguna = menolak file = / etc / vsftpd / ftpusers onerr = auth diperlukan diperlukan pam_shells.so auth sertakan kata sandi-auth akun termasuk kata sandi-auth sesi diperlukan pam_loginuid .so sesi termasuk kata sandi-auth
KateYoak

Jawaban:

24

Wah. Saya memecahkan masalah. Itu berjumlah konfigurasi tetapi di dalam /etc/pam.d/vsftpd

Karena sesi ssh berhasil sementara sesi ftp gagal, saya pergi ke

/etc/pam.d/vsftpd, menghapus semua yang ada di sana dan alih-alih meletakkan konten ./sshd agar sesuai dengan aturan dengan tepat. Semua bekerja!

Dengan metode eliminasi, saya menemukan bahwa garis yang menyinggung adalah:

    auth       required     pam_shells.so

Menghapusnya memungkinkan saya untuk melanjutkan.

Tuns out, "pam_shells adalah modul PAM yang hanya memungkinkan akses ke sistem jika shell pengguna terdaftar di / etc / shells." Saya melihat ke sana dan cukup yakin, tidak ada bash, tidak ada apa-apa. Ini adalah bug dalam konfigurasi vsftpd menurut saya karena tidak ada dalam dokumentasi yang Anda edit / etc / shells. Dengan demikian instalasi dan instruksi default tidak berfungsi seperti yang disebutkan.

Saya akan mencari di mana saya bisa mengirimkan bug sekarang.

KateYoak
sumber
/ etc / shells biasanya berisi daftar shells yang dapat diterima. Ini digunakan oleh beberapa subsistem yang berbeda dan diharapkan benar. File ini tidak dibuat atau dikelola oleh vsftpd, melainkan oleh setup inti distro Anda. Jadi ini bukan bug vsftpd, ini adalah bug dengan pengaturan komputer Anda.
tylerl
Tuhan terima kasih! Saya seharusnya melihat bahwa pengguna tidak dapat masuk dengan orang-orang yang menggunakan / sbin / nologin sebagai shell pengguna ...
mveroone
Terima kasih banyak! Komentar Anda tentang /etc/shellsmembantu saya menemukan alasan untuk perubahan perilaku aneh ini. Pengguna FTP dibuat dengan Shell: /sbin/nologindan /sbin/nologinternyata dihapus dari /etc/shells. Jadi saya menambahkan garis /sbin/nologindan /usr/sbin/nologinyang membuat auth required pam_shells.sopekerjaan juga.
Bodo Hugo Barwich
4

Saya menggunakan ubuntu dan memiliki masalah yang sama

Larutan:

add-shell /sbin/nologin
sudo usermod -s /sbin/nologin ftpme
sudo vi /etc/pam.d/vsftpd

Kemudian komentari dan tambahkan baris sebagai berikut

#%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
Gadelkareem
sumber
0

Seperti yang Anda sebutkan dalam jawaban Anda sendiri, shell pengguna harus didaftar /etc/shells. Anda dapat menetapkan /sbin/nologinsebagai shell pengguna untuk melarang ssh dan mengizinkan ftp tanpa mengubah konfigurasi pam:

usermod -s /sbin/nologin restricted_ftp_user
ml43
sumber
0

Jika vsftpd gagal dengan kesalahan

vsftpd.service: proses kontrol keluar, kode = status keluar = 2

Kemudian kemungkinan lain adalah untuk memeriksa apakah pasv_addr_resolve=YESsudah diatur dalam /etc/vsftpd/vsftpd.conffile. Ini menyebabkan nama host server FTP harus diselesaikan melalui DNS. Jika DNS tidak akan menyelesaikan, seperti jika Anda tidak bisa ping yourhostname.example.com, maka Anda harus memperbaiki masalah resolusi DNS atau mengatur pasv_addr_resolve=NOdalam /etc/vsftpd/vsftpd.confdan setidaknya harus membiarkan vsftpd mulai tanpa kesalahan.

allella
sumber
0

Saya juga mengalami perilaku aneh yang sama dengan konfigurasi Pengguna FTP

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

pada satu Sistem dapat login dan yang lain tidak.

Dalam ekstensi ke Jawaban @KateYoak ternyata /etc/shellsFile berbeda dan tidak termasuk /sbin/nologinshell. yang membuat Otentikasi PAM di/etc/pam.d/vsftpd

auth       required     pam_shells.so

gagal

Dengan hanya menambahkan ke /etc/shellsFile, baris yang hilang

/sbin/nologin
/usr/sbin/nologin

proses check in /etc/pam.d/vsftpdberhasil.

Jadi /etc/shellsFile yang berfungsi harus memiliki:

# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
Bodo Hugo Barwich
sumber
0

dalam kasus saya, saya memilih untuk mengomentari baris auth dalam file config /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/f$
#auth       required    pam_shells.so
auth       include  password-auth
account    include  password-auth
session    required     pam_loginuid.so
session    include  password-auth

Di sinilah alasannya. Jika Anda menambahkan / sbin / nologin sebagai sistem shell, Anda mungkin bisa membuka pintu belakang yang tidak diinginkan di sistem Anda. Sebaliknya, mengubah file ini tentunya Anda hanya memengaruhi vsftpd .

Saya tidak tahu apakah proses lain seperti sshd mencari shell sistem, tapi saya pikir mengubah file pam.d adalah solusi yang lebih baik daripada yang lain.

Sergio Marsilli
sumber
-2

Cadangkan file konfigurasi sebelum melakukan perubahan;

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

dan kemudian edit vsftpd.conf (dengan vi atau nano)

nano /etc/vsftpd.conf

Kemudian buat perubahan berikut

pam_service_name=ftp

Simpan perubahan Anda dan mulai ulang server ftp (jika Anda menggunakan nano tekan CTRL + O & enter untuk menyimpan kemudian CTRL + X untuk keluar)

sudo service vsftpd restart
Shoaib Chikate
sumber