Serviço LDAP no Debian: mudanças entre as edições
Linha 91: | Linha 91: | ||
== Migrando uma base passwd/shadow/group == | == Migrando uma base passwd/shadow/group == | ||
Este procedimento servirá apenas para redes que já possuirem usuários cadastrados em seus Linux. Assim, os comandos a seguir importarão tais usuários para o LDAP. | |||
==== Procedimentos na máquina que contém os usuários ==== | ==== Procedimentos na máquina que contém os usuários ==== | ||
Estando a máquina que contém o cadastro dos usuários da rede, inicialmente, deveremos instalar o pacote ''migrationtools''. | |||
# apt-get install migrationtools | # apt-get install migrationtools | ||
edite /etc/migrationtools/migrate_common.ph | A seguir, edite o arquivo ''/etc/migrationtools/migrate_common.ph'' e procure as linhas: | ||
procure as linhas | |||
$DEFAULT_MAIL_DOMAIN = "padl.com"; | $DEFAULT_MAIL_DOMAIN = "padl.com"; | ||
$DEFAULT_BASE = "dc=padl,dc=com"; | $DEFAULT_BASE = "dc=padl,dc=com"; | ||
Altere-as para que sejam compatíveis com a sua rede, como no exemplo a seguir: | |||
$DEFAULT_MAIL_DOMAIN = "darknet.com.br"; | $DEFAULT_MAIL_DOMAIN = "darknet.com.br"; | ||
$DEFAULT_BASE = "dc=darknet,dc=com,dc=br"; | $DEFAULT_BASE = "dc=darknet,dc=com,dc=br"; | ||
{{exclamação1|Observe que DEFAULT_MAIL_DOMAIN corresponde ao domínio usado na sua rede.}} | |||
Após a modificação, salve o arquivo e saia. O passo seguinte será criar arquivos secundários, a partir do ''/etc/passwd'' e do ''/etc/group''. O arquivo ''/etc/shadow'' será lido automaticamente, no momento em que o arquivo ''/etc/passwd'' for processado. O processamento se dará com os comandos ''awk'' e ''sort''. É importante salientar que, no Debian, os UID dos usuários comuns e os GID dos grupos que não são específicos do sistema começam em 1000. Por isso o ''awk'' colherá as linhas que iniciam com o UID > 999. Em outros sistemas esse número inicial poderá ser diferente. No RedHat e derivados, por exemplo, esses números começam em 500. | |||
# awk -F: '$3 > 999' /etc/passwd | sort -nt: -k 3 > /tmp/passwd.new | # awk -F: '$3 > 999' /etc/passwd | sort -nt: -k 3 > /tmp/passwd.new | ||
# awk -F: '$3 > 999' /etc/group | sort -nt: -k 3 > /tmp/group.new | |||
Agora que temos apenas um extrato do que nos interessa a respeito dos arquivos ''/etc/passwd'' e ''/etc/group'', deveremos gerar arquivos no formato ''ldif''. O ''ldif'' é o formato utilizado pelo LDAP para a importação e exportação de dados. Para gerar o ''ldif'' do /tmp/passwd.new, você deverá executar os seguintes comandos: | |||
# cd /usr/share/migrationtools | |||
# ./migrate_passwd.pl /tmp/passwd.new /tmp/passwd.ldif | |||
{{exclamação1|É importante executar o comando ''migrate_passwd.pl'' dentro do diretório ''/usr/share/migrationtools''. Para funcionar, o ''migrate_passwd.pl'' terá que enxergar o arquivo ''migrate_common.ph'', que encontra-se no referido diretório.}} | |||
Após a execução do comando ''migrate_passwd.pl'', observe o conteúdo do arquivo ''/tmp/passwd.ldif''. Os hashes das senhas dos usuários deverão existir, significando que as mesmas foram exportadas a partir do arquivo ''/etc/shadow''. Observe também que cada bloco inicia com uma linha chamada ''dn'', como mostrado a seguir. | |||
dn: uid=fulano,ou=People,dc=darknet,dc=com,dc=br | |||
uid: fulano | |||
cn: teste | |||
objectClass: account | |||
objectClass: posixAccount | |||
objectClass: top | |||
objectClass: shadowAccount | |||
userPassword: {crypt}$6$/UWh49nl$bm9RVncNfHo9M3ZY/v8Fomj07EJRp5Anr90fufUdFk/DPw.Rzxb7EVRHywXAMt8ISFtDaiVWx4ueX1lWGn8. | |||
shadowLastChange: 16107 | |||
shadowMax: 99999 | |||
shadowWarning: 7 | |||
loginShell: /bin/bash | |||
uidNumber: 1005 | |||
gidNumber: 1005 | |||
homeDirectory: /home/fulano | |||
gecos: teste,,, | |||
DN significa ''Distinguished Name''. O DN serve para identificar o usuário, unicamente, uma vez que cita o seu ''UID'' (neste caso é um nome, pois o número se chama ''uidNumber''), a sua OU (''Organizational Unit'') e os respectivos DCs. A OU é a subárvore do LDAP onde cada UID será colocado. A figura a seguir mostrará a situação: | |||
[[File:dn.png|center]] | |||
{{exclamação1|Observe que há o OU. Então, em breve, antes da importação final do ldif, criaremos essa estrutura no servidor LDAP.}} | |||
O passo semifinal desta fase será transformar o arquivo ''/tmp/group.new'' em ldif. Para isso, utilize os comandos: | |||
# cd /usr/share/migrationtools | # cd /usr/share/migrationtools | ||
# ./ | # ./migrate_group.pl /tmp/group.new /tmp/group.ldif | ||
Finalmente, mova os arquivos ldif gerados para a máquina servidora LDAP e apague os arquivos que ficaram em ''/tmp''. | |||
==== Procedimentos na máquina com serviço LDAP ==== | ==== Procedimentos na máquina com serviço LDAP ==== |
Edição das 12h06min de 6 de fevereiro de 2014
Este artigo foi baseado em Debian Wheezy. |
O que é o LDAP?
Existem milhares de definições sobre LDAP nos livros e páginas da Internet. No entanto, para um rápido entendimento, seria mais fácil dizer que LDAP é um banco de dados que segue padrões descritos em RFCs. É como se estivéssemos trabalhando com um banco que tivesse campos com nomes predefinidos.
O objetivo principal deste arquivo é mostrar como configurar o LDAP em um Debian e, a seguir, como realizar a conexão de clientes via PAM.
Instalação do LDAP
Primeiramente, deveremos instalar o servidor e pacote de comandos básicos.
# apt-get install slapd ldap-utils
Depois de emitido o comando de instalação, uma janela surgirá, solicitando uma senha de administrador para o usuário admin. Utilize a senha 123, pois teremos que trocá-la logo em seguida. O próximo passo será fazer um configuração mais detalhada do LDAP. Para isso, emita o comando:
# dpkg-reconfigure slapd
A partir deste ponto, teremos uma sequência de telas com perguntas.
Tela (1): Omitir a configuração do servidor OpenLDAP?
- Nesta tela deverá ser respondido Não, para que possamos continuar a configuração detalhada do LDAP.
Tela (2): Nome do domínio DNS
- Aqui deverá ser digitado o domínio da rede que terá os seus usuários cadastrados no LDAP. Apenas como exemplo, darknet.com.br. O LDAP transformará isso em dc=darknet,dc=com,dc=br.
- A abreviatura dc significa Domain Component.
Tela (3): Nome da organização
- Neste ponto deverá ser informado o nome da organização. Exemplo: Darknet Redes e Solucoes
- É importante não usar acentuação ou cedilha neste passo.
Tela (4): Senha do administrador
- Agora deverá ser digitada a senha definitiva do admin, que será o usuário administrador do LDAP.
- Preocupe-se em utilizar uma senha forte e confiável.
Tela (5): "Backend" de base de dados a ser usado
- O LDAP utiliza um sistema de banco de dados para armazenar as informações. Nesta fase, um sistema deverá ser escolhido.
- Atualmente, a opção recomendada é o HDB, que é baseado no antigo BDB.
- É interessante ressaltar que o HDB está em fase de substituição pelo MDB. Caso esta opção esteja disponível, use-a. Caso contrário, selecione o HDB.
Tela (6): Você deseja que a base de dados seja removida quando o pacote slapd for expurgado ("purge")?
- Esta será uma decisão pessoal do admnistrador. A base de dados, que fica em /var/lib/ldap, deverá ser deletada, caso o pacote de instalação do LDAP seja removido via apt-get purge?
- Se esta for a sua máquina LDAP definitiva, sugiro responder não, a fim de evitar acidentes.
Tela (7): Mover a base de dados antiga?
- Esta base de dados antiga foi criada no momento da instalação do LDAP e está vazia. Como o LDAP está sendo reconfigurado, ela deverá ser removida para evitar conflitos. Responda Sim.
Tela (8): Permitir o protocolo LDAPv2?
- A versão 2 do LDAP (LDAPv2) está em desuso e não possui várias funcionalidades existentes no LDAPv3, como autenticação via SASL, suporte a TLS e a UTF-8. Então, a não ser que você tenha um muito bom motivo para não fazer isso, responda Não para esta questão.
Uma vez configurado o servidor LDAP, poderemos ver o resultado com o seguinte comando:
$ ldapsearch -xb dc=darknet,dc=com,dc=br
A resposta deverá ser algo similar a isto:
# extended LDIF # # LDAPv3 # base <dc=darknet,dc=com,dc=br> with scope subtree # filter: (objectclass=*) # requesting: ALL # # search result search: 2 result: 32 No such object # numResponses: 1
Migrando uma base passwd/shadow/group
Este procedimento servirá apenas para redes que já possuirem usuários cadastrados em seus Linux. Assim, os comandos a seguir importarão tais usuários para o LDAP.
Procedimentos na máquina que contém os usuários
Estando a máquina que contém o cadastro dos usuários da rede, inicialmente, deveremos instalar o pacote migrationtools.
# apt-get install migrationtools
A seguir, edite o arquivo /etc/migrationtools/migrate_common.ph e procure as linhas:
$DEFAULT_MAIL_DOMAIN = "padl.com"; $DEFAULT_BASE = "dc=padl,dc=com";
Altere-as para que sejam compatíveis com a sua rede, como no exemplo a seguir:
$DEFAULT_MAIL_DOMAIN = "darknet.com.br"; $DEFAULT_BASE = "dc=darknet,dc=com,dc=br";
Observe que DEFAULT_MAIL_DOMAIN corresponde ao domínio usado na sua rede. |
Após a modificação, salve o arquivo e saia. O passo seguinte será criar arquivos secundários, a partir do /etc/passwd e do /etc/group. O arquivo /etc/shadow será lido automaticamente, no momento em que o arquivo /etc/passwd for processado. O processamento se dará com os comandos awk e sort. É importante salientar que, no Debian, os UID dos usuários comuns e os GID dos grupos que não são específicos do sistema começam em 1000. Por isso o awk colherá as linhas que iniciam com o UID > 999. Em outros sistemas esse número inicial poderá ser diferente. No RedHat e derivados, por exemplo, esses números começam em 500.
# awk -F: '$3 > 999' /etc/passwd | sort -nt: -k 3 > /tmp/passwd.new # awk -F: '$3 > 999' /etc/group | sort -nt: -k 3 > /tmp/group.new
Agora que temos apenas um extrato do que nos interessa a respeito dos arquivos /etc/passwd e /etc/group, deveremos gerar arquivos no formato ldif. O ldif é o formato utilizado pelo LDAP para a importação e exportação de dados. Para gerar o ldif do /tmp/passwd.new, você deverá executar os seguintes comandos:
# cd /usr/share/migrationtools # ./migrate_passwd.pl /tmp/passwd.new /tmp/passwd.ldif
Após a execução do comando migrate_passwd.pl, observe o conteúdo do arquivo /tmp/passwd.ldif. Os hashes das senhas dos usuários deverão existir, significando que as mesmas foram exportadas a partir do arquivo /etc/shadow. Observe também que cada bloco inicia com uma linha chamada dn, como mostrado a seguir.
dn: uid=fulano,ou=People,dc=darknet,dc=com,dc=br uid: fulano cn: teste objectClass: account objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword: {crypt}$6$/UWh49nl$bm9RVncNfHo9M3ZY/v8Fomj07EJRp5Anr90fufUdFk/DPw.Rzxb7EVRHywXAMt8ISFtDaiVWx4ueX1lWGn8. shadowLastChange: 16107 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 1005 gidNumber: 1005 homeDirectory: /home/fulano gecos: teste,,,
DN significa Distinguished Name. O DN serve para identificar o usuário, unicamente, uma vez que cita o seu UID (neste caso é um nome, pois o número se chama uidNumber), a sua OU (Organizational Unit) e os respectivos DCs. A OU é a subárvore do LDAP onde cada UID será colocado. A figura a seguir mostrará a situação:
Observe que há o OU. Então, em breve, antes da importação final do ldif, criaremos essa estrutura no servidor LDAP. |
O passo semifinal desta fase será transformar o arquivo /tmp/group.new em ldif. Para isso, utilize os comandos:
# cd /usr/share/migrationtools # ./migrate_group.pl /tmp/group.new /tmp/group.ldif
Finalmente, mova os arquivos ldif gerados para a máquina servidora LDAP e apague os arquivos que ficaram em /tmp.
Procedimentos na máquina com serviço LDAP
A seguir, deveremos gerar um arquivo que será utilizado para estabelecer a área da árvore LDAP que receberá os usuários. Assim, dentro do diretório /tmp, crie o arquivo people.ldif com o seguinte conteúdo:
dn: ou=People,dc=darknet,dc=com,dc=br ou: People objectclass: organizationalUnit
fazer grupo tb
Ainda dentro de /tmp, importar os usuários para a base:
# ldapadd -WD "cn=admin,dc=darknet,dc=com,dc=br" -f people.ldif
Será pedida a senha de administrador e ocorrerá a consequente importação. A sequir,
# ldapadd -WD "cn=admin,dc=darknet,dc=com,dc=br" -f /tmp/passwd.ldif
Importado. Verificação:
# ldapsearch -xb dc=darknet,dc=com,dc=br
Se for o caso
# ./migrate_group.pl /tmp/group.new /tmp/group.ldif
Adicionando usuários na base
Configuração dos clientes
- apt-get install --no-install-recommends libnss-ldap
telas
- apt-get install libpam-ldap
telas
configurar host nos arquivos
backup do pam
alterar pam (mkhome SFC)
alterar nsswitch
arquivos de senhas
phpldapadmin
Usar versão do Wheezy.