Aqui falaremos sobre os procedimentos para configurar o NSCD. Este procedimento foi realizado sobre uma Instalação padrão do CentOS 7 que fazemos de servidores CentOS, caso queira realizar a mesma instalação, consulte aqui, ou nas referências abaixo.
Para executar os passos é necessário que se saiba Como obter o Distinguished Name (DN) no Active Directory, verifique aqui ou nas referências, abaixo.
Em nosso exemplo, configuraremos a pasta home de todos os usuários LDAP como a mesma pasta e deixaremos um script de logon para auditoria de quem logou quando.
Existem algumas formas de realizar esse procedimento, caso queira explorar outras possibilidades consulte neste link, ou nas referências abaixo.
Para configurarmos corretamente, usaremos uma conta de serviço para leitura no AD e um grupo de Acesso (para restringirmos quem poderá acessar o servidor).
Criando um usuário para consulta LDAP
Crie uma conta com o padrão de nomes de contas de serviço que sua empresa utiliza, essa conta pode ser membro de um grupo genérico e retirado o grupo Domain Users (defina o grupo novo grupo como padrão primeiro para poder retirar o grupo Domain Users). Desta forma está conta não poderá ser usado para logon em computadores;
Criando um grupo de acesso ao servidor
Crie um grupo e adicione os membros que poderão fazer logon no servidor, sugerimos um grupo para cada servidor linux, pois mesmo que muitos acessos sejam comuns (por exemplo, todos de uma equipe), com o tempo podem surgir necessidades específicas e se for um único grupo essas “exceções” começam a ter acesso a vários sistemas que não deveriam;
Instalando e configurando o NSCD
Para instalar e configurar, execute os comandos abaixo (altere as partes em cinza conforme sua realidade):
yum install authselect-compat autofs nfs-utils nscd nss-pam-ldapd openldap openldap-clients pam_ldap rpcbind -y
authconfig --enableldap --enableldapauth --ldapserver=ldap://ip_seu_servidor_dc:389/ --ldapbasedn="dc=seu_dominio,dc=com" --enablecache --disablefingerprint --kickstart
sed -i "s/TLS_CACERTDIR/#TLS_CACERTDIR/g" /etc/openldap/ldap.conf
sed -i "s/SASL_NOCANON/#SASL_NOCANON/g" /etc/openldap/ldap.conf
systemctl enable nslcd
systemctl restart nslcd
mkdir /home/seu_dominio.com
cp -r /etc/skel/. /home/seu_dominio.com/
touch /home/seu_dominio.com/.logon.log
chown -R root.users /home/seu_dominio.com
chmod -R 775 /home/seu_dominio.com
echo "echo \"Usuario \`whoami\` logou em \`date\`\" >> /home/seu_dominio.com/.logon.log" >> /home/seu_dominio.com/.bashrc
Agora será necessário o SID, para obter esse sid crie e execute o script abaixo:
vim /tmp/teste.sh
Aperte a tecla INSERT do teclado para entrar em modo de edição e deixa-lo da seguinte forma:
#!/bin/bash OBJECT_ID=”AQUAAAAAAAUVAAAAPWW1S5rojK4mDAiG5BAAAA==” G=($(echo -n $OBJECT_ID | base64 -d -i | hexdump -v -e ‘1/1 ” %02X”‘)) SID_HEX=${G[0]}-${G[1]}-${G[2]}${G[3]}${G[4]}${G[5]}${G[6]}${G[7]}-${G[8]}${G[9]}${G[10]}${G[11]}-${G[12]}${G[13]}${G[14]}${G[15]}-${G[16]}${G[17]}${G[18]}${G[19]}-${G[20]}${G[21]}${G[22]}${G[23]}-${G[24]}${G[25]}${G[26]}${G[27]}${G[28]} BESA2=${G[8]}${G[9]}${G[10]}${G[11]} BESA3=${G[12]}${G[13]}${G[14]}${G[15]} BESA4=${G[16]}${G[17]}${G[18]}${G[19]} BESA5=${G[20]}${G[21]}${G[22]}${G[23]} BERID=${G[24]}${G[25]}${G[26]}${G[27]}${G[28]} LESA1=${G[2]}${G[3]}${G[4]}${G[5]}${G[6]}${G[7]} LESA2=${BESA2:6:2}${BESA2:4:2}${BESA2:2:2}${BESA2:0:2} LESA3=${BESA3:6:2}${BESA3:4:2}${BESA3:2:2}${BESA3:0:2} LESA4=${BESA4:6:2}${BESA4:4:2}${BESA4:2:2}${BESA4:0:2} LESA5=${BESA5:6:2}${BESA5:4:2}${BESA5:2:2}${BESA5:0:2} LERID=${BERID:6:2}${BERID:4:2}${BERID:2:2}${BERID:0:2} LE_SID_HEX=${LESA1}-${LESA2}-${LESA3}-${LESA4}-${LESA5}-${LERID} SID=”S-1″ IFS=’-‘ read -ra ADDR <<< “${LE_SID_HEX}” for OBJECT in “${ADDR[@]}”; do SID=${SID}-$((16#${OBJECT})) done echo ${SID} |
Ao final, pressionar a tecla ESC para sair do modo de edição, digitar :wq! e pressionar ENTER para sair e salvar. Em seguida, execute:
chmod 755 /tmp/teste.sh
sed -i "s/tls_cacertdir/#tls_cacertdir/g" /etc/nslcd.conf
echo "ldap_version 3" >> /etc/nslcd.conf
echo "pagesize 20000" >> /etc/nslcd.conf
echo "referrals off" >> /etc/nslcd.conf
echo "filter passwd (objectClass=user) " >> /etc/nslcd.conf
echo "filter group (objectClass=group) " >> /etc/nslcd.conf
echo "map passwd uid sAMAccountName" >> /etc/nslcd.conf
echo "map passwd gecos displayName" >> /etc/nslcd.conf
echo "map passwd gidNumber \"100\"" >> /etc/nslcd.conf
echo "map passwd uidNumber objectSid:`/tmp/teste.sh`" >> /etc/nslcd.conf
echo "map passwd homeDirectory \"/home/seu_dominio.com/\"" >> /etc/nslcd.conf
echo "map passwd loginShell \"/bin/bash\"" >> /etc/nslcd.conf
Execute os comandos abaixo alterando a parte em cinza pelo distinguished name e senha da conta criada para leitura no AD.
echo "binddn CN=CONTA SERVICO AUTENTICACAO CENTOS,OU=NOME DA OU,DC=seu_dominio,DC=com" >> /etc/nslcd.conf
echo "bindpw senha" >> /etc/nslcd.conf
echo "filter passwd (&(objectClass=user)(memberOf=CN=GRUPO QUE PODE ACESSAR O SERVIDOR,OU=NOME DA OU,DC=seu_dominio,DC=com))" >> /etc/nslcd.conf
systemctl restart nslcd
Agora, basta fazer logon com o usuário do AD
Fontes/Referências
NVLAN – Como obter o Distinguished Name (DN) no Active Directory
NVLAN – Instalação padrão do CentOS7
NVLAN – Métodos para integrar o CentOS com LDAP (Active Directory)
https://serverfault.com/questions/633802/ldap-authentication-on-centos-7
https://serverfault.com/questions/851864/get-sid-by-its-objectsid-using-ldapsearch/852338#852338
http://www.tutorialspoint.com/unix_commands/nscd.htm
Mais Informações
Esperamos ter ajudado da melhor forma possível e estaremos sempre a disposição para mais informações.
Entre em contato conosco pelo e-mail equipe@nvlan.com.br.