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
부르다. 이 문제를 해결했습니다. 구성과 동일하지만 /etc/pam.d/vsftpd에 있습니다.
SSH 세션은 성공하고 FTP 세션은 실패했기 때문에
/etc/pam.d/vsftpd, 그 안에 있는 모든 것을 제거하고 대신 규칙과 정확히 일치하도록 ./sshd의 내용을 배치했습니다. 모두 제일 좋다!
제거 과정에서 문제가 있는 줄은 다음과 같습니다.
auth required pam_shells.so
이를 제거하면 계속할 수 있습니다.
"pam_shells는 사용자의 쉘이 /etc/shells에 나열되어 있는 경우에만 시스템에 대한 액세스를 허용하는 PAM 모듈입니다." 찾아보니 혼동도 없고 아무 것도 없었습니다. 나는 이것이 vsftpd 구성의 버그라고 생각합니다. 문서 어디에도 /etc/shells를 편집할 수 있는 내용이 없기 때문입니다. 따라서 기본 설치 및 지침이 지정된 대로 작동하지 않습니다.
이제 버그를 제출할 수 있는 곳을 찾아보겠습니다.
답변2
우분투를 사용하고 있는데 같은 문제에 직면했습니다
해결책:
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
답변3
내 경우에는 인증 라인에 주석을 달기로 선택했습니다./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
이것이 당신의 이유입니다. 추가하면/sbin/nologin쉘 시스템으로서 시스템에서 원치 않는 백도어를 열 수 있습니다. 대신 이 파일을 변경하면 확실히 영향을 미칠 것입니다.VSFTPD.
다른 과정이 있는지는 모르겠지만SSHD시스템 쉘을 찾고 있는데 다른 것보다 pam.d 파일을 변경하는 것이 더 나은 해결책이라고 생각합니다.
답변4
vsftpd가 다음 오류와 함께 실패하는 경우
vsftpd.service: 제어 프로세스는 코드=종료 상태=2로 종료됩니다.
pasv_addr_resolve=YES
그런 다음 또 다른 가능성은 파일 에 설정되어 있는지 확인하는 것입니다 /etc/vsftpd/vsftpd.conf
. 이렇게 하면 FTP 서버의 호스트 이름이 DNS를 통해 확인됩니다. DNS가 해결되지 않으면 DNS 해결 문제를 해결하거나 최소한 vsftpd가 오류 없이 시작 되도록 ping yourhostname.example.com
설정해야 합니다 .pasv_addr_resolve=NO
/etc/vsftpd/vsftpd.conf