Autenticar usuários do CVS em relação ao Active Directory

2

Eu tenho um ambiente misto de desenvolvimento de software Linux / Windows, no qual os clientes Linux estão migrando para um sistema em que eles podem se autenticar no Active Directory. (Essa parte eu descobri)

Nosso laboratório está atualmente usando o CVS para conduzir o controle de versão em nosso código-fonte. Na migração, precisaremos que os usuários possam se autenticar em nosso servidor CVS. Eu planejei que quando a migração ocorrer, nós configuraremos o servidor CVS para também autenticar os usuários no AD.

Infelizmente, não tenho muita experiência com o CVS. Esta tarefa é mesmo possível? Pelo que entendi, ele pode ser configurado para autenticar usuários com base nos usuários locais no sistema. No entanto, como os usuários reais não terão suas credenciais armazenadas localmente no servidor (já que estão sendo extraídas do AD), é possível apontar que o CVS dependa de pam para autenticação?

Eu li sobre o acesso ao CVS através do SSH com credenciais de usuário. Isso seria um requisito para que isso ocorresse? Se sim, como se configura isso?

Eu aprecio muito a ajuda!

    
por Phanto 13.08.2010 / 18:49

2 respostas

0

Acontece que o CVS apenas usa o PAM. Portanto, se o seu servidor já estiver configurado para autenticar no AD, o CVS também receberá as informações de autenticação.

A sugestão de wolfgangsz é muito útil para concluir o 1º passo (autenticação do servidor para o AD via LDAP [você também pode usar o Winbind]).

    
por 23.08.2010 / 21:34
5

Isso será bastante longo, mas vamos fazer assim mesmo. Primeiro de tudo, sim, isso pode ser feito. Eu não posso fornecer muito na maneira de configurar o CVS, mas posso fornecer tudo que você precisa para fazer um servidor linux autenticar usuários contra o Active Directory. Tudo começa com /etc/nsswitch.conf. Aqui está a seção relevante: passwd: files ldap compat
shadow: files ldap compat
group: files ldap compat

Agora, dependendo de qual distro você estiver usando, você precisará instalar alguns pacotes do ldap. Sob Redhat / Fedora / CentOS isso seria nss_ldap, sob Debian / Ubuntu e os likes, você precisará de libnss-ldap e libpam-ldap. Eu também recomendaria alguns utilitários ldap para depuração.

Com o nome acima, os serviços tentarão usar o LDAP, portanto, agora você precisa configurar os vários pacotes LDAP para usar o servidor do AD. A base de pesquisa deve ser base cn=Users,dc=aminocom,dc=com e o DN de ligação deve ser binddn cn=LDAPsearch,cn=Users,dc=aminocom,dc=com . Você precisará definir um usuário específico para permitir a navegação do AD. Criamos um usuário chamado LDAPSearch e colocamos suas credenciais em um arquivo separado chamado .secret. Leia a documentação desses pacotes para mais detalhes. Além disso, eu recomendaria uma política de soft bind e os seguintes mapeamentos de atributos:

# Services for UNIX 3.5 mappings
nss_base_passwd cn=Users,dc=aminocom,dc=com?sub
nss_base_shadow cn=Users,dc=aminocom,dc=com?sub
nss_base_group cn=Users,dc=aminocom,dc=com?sub
nss_map_objectclass posixAccount user
nss_map_objectclass shadowAccount user
nss_map_attribute uid sAMAccountName
nss_map_attribute uidNumber msSFU30UidNumber
nss_map_attribute gidNumber msSFU30GidNumber
nss_map_attribute loginShell msSFU30LoginShell
nss_map_attribute gecos name
nss_map_attribute userPassword msSFU30Password
nss_map_attribute homeDirectory msSFU30HomeDirectory
nss_map_objectclass posixGroup Group
nss_map_attribute uniqueMember msSFU30PosixMember
nss_map_attribute cn cn
pam_login_attribute sAMAccountName
pam_filter objectclass=user
pam_member_attribute msSFU30PosixMember
pam_groupdn cn=nixUsers,cn=Users,dc=aminocom,dc=com
pam_password ad

Tudo isso pressupõe que você tenha o Windows Services for Unix instalado no seu controlador de domínio. No AD, você precisará configurar um grupo Unix primário (no nosso caso, chamado nixUsers) e adicionar todos os usuários do CVS a esse grupo.
Você provavelmente poderá usar o AD diretamente (ou seja, sem o Windows Services for Unix), mas isso exigirá diferentes mapeamentos de atributos. Você pode ter que experimentar um pouco lá.

Agora chegamos à configuração do PAM. Sob o Debian existem basicamente 4 arquivos que precisam de modificações:

1.) conta comum:

account required   pam_unix.so broken_shadow
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid 

2.) common-auth:

auth    required   pam_env.so
auth    sufficient pam_unix.so nullok try_first_pass
auth    requisite  pam_succeed_if.so uid >=500 quiet
auth    sufficient pam_ldap.so use_first_pass
auth    required   pam_deny.so

3.) sessão comum:

session optional        pam_keyinit.so revoke
session required        pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required        pam_unix.so
session optional        pam_ldap.so

4.) senha comum

senha suficiente pam_unix.so md5 shadow nullok try_first_pass password pam_ldap.so suficiente senha exigida pam_deny.so

Em Redhat (e derivados) todas as alterações necessárias devem ir para as seções relevantes em /etc/pam.d/system-auth e /etc/pam.d/system-auth-ac.

Os itens acima permitirão que os usuários façam login com credenciais do AD. No entanto, isso NÃO cria automaticamente um diretório inicial para eles (a menos que você faça mais alguns scripts em torno disso) e não permite que eles alterem suas senhas através do linux. Isso pode ser feito também, mas requer modificação de suas estações de trabalho (se elas usam Linux). Mais alguma pergunta re acima, basta perguntar.

Nós usamos isso em muitos dos nossos servidores, funciona como um encanto.

    
por 13.08.2010 / 20:13