Eu tenho clientes externos que fazem upload/download de arquivos via FTP vsftpd no Ubuntu 18.04. Eles usam contas linux (não virtuais), são chrooted e só precisam (e fazem) ver em seus próprios diretórios.
Agora, suas casas precisam estar acessíveis de alguma forma no Windows para visualização e possivelmente edição de uploads por nossos administradores de aplicativos e operadores de aplicativos específicos, que são usuários regulares do Windows AD.
Gostaria de mover todo o /home de um compartilhamento do Windows AD em nosso servidor de arquivos e torná-lo acessível por grupos de segurança específicos do AD, mas não tenho certeza se isso funcionará com permissões do linux? Eu explicitamente gostaria de evitar o compartilhamento de pastas do Ubuntu pela rede.
A ideia:
monte /home como compartilhamento CIFS do servidor de arquivos AD.
vsftpd -- Usuários de FTP chroot para montado / home -- cada um pode ler/escrever seu próprio diretório
Usuários do Windows AD - podem ver os diretórios no Windows em seu compartilhamento existente, com o grupo de segurança adequado do AD pode ler/gravar qualquer arquivo em qualquer subdiretório inicial
Isso funcionaria? Se não, o que mais posso fazer? Talvez eu precise migrar para usuários virtuais vsftpd?
Eu já tenho alguns compartilhamentos CIFS montados no Ubuntu, mas todos eles mapeiam para uid/gid único e não tenho certeza se o vsftpd funcionaria com a configuração acima.
Acho que aqui, mas eu tentaria 3 maneiras:
Acontece que até mesmo uma mistura de usuários virtuais e reais funciona! O guia é para o Ubuntu 18.04 LTS, mas também deve funcionar em outros Linux, embora os locais dos arquivos possam mudar.
Então, uma maneira de fazer isso é esta:
/etc/fstab
://Your_CIFS_Server/share /mnt/cifs_homes cifs credentials=/etc/your_AD_password_data_file,uid=ftpuser,gid=ftpusers,file_mode=0770,dir_mode=0770 0 0
Obviamente, não se esqueça de definir o arquivo de senha para ser acessível apenas pelo root para alguns pequenos bônus de segurança.
/etc/vsftpd.conf
deve ter pelo menos estas linhas:local_enable=YES nopriv_user=ftpuser chroot_local_user=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd user_config_dir=/etc/vsftpd.userconf
/etc/pam.d/vsftpd
para oferecer suporte a usuários virtuais e locais:Usuários virtuais:
auth sufficient pam_pwdfile.so pwdfile /etc/vsftpd.passwd account sufficient pam_permit.so
A adição de usuários virtuais é feita via
htpasswd -d
comando no arquivo /etc/vsftpd.passwd. Este arquivo também pode ser acesso root apenas por alguma medida menor de segurança.Observe que pam_pwdfile parece oferecer suporte apenas à criptografia CRYPT do arquivo vsftpd.passwd ao usar htpasswd , que não é seguro, portanto, você deve gerar senhas com openssl conforme descrito no link ou, além disso, use pelo menos restrição de endereço SSL ou IP para acesso FTP.
Usuários locais:
auth required pam_shells.so
Todas essas linhas devem estar presentes junto com as linhas usuais @include common-* e o que mais você precisar no arquivo pam vsftpd.
Adicione arquivos para cada usuário local e virtual em /etc/vsftpd.conf/ nomeado como usuário.
O usuário local deve ter apenas os valores normais de idle_session_timeout ou o que você precisar. Seu homedir será o usual /home ou o que estiver definido em /etc/passwd.
Os usuários virtuais devem ter além do que você precisar para o usuário local, estas linhas:
chroot_local_user=YES local_root=/mnt/cifs_homes/$USER user_sub_token=$USER virtual_use_local_privs=YES guest_enable=YES nopriv_user=ftpuser guest_username=ftpusers
O que você obtém no final é:
1) Do lado do Windows, o acesso é controlado com quaisquer usuários e grupos do AD que você definir permissões do AD nele. Apenas tenha em mente que unix_server_user@domain deve ter acesso de gravação a ele, a menos que você queira FTP somente leitura.
2) A partir do Unix, todos os acessos de usuários virtuais são mapeados para ftpuser.ftpusers. Os usuários locais usam o servidor Unix /home como de costume.
3) Todos os logins de FTP têm chroot para seu respectivo homedir e podem ler e escrever nele.