Samba 4: configurando o Samba como Controlador de Domínio do Active Directory
Introdução
Esta documentação descreve como configurar o Samba como o primeiro DC a criar uma nova floresta AD.
Cenário
Este estudo de caso foi feito sobre uma versão do Debian 9 64 bits limpa.
Preparação
- Selecione um nome de host para o AD DC (Não utilize os termos NT4 apenas como nome do host, como
PDC
ouBDC)
. - Use um endereço de IP estático no DC.
- Desative ferramentas, como
resolvconf
, que atualizem automaticamente seu/etc/resolv.conf
arquivo de configuração do resolvedor de DNS. AD DCs e membros do domínio devem usar um servidor DNS que seja capaz de resolver as zonas DNS AD. - Verifique se nenhum processo do Samba está sendo executado:ps ax | egrep “samba | smbd | nmbd | winbindd”
ps ax | egrep "samba | smbd | nmbd | winbindd"
- Configure o
/etc/hosts
127.0.0.1 localhost 200.132.XXX.XXX dc3.addc.sertao dc3
- Remova qualquer versão anterior do smb.conf
smbd -b | grep "CONFIGFILE" CONFIGFILE: /etc/samba/smb.conf rm /etc/smb.conf
- Remova todos os arquivos de banco de dados do Samba, como
*.tdb
e*.ldb
arquivos (somente os arquivos!).
smbd -b | egrep "LOCKDIR|STATEDIR|CACHEDIR|PRIVATE_DIR" LOCKDIR: /var/run/samba STATEDIR: /var/lib/samba CACHEDIR: /var/cache/samba PRIVATE_DIR: /var/lib/samba/private
- Remova qualquer
/etc/krb5.conf
arquivo existente :
rm /etc/krb5.conf
Instalando o Samba via Repositório
A linha abaixo instala o Samba na versão do repositório( Version 4.5.12-Debian em 08/11/2017). Também instala algumas ferramentas básicas necessárias:
apt -y install samba krb5-config winbind smbclient
Basta aceitar as configurações padrão dando ENTER.
Provisionando o Samba como Controlador de Domínio(DC) e com BIND9_DLZ como DNS Backend
Primeiro é necessário remover ou renomear o smb.conf default:
mv /etc/samba/smb.conf /etc/samba/smb.conf.org
Comando para provisonamento:
samba-tool domain provision
# specify Realm Realm [ADDC.SERTAO]: ADDC.SERTAO # specify Domain name Domain [ADDC]: SERTAO # Enter with default because it sets DC Server Role (dc, member, standalone) [dc]: # Enter with default because it uses Built-in DNS DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ # confirm DNS setting and Enter if it's OK # set admin password # Do not set trivial password, if you input it, configuration wizard shows error and stops Administrator password: Retype password: Looking up IPv4 addresses Looking up IPv6 addresses No IPv6 address will be assigned Setting up share.ldb 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=srv,DC=world Adding configuration container Setting up sam.ldb schema Setting up sam.ldb configuration data Setting up display specifiers Modifying 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=srv,DC=world Creating DomainDnsZones and ForestDnsZones partitions Populating DomainDnsZones and ForestDnsZones partitions Setting up sam.ldb rootDSE marking as synchronized Fixing provision GUIDs A Kerberos configuration suitable for Samba 4 has been generated at /var/lib/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: dc3 NetBIOS Domain: SERTAO DNS Domain: addc.sertao DOMAIN SID: S-1-5-21-2545056461-174665597-1916133120
Copiar o arquivo de configuração Kerberos gerado pelo provisionamento:
cp /var/lib/samba/private/krb5.conf /etc/
Parar e desativar rotinas paralelas do Samba e habilitar script samba-ad-dc:
systemctl stop smbd nmbd winbind
systemctl disable smbd nmbd winbind
systemctl unmask samba-ad-dc
systemctl start samba-ad-dc
systemctl enable samba-ad-dc
Teste inicial do Samba e mapeamentos
smbclient -L localhost -U%
Domain=[SERTAO] OS=[Windows 6.1] Server=[Samba 4.5.12-Debian] Sharename Type Comment --------- ---- ------- netlogon Disk sysvol Disk IPC$ IPC IPC Service (Samba 4.5.12-Debian) Domain=[SERTAO] OS=[Windows 6.1] Server=[Samba 4.5.12-Debian] Server Comment --------- ------- Workgroup Master --------- ------- WORKGROUP DC3
Confirmar nível de domínio
samba-tool domain level show
domain and forest function level for domain 'DC=addc,DC=sertao' Forest function level: (Windows) 2008 R2 Domain function level: (Windows) 2008 R2 Lowest function level of a DC: (Windows) 2008 R2
Configurando DNS Backend com BIND9_DLZ
Foi optado pela instalação do Bind via repositório como a própria documentação do Samba recomenda:
apt-get install bind9
Verifica a versão instalada:
named -v BIND 9.10.3-P4-Debian <id:ebd72b3>
Habilita o módulo correspondente descomentando a linha correspondente no arquivo /var/lib/samba/private/named.conf:
dlz "AD DNS Zone" { # For BIND 9.8.x # database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9.so"; # For BIND 9.9.x # database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_9.so"; # For BIND 9.10.x database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_10.so"; # For BIND 9.11.x # database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_11.so"; };
Definir uma entrada nas configurações do BIND apontando para o arquivo gerado pelo Samba (/var/lib/samba/private/named.conf):
nano /etc/bind/named.conf
include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local"; include "/etc/bind/named.conf.default-zones"; #Entrada do Samba no BIND include "/var/lib/samba/private/named.conf";
Instalar pacote DNS Utils (nsupdate)
Usado no processo de atualização dinâmica do DNS.
apt-get install dnsutils
Para verificar:
which nsupdate
Atualização Dinâmica do DNS via Kerberos
Nas configurações do DNS Bind faça uma entrada com a seguinte linha no arquivo /etc/bind/named.conf.options):
tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";
Ajuste as permissões de acesso do Bind no arquivo dns.keytab:
chmod 640 /var/lib/samba/private/dns.keytab chown root:bind /var/lib/samba/private/dns.keytab
A permissão do Bind no arquivo /etc/krb5.conf deve ser a seguinte:
ls -l /etc/krb5.conf -rw-r--r-- 1 root bind 104 nov 8 13:42 /etc/krb5.conf
Checando a configuração do BIND:
named-checkconf
Iniciando o serviço do DNS:
/etc/init.d/bind9 start
Testando as atualizações dinâmicas do DNS:
samba_dnsupdate --verbose --all-names
Configurando o Resolvedor de DNS
nano /etc/resolv.conf domain addc.sertao.ifrs.edu.br nameserver 200.132.XXX.XXX
Configure com o endereço do próprio servidor.
Testar autenticação do Administrator na pasta netlogon
smbclient //localhost/netlogon -UAdministrator -c 'ls'
Verificar resolução de nomes do DC:
LDAP:
host -t SRV _ldap._tcp.addc.sertao. _ldap._tcp.addc.sertao.ifrs.edu.br has SRV record 0 100 389 dc3.addc.sertao
Kerberos:
host -t SRV _kerberos._udp.addc.sertao. _kerberos._udp.addc.sertao has SRV record 0 100 88 dc3.addc.sertao.
DNS:
host -t A dc3.addc.sertao. dc3.addc.sertao has address 200.132.XXX.XXX
Verificar e listar Tickets do Kerberos
kinit administrator Password for administrator@ADDC.SERTAO: Warning: Your password will expire in 41 days on qua 20 dez 2017 13:42:36 -02
klist
Solução de Problemas
Para resolução de problemas relacionados ao DNS é possível rodar o seguinte script de auto-reconfiguração que corrige diversos problemas automaticamente:
samba_upgradedns --dns-backend=BIND9_DLZ Reading domain information DNS accounts already exist No zone file /usr/local/samba/private/dns/SAMDOM.EXAMPLE.COM.zone DNS records will be automatically created DNS partitions already exist dns-DC1 account already exists 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 Finished upgrading DNS
Reinicie o serviço bind e teste novamente:
samba_dnsupdate --verbose --all-names
Fontes e Referências
Documentação oficial Samba:
https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller
Samba AD DC : Configure DC Debian 9
https://www.server-world.info/en/note?os=Debian_9&p=samba&f=4