Inicial > Diversos > Instalação do Samba4 – Active Directory compatible Domain Controler

Instalação do Samba4 – Active Directory compatible Domain Controler

Depois de muita espera e muita expectativa finalmente chegou o Samba4, prometendo (e cumprindo) implementação do ambiente criado pelo Active Directory (Microsoft), após a instalação a gerência e configuração do domínio e DC’s é feita utilizando as próprias ferramentas da Microsoft.

E vamos ao que interessa. Neste post serão abordadas a instalação do Samba4 no Debian Squeeze6.0.6 e Ubuntu 12.04LTS utilizando o Bind como DNS backend, nessa caso é necessário que o pacote tenha versão  igual ou superior a 9.7.x

– Bind – DNS

Debian Squeeze 6.0.6

O último pacote de instalação do bind disponível para o Debian é o 9.6 nesse caso teremos que compilar o pacote correto.

Para que não seja necessário criar os scripts de start/stop do serviço vamos instalá-lo e removê-lo utilizando o apt-get.

Nota: caso a versão disponível seja superior a 9.7.x não é necessária a remoção do serviço.

# apt-get install bind9
# apt-get autoremove bind9

Dependências necessárias

# apt-get install devscripts build-essential libkrb5-dev debhelper libssl-dev libtool bison libdb-dev libldap2-dev libxml2-dev libpcap-dev hardening-wrapper libgeoip-dev dpkg-dev

Criar diretório de cache e alterar as permissões

# mkdir /var/cache/bind
# chown bind:bind /var/cache/bind

Baixar o pacote

# mkdir bind9
# cd bind9
# dget -x http://ftp.de.debian.org/debian/pool/main/b/bind9/bind9_9.8.4.dfsg.P1-3.dsc
# tar -xvzf bind9_9.8.4.dfsg.P1.orig.tar.gz
# cd bind9-9.8.4.dfsg.P1/
 
Compilar e instalar o serviço
#  ./configure –prefix=/usr –mandir=/usr/share/man –infodir=/usr/share/info –sysconfdir=/etc/bind –localstatedir=/var –enable-threads –enable-largefile –with-libtool –enable-shared –enable-static –with-openssl=/usr –with-gssapi=/usr –with-gnu-ld –with-dlz-postgres=no –with-dlz-mysql=no –with-dlz-bdb=yes –with-dlz-filesystem=yes –with-dlz-ldap=yes –with-dlz-stub=yes –with-dlz-dlopen=yes –with-geoip=/usr CFLAGS=-fno-strict-aliasing

# make install
Ubuntu 12.04LTS

Dependências necessárias:

# apt-get install  devscripts build-essential libkrb5-dev debhelper libssl-dev libtool bison libdb-dev libldap2-dev libxml2-dev libpcap-dev hardening-wrapper libgeoip-dev dpkg-dev 

No Ubuntu o pacote disponível no repositório atende aos requisitos do Samba4, nesse caso não é necessário compilar o pacote, a instalação pode ser feita via apt-get:

# apt-get install bind9

Para que o Samba possa alterar as configurações e criar as entradas para o domínio é necessário fazer algumas alterações, são elas:

# vim /etc/bind/named.conf
include “/usr/local/samba/private/named.conf”;
 
# vim /etc/bind/named.conf.options
tkey-gssapi-keytab “/usr/local/samba/private/dns.keytab”;
forwarders {
                8.8.8.8;
                8.8.4.4;
                };

Nota: A opção forwarders só deve ser usada caso o servidor encaminha solicitações que ele não consiga resolver para servidores DNS externos.

Samba4

Dependências necessárias:

Debian 6.0.6 – Squeeze
# apt-get install build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls-dev libreadline-dev python-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev  dnsutils libbsd-dev attr krb5-user docbook-xsl libcups2-dev acl
 
Ubuntu 12.04LTS
# apt-get install libacl1-dev libattr1-dev libblkid-dev libgnutls-dev libreadline-dev python-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev  dnsutils libbsd-dev attr krb5-user docbook-xsl libcups2-dev acl

Nota: Serão solicitados o domínio do servidor e FQDN dos servidores do Kerberos.

No Ubuntu ainda é necessária uma alteração no apparmor para que ele permita alterações no bind

# vim /etc/apparmor.d/usr.sbin.named
/usr/local/samba/private/** rkw,
/usr/local/samba/private/dns/** rkw,
/usr/local/samba/lib/** rm,# /etc/init.d/apparmor reload

Se o sistema de arquivos utilizado for ext3 ou ext4 será necessário configurá-lo para suportar acl e attr. Para isso vamos editar o arquivo /etc/fstab e incluir as opções “user_xattr,acl,barrier=1” na montagem do volume. Após alterado o arquivo deve estar parecido com este:

# vim /etc/fstab
/dev/hda       /               ext3    user_xattr,acl,barrier=1,errors=remount-ro  0       1

Montar novamente o sistema de arquivos

# mount -o remount,rw /

Também é importante verificar se o nome do host está definido corretamente, verifique as configurações dos arquivos /etc/hosts e /etc/hostname, faça as alterações necessárias e reincie o servidor.

Download, configuração e instalação do Samba

# wget -c http://www.samba.org/samba/ftp/stable/samba-4.0.1.tar.gz
# tar -xvf samba-4.0.1.tar.gz
# cd samba-4.0.1/
# ./configure –enable-debug –enable-selftest
# make
# make install

Após instalado o samba, vamos criar o domínio:

# /usr/local/samba/bin/samba-tool domain provision

Serão solicitadas informações como: realm,domain, server role, DNS backend e password. As configurações serão aplicadas e o domínio criado, uma saída semelhante a esta será apresentada:

Realm: TESTE.COM
Domain [TESTE]:
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ
Administrator password:
Retype password:
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=teste,DC=com
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=teste,DC=com
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
See /usr/local/samba/private/named.conf for an example configuration include file for BIND
and /usr/local/samba/private/named.txt for further documentation required for secure DNS updates
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf
Once the above files are installed, your Samba4 server will be ready to use
Server Role: active directory domain controller
Hostname: samba4-dc
NetBIOS Domain: TESTE
DNS Domain: teste.com
DOMAIN SID: S-1-5-21-2228987782-1448195482-472659170

Antes de iniciar o Samba, reiniciar o bind para que as alterações sejam aplicadas:

# /etc/init.d/bind9 restart

Iniciar o samba

# /usr/local/samba/sbin/samba

Atualizar a base DNS

# /usr/local/samba/sbin/samba_dnsupdate –verbose –all-names

Testar o DNS
# host -t SRV _ldap._tcp.senior.local

Nota: Para funcionamento correto dos comandos acima, é necessário que no /etc/resolv.conf o nameserver contenha o IP do servidor local.

Outro serviço importante a ser configurado para o correto funcionamento do samba4 e kerberos é o NTP, caso os relógios não estejam sincronizados os serviços podem apresentar problemas.

Referências:

  1. 01/02/2013 às 14:56

    Olá Natália!

    Primeiramente parabéns pelo blog como um todo e pelo post….

    Ei tive um pequeno problema com o Bind9.

    Fiz o include do samba/private/named.conf no bind/named.conf
    include “/usr/local/samba/private/named.conf”;

    Após a compilação do Samba4 tentei reiniciar o Bind9 mas recebi uma mensagem de erro por acesso negado. Executei o “named -g -9” para verificar e ele informava que não consegui fazer o include por falta de permissão de leitura.

    Dei permissão ao bind no arquivo mas o erro persiste.

    • 01/02/2013 às 15:07

      Obrigada Gleyson.
      O arquivo pertence a que grupo/usuário? Tive problemas com o bind só quando esqueci de alterar as conf do bind…

      • 01/02/2013 às 15:35

        O arquivo em questão é o “/usr/local/samba/private/named.conf” repassado através do include nas configurações do bind em “named.conf” .

        Alterei suas permissões para 644 testei e nada.. alterei o grupo pra o bind e nada…

        Fiz a inclusão manual das informações do arquivo no original para o bind e ele passa, mas apresenta erro mais a frente na lig repassada pelo samba em “/usr/local/samba/lib/bind9/dlz.bind9.so”… mesma coisa permissão.

        Dei permissões também sobre a lib e nada.

      • 01/02/2013 às 15:45

        Tá usando Debian ou Ubuntu? Acabei de lembrar aqui e esqueci de colocar no post, no Ubuntu precisa fazer uma alteração no apparmor… Adicionei as alterações aí.

  2. 01/02/2013 às 16:56

    Natália Vaz :
    Tá usando Debian ou Ubuntu? Acabei de lembrar aqui e esqueci de colocar no post, no Ubuntu precisa fazer uma alteração no apparmor… Adicionei as alterações aí.

    Tô usando o Ubuntu 12.04.1

  3. 01/02/2013 às 17:27

    Valeu pela dica Natália… fiz os ajustes e consegui!

  4. 04/02/2013 às 16:18

    Show de bola mesmo o artigo, veio bem a calhar pois era exatamente o que eu estava procurando. Creio que seria bom adicionar a parte do NTP, pois o kerberos pode ser um chato se os clientes não estiverem com o relógio sincronizado.

    Outra coisa que seria interessante adicionar é a configuração própria de um servidor dhcp para trabalhar em conjunto com essa implementação do samba 4.

    • 04/02/2013 às 16:27

      Obrigada Fernando. Com certeza são assuntos interessantes. Vou pensar para posts futuros.

  5. Ricardo Berlim
    15/02/2013 às 11:06

    Natália, grande guia! me deu uma baita ajuda na implementação do samba4, em especial este, em minha opinião, confuso sistema de DNS 🙂
    Bom, queria saber se você pode me ajudar. Estou com problema para resolver um cname que criei para um servidor que está fora da minha rede (necessário para o funcionamento de um sistema legado). Apesar do próprio servidor do domínio conseguir resolver o cname para IP, os clientes simplesmente não conseguem, só quando utilizam meu antigo servidor DNS (que ainda está no ar como backup). O que pode ser?

    • 15/02/2013 às 11:28

      Obrigada Ricardo, que bom que foi útil.
      Não tive esse problema (tb não tinha situação parecida). Ao invés de CNAME você tentou criar um novo host só que apontando pra outra rede?

  6. 15/02/2013 às 15:49

    Ricardo, verifica na estacao se ela realmente está usando o servidor dns correto com um ‘ipconfig/all’.
    Depois verifica na estacao também se o resultado de ‘nslookup cname.que.voce.criou’ e ‘nslookup cname.que.voce.criou ip.do.dns.server’

    Quando tenho qualquer problema esses são os primeiros passos que eu verifico para ter certeza que a máquina está resolvendo a partir do servidor correto.

  7. 19/02/2013 às 11:06

    Minha luta atual contra o samba4 está na criação dos diretórios home, ele deveria por padrão criar o home do usuario (se definido o [homes] no smb.conf, e configurado o winbind) quando voce define \\servidor\%USERNAME% como home no snap-in de gerenciamento (dsa.msc).
    Mas aqui to tomando mensagem de erro de permissões na cara, mesmo colocando 777 em tudo quanto é canto… se alguém tiver acertado isso, me da uma luz por favor 😀

  8. Gabriel Lima
    25/02/2013 às 11:16

    Pessoal estou com o seguinte problema ao executar o comando: kinit administrator@DOMINIO.

    Ele aparece o seguinte erro kinit: Cannot contact any KDC for realm ‘DOMINIO’ while getting initial credentials.

    Alguem poderia me ajudar?

    root@debian:~# cat /etc/krb5.conf
    [libdefaults]
    default_realm = GLOBALIT.NET
    dns_lookup_realm = false
    dns_lookup_kdc = true
    root@debian:~# kinit administrator@GLOBALIT.NET
    kinit: Cannot contact any KDC for realm ‘GLOBALIT.NET’ while getting initial credentials
    root@debian:~#

    • Samuel
      07/08/2014 às 11:42

      Conseguiu resolver Gabriel? estou iniciando no samba 4 e estou com a mesma dificuldade , pode me ajudar?

    • 07/08/2014 às 11:54

      Pessoal, desculpe a demora mais não tinha visto a pergunta do Gabriel. Tive um problema parecido e custei a perceber que o erro estava no krb5.conf, uppercase e e lowercase no kerberos são muito respeitadas. No [realms] e [domain_realms] o domínio também precisa estar em caixa alta, assim como no dafault_realm.

  9. Bruno
    16/04/2013 às 12:29

    Natália Vaz :
    Tá usando Debian ou Ubuntu? Acabei de lembrar aqui e esqueci de colocar no post, no Ubuntu precisa fazer uma alteração no apparmor… Adicionei as alterações aí.

    Pra mim não está dando certo, continuo com erro ao reiniciar o Bind.
    Erro:
    Apr 16 12:27:24 artserver named[1813]: loading configuration from ‘/etc/bind/named.conf’
    Apr 16 12:27:24 artserver named[1813]: /etc/bind/named.conf:9: open: /usr/local/samba4/private/named.conf: permission denied
    Apr 16 12:27:24 artserver named[1813]: loading configuration: permission denied
    Apr 16 12:27:24 artserver named[1813]: exiting (due to fatal error)
    Apr 16 12:27:24 artserver kernel: [ 376.358511] type=1400 audit(1366126044.448:26): apparmor=”DENIED” operation=”open” parent=1812 profile=”/usr/sbin/named” name=”/usr/local/samba4/private/named.conf” pid=1814 comm=”named” requested_mask=”r” denied_mask=”r” fsuid=106 ouid=106

    • 16/04/2013 às 13:29

      Bruno vou ficar te devendo, realmente só tive o problema mencionado que foi resolvido com a configuração passada.

  1. 08/08/2014 às 16:10

Deixe um comentário