vsftpd ล้มเหลวในการตรวจสอบสิทธิ์แพม


13

การย้ายการกำหนดค่า 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

1
การกำหนดค่า PAM คืออะไร ( /etc/pam.d/vsftpdฉันคิดว่า)
Gilles 'หยุดความชั่วร้าย'

ลองหรือ/var/log/syslog dmesg
Hello71

การกำหนดค่า pam: เซสชันเสริม pam_keyinit.so บังคับให้ถอนการรับรองความถูกต้องรายการ pam_listfile.so รายการ = user sense = ปฏิเสธไฟล์ = / etc / vsftpd / ftpusers onerr = ประสบความสำเร็จในการรับรองความถูกต้องบัญชี ph_shells.so รวมรหัสผ่านรับรองความถูกต้อง . เซสชันรวมถึงรหัสผ่านรับรองความถูกต้อง
KateYoak

คำตอบ:


24

ต๊าย ฉันแก้ไขปัญหา มันเป็นจำนวนการกำหนดค่า แต่ภายใน /etc/pam.d/vsftpd

เนื่องจากเซสชัน ssh ประสบความสำเร็จในขณะที่เซสชัน ftp ล้มเหลวฉันจึงไปที่

/etc/pam.d/vsftpd ลบทุกอย่างที่อยู่ที่นั่นและวางเนื้อหาของ. / sshd เพื่อให้ตรงกับกฎอย่างแม่นยำ ทำงานได้ดี!

โดยวิธีการกำจัดฉันพบว่าบรรทัดที่กระทำผิดคือ:

    auth       required     pam_shells.so

การลบทำให้ฉันสามารถดำเนินการต่อได้

ปรับช่องสัญญาณออก "pam_shells เป็นโมดูล PAM ที่อนุญาตการเข้าถึงระบบเท่านั้นหากผู้ใช้เชลล์แสดงรายการใน / etc / shells" ฉันดูที่นั่นและก็ไม่ผิดไม่มีอะไรเลย นี่เป็นข้อผิดพลาดในการกำหนดค่า vsftpd ในความคิดของฉันเพราะไม่มีที่ไหนในเอกสารประกอบให้คุณแก้ไข / etc / shells ดังนั้นการติดตั้งเริ่มต้นและคำแนะนำจะไม่ทำงานตามที่ระบุไว้

ฉันจะไปหาที่ที่ฉันสามารถส่งข้อบกพร่องตอนนี้


โดยทั่วไปแล้ว / etc / shells ควรจะมีรายการของเชลล์ที่ยอมรับได้ สิ่งนี้ถูกใช้โดยระบบย่อยที่แตกต่างกันเล็กน้อยและคาดว่าจะถูกต้อง ไฟล์นี้ไม่ได้สร้างหรือดูแลโดย vsftpd แต่เป็นการตั้งค่าหลักของ distro ของคุณ ดังนั้นนี่ไม่ใช่ข้อผิดพลาด vsftpd แต่เป็นข้อผิดพลาดกับการตั้งค่าคอมพิวเตอร์ของคุณ
tylerl

ขอบคุณพระเจ้า! ฉันควรจะเห็นว่าผู้ใช้ไม่สามารถเข้าสู่ระบบที่ตรงกับผู้ที่มี / sbin / nologin เป็นผู้ใช้เชลล์ ...
mveroone

ขอบคุณมาก! ความคิดเห็นของคุณเกี่ยวกับ/etc/shellsช่วยให้ฉันค้นหาสาเหตุของการเปลี่ยนแปลงพฤติกรรมแปลก ๆ นี้ FTP ที่ผู้ใช้ถูกสร้างขึ้นด้วยShell: /sbin/nologinและเปิดออกจะถูกลบออกจาก/sbin/nologin /etc/shellsดังนั้นฉันจึงเพิ่มเส้น/sbin/nologinและ/usr/sbin/nologinซึ่งทำให้auth required pam_shells.soงานเกินไป
Bodo Hugo Barwich

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 และอนุญาต ftp โดยไม่เปลี่ยนการกำหนดค่า pam:

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-User กำหนดค่าด้วย

# 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

ในกรณีของฉันฉันเลือกที่จะแสดงความคิดเห็นบรรทัด auth ในไฟล์ /etc/pam.d/vsftpd config

#%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 hit CTRL + O และป้อนเพื่อบันทึกจากนั้นกด CTRL + X เพื่อออก)

sudo service vsftpd restart
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.