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 bind9Dependê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-devCriar 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 installUbuntu 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-devNo 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 bind9Para 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 aclUbuntu 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 aclNota: 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 provisionSerã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 restartIniciar o samba
# /usr/local/samba/sbin/sambaAtualizar a base DNS
# /usr/local/samba/sbin/samba_dnsupdate –verbose –all-namesTestar 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:
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.
Obrigada Gleyson.
O arquivo pertence a que grupo/usuário? Tive problemas com o bind só quando esqueci de alterar as conf do bind…
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.
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
Valeu pela dica Natália… fiz os ajustes e consegui!
Que bom então Gleyson
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.
Obrigada Fernando. Com certeza são assuntos interessantes. Vou pensar para posts futuros.
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?
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?
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.
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 😀
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:~#
Conseguiu resolver Gabriel? estou iniciando no samba 4 e estou com a mesma dificuldade , pode me ajudar?
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.
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
Bruno vou ficar te devendo, realmente só tive o problema mencionado que foi resolvido com a configuração passada.