Samba 4 (Active Directory) no Debian/Ubuntu Server
Tutorial para instalação do Samba 4 que, com sua última versão, possibilitou a criação de um domínio Active Directory, tornando a vida dos administradores de redes mais simples e mostrando que o GNU/Linux também tem a robustez do seu eterno rival.
Parte 2: Compilação / Kerberos
Depois de ter instalado as dependências, estamos prontos para instalar o Samba 4 e provisionar um domínio. Vamos lá.
Feito isto, vamos descompactar e compilar:
# tar -zxvf samba-4.0.5.tar.gz
# cd samba-4.0.5
Pronto, já descompactamos. Agora vamos fazer a compilação do source.
O time do Samba recomenda que utilize as opções "--enable-debug" e "--enable-selftest", que irão colocar informações de debug para ajudar a identificar bugs, mas as opções são totalmente opcionais, podendo ser executado sem qualquer opção:
# ./configure
Se o comando acima for executado sem nenhum erro, então todas as dependências foram instaladas com sucesso e podemos prosseguir.
Agora basta executar um:
# make
E depois um:
# make install
O tempo de compilação vai depender do hardware que está sendo executado, mas demora um pouco mesmo, se não ocorrer nenhum erro no make ou no make install, então o Samba 4 foi instalado com sucesso. Vamos agora começar a criação do domínio.
Se não especificarmos nada no "./configure", então o Samba será instalado no diretório padrão, que seria /usr/local/samba.
O Samba vem com uma ferramenta chamada "samba-tool", que é equivalente à ferramenta da solução proprietária DCPromo. Vamos aos passos para a criação do domínio.
# /usr/local/samba/bin/samba-tool domain provision
Então, a primeira pergunta é:
Realm []: TESTE.LOCAL
Aqui você deverá inserir o seu domínio totalmente qualificado FQDN, nesse caso, utilizei um domínio local (TESTE.LOCAL). Depois vem a seguinte pergunta:
Domain [TESTE]:
Então, é só confirmar o domínio sugerido. Após, vem a pergunta decisiva:
Server Role (dc, member, standalone) [dc]:
Esta pergunta é onde você irá dizer se é um servidor Domain Controle, se é um Membro, ou se será Standalone, no meu caso, será um controlador de domínio mesmo, então é só aceitar o dc sugerido.
Na próxima pergunta é onde será selecionado como será o DNS do Samba 4, o Samba vem pronto para utilizar o seu DNS interno que faz tudo, inclusive, a inclusão dinâmica de máquinas no DNS.
A grande desvantagem é que não é possível controlá-lo, a vantagem é que não é necessário ter o BIND instalado. Vejamos a seguir:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
Como vemos, ele nos dá quatro opções que se pode resumir em três:
Pois sabemos que o Active directory necessita de um DNS para funcionar perfeitamente como eu havia dito anteriormente, o Samba sugere a utilização do SAMBA_INTERNAL, mas também temos outras duas opções, a opção BIND9_FLATFILE que nos dá a flexibilidade de manutenção do DNS.
Só é aconselhável utilizar esta opção quando já tem um DNS funcionando na rede e se você dominar a configuração do BIND 9. Em outros casos, poderá ter a mesma flexibilidade de manutenção do BIND 9, só que deixando o Samba 4 fazer toda a configuração por você, mas, para isto, é preciso instalar outras dependências antes de instalar o Samba 4.
Para utilizar esta opção, consulte o site:
E verifique a parte de DNS dinâmico, nesse caso, vamos aceitar a sugestão e utilizar o SAMBA_INTERNAL.
Então, ele pedirá um DNS para encaminhamento caso o DNS dele não saiba identificar o endereço, normalmente um DNS externo, por exemplo "8.8.8.8" do Google ou outro do seu provedor:
Depois ele pedirá a senha do Administrator:
Administrator password:
Então, a senha deverá ter um nível de complexidade misturando letras maiúsculas, minúsculas, caracteres especiais (!@#$%) e números. Também deverá ter no mínimo 8 caracteres, e acredito que até 16 caracteres, então a senha que eu irei utilizar aqui é: P4ssW@rd
O Samba irá criar as entradas de DNS, criará o arquivo "smb.conf", e os bancos de dados "tbd", "ldb", e o "schema" do Active Directory.
Ao finalizar, já podemos subir e testar o AD open source com o seguinte comando:
# /usr/local/samba/sbin/samba
Agora vamos testar o domínio e o DNS. Vamos verificar primeiro se o "smbclient" está na mesma versão do Samba 4:
# /usr/local/samba/bin/smbclient --version
Agora que vimos que está na mesma versão, então vamos testar a conexão:
# /usr/local/samba/bin/smbclient -L localhost -U%
O retorno do comando acima é para ser este:
# /usr/local/samba/bin/smbclient //localhost/netlogon -UAdministrator%'P4ssW@rd' -c 'ls'
O retorno desse comando acima, é para ser este:
O DNS deverá ser na mesma máquina do AD open source, então, a máquina deverá estar configurada com IP estático, o "resolv.conf" deverá ser da seguinte forma:
# vim /etc/resolv.conf
Com o "resolv.conf" apontando para a própria máquina, então vamos fazer o teste do DNS:
# host -t SRV _ldap._tcp.teste.local.
A configuração dele, para funcionar o nosso AD open source, é bastante simples, quando terminamos de fazer o provisionamento, o Samba cria um arquivo do Kerberos que deverá substituir o arquivo que se encontra no "/etc/krb5.conf".
É simples, se a instalação for feita no local padrão, ele gera o arquivo dentro do "/usr/local/samba/shared/setup/krb5.conf", então, é só excluir o "/etc/krb5.conf" e copiar o novo arquivo "/usr/local/samba/shared/setup/krb5.conf" para dentro do "/etc".
Vamos editar o arquivo que copiamos:
# vim /etc/krb5.conf
E substituir o "${REALM}" pelo realm que foi configurado.
* Lembrando de deixar todo ele em letra maiúscula (exemplo: "TESTE.LOCAL") e pronto, o nosso Kerberos já está configurado e pronto para funcionar. Agora vamos testar:
# kinit administrator@TESTE.LOCAL
Irá pedir a senha do Administrator que foi cadastrada no provisionamento, agora vamos verificar se ele gerou o ticket:
# klist
O retorno do comando acima será:
Compilando o Samba 4
A compilação é bem simples, basta faze o download do source do Samba 4 no site samba.org. Durante o desenvolvimento deste artigo, o Samba está na versão 4.0.5. Assim, podemos fazer o download através deste link:Feito isto, vamos descompactar e compilar:
# tar -zxvf samba-4.0.5.tar.gz
# cd samba-4.0.5
Pronto, já descompactamos. Agora vamos fazer a compilação do source.
O time do Samba recomenda que utilize as opções "--enable-debug" e "--enable-selftest", que irão colocar informações de debug para ajudar a identificar bugs, mas as opções são totalmente opcionais, podendo ser executado sem qualquer opção:
# ./configure
Se o comando acima for executado sem nenhum erro, então todas as dependências foram instaladas com sucesso e podemos prosseguir.
Agora basta executar um:
# make
E depois um:
# make install
O tempo de compilação vai depender do hardware que está sendo executado, mas demora um pouco mesmo, se não ocorrer nenhum erro no make ou no make install, então o Samba 4 foi instalado com sucesso. Vamos agora começar a criação do domínio.
Se não especificarmos nada no "./configure", então o Samba será instalado no diretório padrão, que seria /usr/local/samba.
O Samba vem com uma ferramenta chamada "samba-tool", que é equivalente à ferramenta da solução proprietária DCPromo. Vamos aos passos para a criação do domínio.
# /usr/local/samba/bin/samba-tool domain provision
Então, a primeira pergunta é:
Realm []: TESTE.LOCAL
Aqui você deverá inserir o seu domínio totalmente qualificado FQDN, nesse caso, utilizei um domínio local (TESTE.LOCAL). Depois vem a seguinte pergunta:
Domain [TESTE]:
Então, é só confirmar o domínio sugerido. Após, vem a pergunta decisiva:
Server Role (dc, member, standalone) [dc]:
Esta pergunta é onde você irá dizer se é um servidor Domain Controle, se é um Membro, ou se será Standalone, no meu caso, será um controlador de domínio mesmo, então é só aceitar o dc sugerido.
Na próxima pergunta é onde será selecionado como será o DNS do Samba 4, o Samba vem pronto para utilizar o seu DNS interno que faz tudo, inclusive, a inclusão dinâmica de máquinas no DNS.
A grande desvantagem é que não é possível controlá-lo, a vantagem é que não é necessário ter o BIND instalado. Vejamos a seguir:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
Como vemos, ele nos dá quatro opções que se pode resumir em três:
- SAMBA_INTERNAL;
- BIND9_FLATFILE;
- BIND9_DLZ.
Pois sabemos que o Active directory necessita de um DNS para funcionar perfeitamente como eu havia dito anteriormente, o Samba sugere a utilização do SAMBA_INTERNAL, mas também temos outras duas opções, a opção BIND9_FLATFILE que nos dá a flexibilidade de manutenção do DNS.
Só é aconselhável utilizar esta opção quando já tem um DNS funcionando na rede e se você dominar a configuração do BIND 9. Em outros casos, poderá ter a mesma flexibilidade de manutenção do BIND 9, só que deixando o Samba 4 fazer toda a configuração por você, mas, para isto, é preciso instalar outras dependências antes de instalar o Samba 4.
Para utilizar esta opção, consulte o site:
E verifique a parte de DNS dinâmico, nesse caso, vamos aceitar a sugestão e utilizar o SAMBA_INTERNAL.
Então, ele pedirá um DNS para encaminhamento caso o DNS dele não saiba identificar o endereço, normalmente um DNS externo, por exemplo "8.8.8.8" do Google ou outro do seu provedor:
DNS forwarder IP address (write 'none' to disable forwarding) [127.0.0.1]: 8.8.8.8
Depois ele pedirá a senha do Administrator:
Administrator password:
Então, a senha deverá ter um nível de complexidade misturando letras maiúsculas, minúsculas, caracteres especiais (!@#$%) e números. Também deverá ter no mínimo 8 caracteres, e acredito que até 16 caracteres, então a senha que eu irei utilizar aqui é: P4ssW@rd
O Samba irá criar as entradas de DNS, criará o arquivo "smb.conf", e os bancos de dados "tbd", "ldb", e o "schema" do Active Directory.
Ao finalizar, já podemos subir e testar o AD open source com o seguinte comando:
# /usr/local/samba/sbin/samba
Agora vamos testar o domínio e o DNS. Vamos verificar primeiro se o "smbclient" está na mesma versão do Samba 4:
# /usr/local/samba/bin/smbclient --version
Agora que vimos que está na mesma versão, então vamos testar a conexão:
# /usr/local/samba/bin/smbclient -L localhost -U%
O retorno do comando acima é para ser este:
Sharename Type Comment --------- ---- ------- netlogon Disk sysvol Disk IPC$ IPC IPC Service (Samba 4.0.5)Se até agora não ocorreu nenhum erro, então está perfeito. Vamos testar a autenticação:
# /usr/local/samba/bin/smbclient //localhost/netlogon -UAdministrator%'P4ssW@rd' -c 'ls'
O retorno desse comando acima, é para ser este:
Domain=[TESTE] OS=[Unix] Server=[Samba 4.0.5] . D 0 Thu Jan 10 08:00:36 2013 .. D 0 Thu Jan 10 08:02:28 2013Se o retorno foi este, então está tudo certo e podemos testar o DNS.
O DNS deverá ser na mesma máquina do AD open source, então, a máquina deverá estar configurada com IP estático, o "resolv.conf" deverá ser da seguinte forma:
# vim /etc/resolv.conf
domain TESTE.LOCAL
nameserver 127.0.0.1
nameserver 127.0.0.1
Com o "resolv.conf" apontando para a própria máquina, então vamos fazer o teste do DNS:
# host -t SRV _ldap._tcp.teste.local.
_ldap._tcp.teste.local has SRV record 0 100 389 arquivos.teste.local.# host -t SRV _kerberos._udp.teste.local.
_kerberos._udp.teste.local has SRV record 0 100 88 arquivos.teste.local.# host -t A arquivos.teste.local.
arquivos.teste.local has address 192.168.0.2Se os retornos dos comandos forem bem-sucedidos, então o DNS também está OK, e já podemos configurar o Kerberos para autenticação.
Configurando o Kerberos
Kerberos é um protocolo de comunicação segura na rede com autenticação.A configuração dele, para funcionar o nosso AD open source, é bastante simples, quando terminamos de fazer o provisionamento, o Samba cria um arquivo do Kerberos que deverá substituir o arquivo que se encontra no "/etc/krb5.conf".
É simples, se a instalação for feita no local padrão, ele gera o arquivo dentro do "/usr/local/samba/shared/setup/krb5.conf", então, é só excluir o "/etc/krb5.conf" e copiar o novo arquivo "/usr/local/samba/shared/setup/krb5.conf" para dentro do "/etc".
Vamos editar o arquivo que copiamos:
# vim /etc/krb5.conf
E substituir o "${REALM}" pelo realm que foi configurado.
* Lembrando de deixar todo ele em letra maiúscula (exemplo: "TESTE.LOCAL") e pronto, o nosso Kerberos já está configurado e pronto para funcionar. Agora vamos testar:
# kinit administrator@TESTE.LOCAL
Irá pedir a senha do Administrator que foi cadastrada no provisionamento, agora vamos verificar se ele gerou o ticket:
# klist
O retorno do comando acima será:
Ticket cache: FILE:/tmp/krb5cc_1000 Default principal: administrator@TESTE.LOCAL Valid starting Expires Service principal 01/10/13 08:39:48 01/11/13 08:39:46 krbtgt/TESTE.LOCAL@TESTE.LOCALSe houver ticket, então significa que está tudo certo até o momento, então vamos para o próximo passo.