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?
Gilles 'SO- 악한 중지'

/var/log/syslog또는을 시도하십시오 dmesg.
Hello71

pam config : session 옵션 pam_keyinit.so 강제 취소 인증 필요 pam_listfile.so item = user sense = deny file = / etc / vsftpd / ftpusers onerr = 성공 인증 필요 pam_shells.so 인증 포함 비밀번호 인증 계정 포함 비밀번호 인증 세션 포함 pam_loginuid .so 세션에는 비밀번호 인증이 포함됩니다
KateYoak

답변:


24

아휴. 나는 문제를 해결했다. 구성에 해당하지만 /etc/pam.d/vsftpd 내에 있습니다.

ftp 세션이 실패하는 동안 ssh 세션이 성공했기 때문에

/etc/pam.d/vsftpd는 거기에 있던 모든 것을 제거하고 규칙에 정확하게 일치하도록 ./sshd의 내용을 배치했습니다. 모두 일했다!

제거 방법으로 나는 문제의 행이 다음과 같은 것을 발견했다.

    auth       required     pam_shells.so

그것을 제거하면 계속 진행할 수 있습니다.

"pam_shells는 사용자 쉘이 / etc / shells에 나열된 경우에만 시스템에 액세스 할 수있는 PAM 모듈입니다." 나는 거기에서 충분히 보았고, 배쉬도없고 아무것도 없었다. 내 의견으로는 vsftpd 구성의 버그입니다. 문서의 어느 곳에서도 / etc / shells를 편집하지 않아도됩니다. 따라서 기본 설치 및 지침은 명시된대로 작동하지 않습니다.

버그를 제출할 수있는 곳을 찾아 보겠습니다.


/ etc / shells는 일반적으로 허용 가능한 쉘 목록을 포함합니다. 이것은 상당히 다른 서브 시스템에 의해 사용되며 정확할 것으로 예상됩니다. 이 파일은 vsftpd가 아닌 배포판의 핵심 설정에 의해 생성 또는 유지 관리됩니다. 따라서 이것은 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

우분투를 사용하고 있으며 같은 문제가 있습니다.

해결책:

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/nologinpam 구성을 변경하지 않고 ssh를 금지하고 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 구성 파일 의 인증 줄을 주석으로 선택했습니다.

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

그런 다음 vi 또는 nano로 vsftpd.conf를 편집하십시오.

nano /etc/vsftpd.conf

그런 다음 다음과 같이 변경하십시오.

pam_service_name=ftp

변경 사항을 저장하고 ftp 서버를 다시 시작하십시오 (나노 히트 CTRL + O를 사용하여 입력 한 후 저장하려면 CTRL + X를 사용하여 종료하십시오)

sudo service vsftpd restart
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.