vsftpd falha na autenticação do pam

13

Movendo uma configuração testada e comprovada do vsftpd para um novo servidor com o Fedora 16, encontrei um problema. Tudo parece correr como deveria, mas a autenticação do usuário falha. Não consigo encontrar nenhuma entrada em nenhum log que indique o que aconteceu.

Aqui está o arquivo de configuração completo:

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

O FTP me desafia por um nome de usuário e senha, eu os forneço, Login incorreto. Eu verifiquei, este usuário pode fazer login no ssh. Algo está errado pam_service.

Anônimo (se alterado para permitido) parece funcionar bem.

O SELinux está desativado.

Ftpsecure parece estar bem configurado ... Estou com uma perda total!

Aqui estão os arquivos de log que examinei sem sucesso:

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

Encontrou algo em /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'

Talvez eu devesse olhar para /var/log/wtf-is-wrong.help :-)

Mais informações:

/etc/pam.d/vsftpd é assim:

#%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
fonte
1
Qual é a configuração do PAM ( /etc/pam.d/vsftpdeu acho)?
Gilles 'SO- stop be evil'
Tente /var/log/syslogou dmesg.
Hello71
pam config: sessão opcional pam_keyinit.so força a revogar autenticação necessária pam_listfile.so item = senso do usuário = negar arquivo = / etc / vsftpd / ftpusers onerr = autenticação com êxito necessária pam_shells.so auth incluir conta de autenticação por senha .so session include password-auth
KateYoak

Respostas:

24

Ufa. Eu resolvi o problema. Isso equivale a uma configuração, mas dentro de /etc/pam.d/vsftpd

Como as sessões ssh tiveram êxito enquanto as sessões ftp falharam, fui para

/etc/pam.d/vsftpd, removeu tudo o que estava lá e colocou o conteúdo de ./sshd para corresponder às regras com precisão. Tudo funcionou!

Pelo método de eliminação, descobri que a linha incorreta era:

    auth       required     pam_shells.so

Removê-lo permite-me continuar.

Além disso, "pam_shells é um módulo PAM que somente permite acesso ao sistema se o shell do usuário estiver listado em / etc / shells." Eu olhei lá e com certeza, sem festança, sem nada. Este é um erro na configuração do vsftpd, na minha opinião, pois em nenhum lugar da documentação ele está editando o / etc / shells. Portanto, a instalação e as instruções padrão não funcionam como indicado.

Vou descobrir onde posso enviar o erro agora.

KateYoak
fonte
Normalmente, o / etc / shells deve conter uma lista de shells aceitáveis. Isso é usado por vários subsistemas diferentes e espera-se que esteja correto. Este arquivo não é criado ou mantido pelo vsftpd, mas pela configuração principal da sua distribuição. Portanto, este não é um bug do vsftpd, é um erro da configuração do seu computador.
tylerl
Deus obrigado! Eu deveria ter visto que o usuário não pode logar-se combinava aqueles com / sbin / nologin como shell do usuário ...
mveroone
Muito obrigado! Seu comentário sobre /etc/shellsme ajudou a encontrar o motivo dessa estranha mudança de comportamento. O usuário FTP foi criado Shell: /sbin/nologine /sbin/nologinremovido para /etc/shells. Então eu adicionei as linhas /sbin/nologine o /usr/sbin/nologinque deu auth required pam_shells.socerto também.
Bodo Hugo Barwich 28/01/19
4

Estou usando o ubuntu e tive o mesmo problema

Solução:

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

Em seguida, comente e adicione linhas da seguinte maneira

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

Como você mencionou em sua própria resposta, o shell do usuário devem ser listados no /etc/shells. Você pode definir /sbin/nologincomo shell do usuário para proibir o ssh e permitir o ftp sem alterar a configuração do pam:

usermod -s /sbin/nologin restricted_ftp_user
ml43
fonte
0

Se o vsftpd falhar com um erro de

vsftpd.service: processo de controle encerrado, código = status encerrado = 2

Outra possibilidade é verificar se pasv_addr_resolve=YESo /etc/vsftpd/vsftpd.confarquivo está definido . Isso faz com que o nome do host do servidor FTP seja resolvido via DNS. Se o DNS não resolver, como se você não puder ping yourhostname.example.com, será necessário corrigir o problema de resolução do DNS ou definir pasv_addr_resolve=NOo /etc/vsftpd/vsftpd.confarquivo e deve pelo menos permitir que o vsftpd inicie sem o erro.

allella
fonte
0

Eu também tive o mesmo comportamento estranho em que um usuário de FTP configurado com

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

em um sistema é possível efetuar login e, por outro, não.

Em extensão à resposta de @KateYoak, o /etc/shellsarquivo era diferente e não incluía o /sbin/nologinshell. que fez a autenticação PAM em/etc/pam.d/vsftpd

auth       required     pam_shells.so

falhou

Apenas adicionando ao /etc/shellsarquivo as linhas ausentes

/sbin/nologin
/usr/sbin/nologin

o check-in /etc/pam.d/vsftpdfuncionou.

Portanto, um /etc/shellsarquivo de trabalho deve ter:

# 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
fonte
0

no meu caso, optei por comentar a linha de autenticação no arquivo de configuração /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

Aqui está o motivo. Se você adicionar / sbin / nologin como um sistema shell, provavelmente poderá abrir um backdoor indesejado no seu sistema. Em vez disso, alterar esse arquivo certamente afeta apenas o vsftpd .

Não sei se outro processo como o sshd procura por shells do sistema, mas acho que alterar o arquivo pam.d é uma solução melhor do que outros.

Sergio Marsilli
fonte
-2

Faça backup do arquivo de configuração antes de fazer uma alteração;

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

e edite o vsftpd.conf (com vi ou nano)

nano /etc/vsftpd.conf

Em seguida, faça a seguinte alteração

pam_service_name=ftp

Salve suas alterações e reinicie o servidor ftp (se você usar nano, pressione CTRL + O e insira para salvar e CTRL + X para sair)

sudo service vsftpd restart
Shoaib Chikate
fonte