vsFTPd autenticando com SSSD

3

No momento, estou tentando configurar um servidor FTP que autentica através do Active Directory usando o SSSD.

Meus arquivos de configuração são os seguintes:

/ etc / vsftpd / vsftpd:

[root@StudentOrgFTP vsftpd]# cat vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_log=YES
tcp_wrappers=NO
chroot_local_user=YES
session_support=YES

/etc/sssd/sssd.conf

[sssd]

domains = WORK
services = nss, pam
config_file_version = 2

[pam]
offline_credentials_expiration = 5

[nss]

[domain/WORK]
description = Work domains

enumerate = false

id_provider = ldap
auth_provider = ldap
chpass_provider = none
access_provider = ldap

ldap_pwd_policy = none
ldap_schema = ad
ldap_user_name = sAMAccountName
ldap_user_object_class = person
ldap_group_object_class = group
ldap_id_mapping = True
case_sensitive = false

ldap_id_mapping = True
override_shell = /bin/bash
override_homedir = /srv/student_ftp/%u

# Connection Properties
ldap_uri = ldaps://xxxxx.xxxxxxxx.xxx
# Temporary measure until I can get a hold of a proper certificate
ldap_tls_reqcert = never

ldap_search_base = dc=xxxxxxxx,dc=xxx
ldap_group_search_base = OU=students,dc=xxxxxxxx,dc=xxx
ldap_default_bind_dn = CN=<AD User>,OU=Users,OU=Labs,dc=xxxxxxxx,dc=xxx
ldap_default_authtok_type = password
ldap_default_authtok = <password>

ldap_access_filter = (&(objectClass=person)(ou=students,dc=xxxxxxxx,dc=xxx))

/etc/pam.d/vsftpd

auth required pam_env.so
auth sufficient pam_sss.so
ce with pam_winbind.so
account sufficient pam_sss.so
ce with pam_winbind.so
session required pam_loginuid.so
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpuse
rs onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth

Eu consegui fazer o SSSD trabalhar com essa configuração, eu posso rodar 'id username' ou 'getent passwd username' e ambos retornam com a informação correta, mas se eu usar o comando genérico 'ftp' do linux vsftp can ' t parece autenticar corretamente.

EDITAR: / var / log / secure output:

Jan 27 04:32:36 StudentOrgFTP vsftpd: vsftpd: PAM (vsftpd) illegal module type: ce
Jan 27 04:32:36 StudentOrgFTP vsftpd: PAM pam_parse: expecting return value; [...with]
Jan 27 04:32:36 StudentOrgFTP vsftpd: PAM (vsftpd) illegal module type: ce
Jan 27 04:32:36 StudentOrgFTP vsftpd: PAM pam_parse: expecting return value; [...with]
Jan 27 04:32:36 StudentOrgFTP vsftpd: PAM (vsftpd) illegal module type: rs
Jan 27 04:32:36 StudentOrgFTP vsftpd: PAM pam_parse: expecting return value; [...onerr=succeed]
Jan 27 04:32:36 StudentOrgFTP vsftpd: PAM (vsftpd) no module name supplied
Jan 27 04:32:36 StudentOrgFTP vsftpd: pam_sss(vsftpd:auth): authentication success; logname= uid=0 euid=0 tty=ftp ruser=some_username rhost=localhost user=some_username
Jan 27 04:32:36 StudentOrgFTP vsftpd: pam_sss(vsftpd:account): Access denied for user some_username: 6 (Permission denied)
Jan 27 04:32:36 StudentOrgFTP vsftpd: pam_sss(vsftpd:account): Access denied for user some_username: 6 (Permission denied)
    
por Jeremy Spencer 16.01.2015 / 20:11

4 respostas

1

Primeiramente, verifiquei as configurações do shell e adicionei a seguinte linha ao meu /etc/sss/sssd.conf:

[domain/example.org]
override_shell = /sbin/rbash

mas isso não resolveu o problema.

Depois de comentar a linha

account  [default=bad success=ok user_unknown=ignore]  pam_sss.so

em /etc/pam.d/common-auth os usuários do Active Directory podem fazer login com sua conta do AD.

Mas essa configuração afeta mais serviços de login do que apenas o vsftpd. Por isso, removi o comentário dessa linha (voltando à versão original) e alterei a configuração do pam vsftpd'd:

/etc/pam.d/vsftpd :

# Standard behaviour for ftpd(8).
auth  required   pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed

# Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so.

# Standard pam includes

##@include common-account
account [success=1 new_authtok_reqd=done default=ignore]  pam_unix.so 
account requisite      pam_deny.so
account required       pam_permit.so
account sufficient     pam_localuser.so 

@include common-session
@include common-auth
auth    required       pam_shells.so
    
por 23.02.2017 / 15:58
0

Eu duvido que o shell faltando seja o problema, o arquivo de configuração especifica uma substituição local para o shell usando a diretiva override_shell.

Você vê algum erro em / var / log / secure (ou equivalente a sua distribuição)? Você pode ativar o debug_level para as seções [pam] e [domain] e ver se há algum interesse?

Verificar se os usuários do AD podem autenticar através de outro serviço PAM (su, talvez) também pode ser útil para identificar se o problema está no SSSD ou no vsftpd.

    
por 17.01.2015 / 17:39
0

Meu palpite é que o problema é o

auth required pam_shells.so

linha no seu arquivo /etc/pam.d/vsftpd config. Isso requer que todos os usuários tenham um shell padrão listado em / etc / shells e sua autenticação do AD pode não estar fornecendo isso corretamente.

Eu testaria simplesmente comentando essa linha e, em seguida, se ela funcionar, tome uma decisão sobre se a segurança fornecida por esse teste é necessária e se é necessário descobrir como fazê-la funcionar com o AD e o SSSD.

    
por 16.01.2015 / 21:54
0

Verifique o shell do usuário! Se o shell não estiver listado ( chsh -l ), é aqui que o /etc/pam.d/vsftpd entra em ação.
Alteramos o usuário do padrão /usr/bin/ksh para /bin/ksh e nenhuma outra alteração foi necessária.

    
por 16.01.2017 / 18:47