vsftpd không xác thực pam


13

Chuyển cấu hình vsftpd đã thử và đúng sang máy chủ mới với Fedora 16, tôi gặp phải một vấn đề. Tất cả dường như đi như nó cần, nhưng xác thực người dùng không thành công. Tôi không thể tìm thấy bất kỳ mục trong bất kỳ nhật ký cho biết những gì đã xảy ra.

Đây là tập tin cấu hình đầy đủ:

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 thách thức tôi về tên người dùng và mật khẩu, tôi cung cấp cho họ, Đăng nhập không chính xác. Tôi đã xác minh, người dùng này có thể đăng nhập từ ssh. Một cái gì đó được vặn lên với pam_service.

Ẩn danh (nếu thay đổi thành cho phép) dường như hoạt động tốt.

SELinux bị vô hiệu hóa.

Ftpsecure dường như được cấu hình tốt ... Tôi hoàn toàn mất mát!

Dưới đây là các tệp nhật ký tôi đã kiểm tra không thành công:

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

Tìm thấy một cái gì đó trong /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'

Có lẽ tôi nên nhìn vào /var/log/wtf-is-wrong.help :-)

Thêm thông tin:

/etc/pam.d/vsftpd trông như thế này:

#%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
Cấu hình PAM là gì ( /etc/pam.d/vsftpdtôi nghĩ vậy)?
Gilles 'SO- ngừng trở nên xấu xa'

Hãy thử /var/log/sysloghoặc dmesg.
Hello71

cấu hình pam phiên .so bao gồm mật khẩu-auth
KateYoak

Câu trả lời:


24

Phù Tôi giải quyết vấn đề. Nó lên tới một cấu hình nhưng trong /etc/pam.d/vsftpd

Vì các phiên ssh đã thành công trong khi các phiên ftp không thành công, tôi đã đi đến

/etc/pam.d/vsftpd, đã xóa mọi thứ đã có ở đó và thay vào đó đặt nội dung của ./sshd để khớp chính xác với các quy tắc. Tất cả đã làm việc!

Bằng phương pháp loại bỏ, tôi thấy rằng dòng vi phạm là:

    auth       required     pam_shells.so

Loại bỏ nó cho phép tôi tiến hành.

Điều chỉnh, "pam_shells là mô-đun PAM chỉ cho phép truy cập vào hệ thống nếu trình bao người dùng được liệt kê trong / etc / shell." Tôi nhìn vào đó và chắc chắn, không bash, không có gì. Đây là một lỗi trong cấu hình vsftpd theo ý kiến ​​của tôi vì không nơi nào trong tài liệu này có bạn chỉnh sửa / etc / shells. Do đó, cài đặt và hướng dẫn mặc định không hoạt động như đã nêu.

Tôi sẽ đi tìm nơi tôi có thể gửi lỗi ngay bây giờ.


/ etc / shell thường được cho là chứa danh sách các shell được chấp nhận. Điều này được sử dụng bởi khá nhiều hệ thống con khác nhau và dự kiến ​​sẽ chính xác. Tệp này không được tạo hoặc duy trì bởi vsftpd, mà là do thiết lập cốt lõi của distro của bạn. Vì vậy, đây không phải là lỗi vsftpd, đây là lỗi với thiết lập máy tính của bạn.
tylerl

Cảm ơn Chúa ! Tôi đã thấy rằng người dùng không thể đăng nhập khớp với những người có / sbin / nologin làm vỏ người dùng ...
mveroone

Cảm ơn bạn rất nhiều! Nhận xét của bạn về /etc/shellsđã giúp tôi tìm ra lý do cho sự thay đổi hành vi kỳ lạ này. Người dùng FTP đã được tạo Shell: /sbin/nologin/sbin/nologinbật ra khỏi /etc/shells. Vì vậy, tôi đã thêm các dòng /sbin/nologin/usr/sbin/nologinlàm cho auth required pam_shells.socông việc quá.
Bodo Hugo Barwich

4

Tôi đang sử dụng Ubuntu và gặp vấn đề tương tự

Giải pháp:

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

Sau đó bình luận và thêm dòng như sau

#%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

Như bạn đã đề cập trong câu trả lời của riêng bạn, vỏ người dùng nên được liệt kê trong /etc/shells. Bạn có thể đặt /sbin/nologinlàm vỏ người dùng để cấm ssh và cho phép ftp mà không thay đổi cấu hình pam:

usermod -s /sbin/nologin restricted_ftp_user

0

Nếu vsftpd không thành công với lỗi

vsftpd.service: quá trình kiểm soát đã thoát, code = exited status = 2

Sau đó, một khả năng khác là kiểm tra nếu pasv_addr_resolve=YESđược thiết lập trong /etc/vsftpd/vsftpd.conftập tin. Điều này khiến tên máy chủ của máy chủ FTP được giải quyết thông qua DNS. Nếu DNS không giải quyết được, như nếu bạn không thể ping yourhostname.example.com, thì bạn sẽ cần khắc phục sự cố phân giải DNS đó hoặc đặt pasv_addr_resolve=NOtrong /etc/vsftpd/vsftpd.confvà ít nhất nên để vsftpd bắt đầu mà không gặp lỗi.


0

Tôi cũng gặp phải hành vi kỳ lạ tương tự khi Người dùng FTP được định cấu hình với

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

trên một hệ thống có thể đăng nhập và trên hệ thống khác không.

Ngoài câu trả lời của @KateYoak, hóa ra /etc/shellsTệp là khác nhau và không bao gồm /sbin/nologinvỏ. đã thực hiện xác thực PAM trong/etc/pam.d/vsftpd

auth       required     pam_shells.so

Thất bại

Chỉ cần thêm vào /etc/shellsTệp những dòng còn thiếu

/sbin/nologin
/usr/sbin/nologin

việc kiểm tra /etc/pam.d/vsftpdđã làm việc

Vì vậy, một /etc/shellstệp làm việc nên có:

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

0

trong trường hợp của tôi, tôi đã chọn nhận xét dòng auth trong tệp cấu hình /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

Đây là lý do. Nếu bạn thêm / sbin / nologin làm hệ thống shell, có lẽ bạn có thể mở một cửa hậu không mong muốn trong hệ thống của mình. Thay vào đó, thay đổi tập tin này chắc chắn bạn chỉ ảnh hưởng đến vsftpd .

Tôi không biết nếu một quá trình khác như sshd tìm kiếm hệ thống, nhưng tôi nghĩ thay đổi tệp pam.d là giải pháp tốt hơn các quy trình khác.


-2

Sao lưu tập tin cấu hình trước khi thực hiện thay đổi;

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

và sau đó chỉnh sửa vsftpd.conf (bằng vi hoặc nano)

nano /etc/vsftpd.conf

Sau đó thực hiện thay đổi sau đây

pam_service_name=ftp

Lưu thay đổi của bạn và khởi động lại máy chủ ftp (nếu bạn sử dụng nano nhấn CTRL + O & enter để lưu thì CTRL + X để thoát)

sudo service vsftpd restart
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.