Samba 4.8.x : instalação de versões atualizadas do Samba via PPA confiável

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.

O Samba na versão 4.8.

Dependências

Segundo a  wiki do Samba 4:

apt-get install acl attr autoconf bind9utils bison build-essential debhelper dnsutils docbook-xml docbook-xsl flex gdb libjansson-dev krb5-user libacl1-dev libaio-dev libarchive-dev libattr1-dev libblkid-dev libbsd-dev libcap-dev libcups2-dev libgnutls28-dev libgpgme-dev libjson-perl libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl libpopt-dev libreadline-dev nettle-dev perl perl-modules-5.24 pkg-config python-all-dev python-crypto python-dbg python-dev python-dnspython python3-dnspython python-gpgme python3-gpgme python-markdown python3-markdown python3-dev xsltproc zlib1g-dev liblmdb-dev lmdb-utils

Para Debian Strech:

apt-get install winbind libpam-winbind libnss-winbind libpam-krb5 krb5-config krb5-user

Preparação

  • Selecione um nome de host para o AD DC (Não utilize os termos NT4 apenas como nome do host, como PDCou BDC).
  • Use um endereço de IP estático no DC.
  • Desative ferramentas, como resolvconf, que atualizem automaticamente seu /etc/resolv.confarquivo 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

*ADDC é o exemplo de nome de domínio.

  • 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 *.ldbarquivos (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.confarquivo 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.8.2 em 27/06/18). Também instala algumas ferramentas básicas necessárias:

apt-get install apt-transport-https

echo "deb http://apt.van-belle.nl/debian stretch-samba48 main contrib non-free" | sudo tee -a /etc/apt/sources.list.d/van-belle.list
wget -O - http://apt.van-belle.nl/louis-van-belle.gpg-key.asc | apt-key add -
apt-get update
apt-get install -t o=AptVanBelle samba winbind

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 --use-rfc2307 --interactive

# specify Realm
Realm [ADDC.SERTAO]: <pressione ENTER>
# specify Domain name
Domain [ADDC]: <pressione ENTER>
# 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: <passwd>
Retype password: <passwd>
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

OBS: Output acima meramente ilustrativo. O ideal é responder as questões de acordo com o que é apresentado.

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

apt-get install smbclient 

smbclient -L localhost -U%
  Sharename       Type      Comment
  ---------       ----      -------
  netlogon        Disk      
  sysvol          Disk      
  IPC$            IPC       IPC Service (Samba 4.7.7-Debian)
Reconnecting with SMB1 for workgroup listing.

  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

Seguir os passos BIND9 – Instalação via source da versão 9.11.x no debian 9.4

Foi optado pela instalação do Bind via repositório como a própria documentação do Samba recomenda:

Verifica a versão instalada:

named -v

BIND 9.11.4rc1 (Extended Support Version) <id:37f469d>

Habilita o módulo correspondente a descomentando a linha correspondente no arquivo: na versão Samba 4.8.x /var/lib/samba/bind-dns/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 4.8.x no BIND
include "/var/lib/samba/bind-dns/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/bind-dns/dns.keytab";

No Samba 4.5.12

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/bind-dns/dns.keytab
chown root:bind /var/lib/samba/bind-dns/dns.keytab

A permissão do Bind no arquivo /etc/krb5.conf deve ser a seguinte:

chown root:bind /etc/krb5.conf

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

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.

Iniciando o serviço do DNS:

/etc/init.d/bind9 start

Testando as atualizações dinâmicas do DNS:

samba_dnsupdate --verbose --all-names

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

APPARMOR – ajustes

Adicionar as linhas abaixo no arquivo /etc/apparmor.d/usr.sbin.named

# Samba4 DLZ and Active Directory Zones (default source installation)
  /var/lib/samba/lib/** rm,
  /var/lib/samba/bind-dns/dns.keytab r,
  /var/lib/samba/bind-dns/named.conf r,
  /var/lib/samba/bind-dns/dns/** rwk,

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 atualize os registros de DNS:

samba_dnsupdate --verbose --all-names

Re-Provisioando

Caso necessite re-provisionar, execute os comandos abaixo.

Dentro de /etc/samba

mv smb.conf smb.conf.old

Remover arquivos internos do samba referente ao antigo provisionamento.

find /var/run/samba -iregex ".*\.\(tdb\|ldb\)" -delete && \
find /var/lib/samba -iregex ".*\.\(tdb\|ldb\)" -delete && \
find /var/cache/samba -iregex ".*\.\(tdb\|ldb\)" -delete

Comandos Úteis

Informações sobre o DNS

samba-tool dns serverinfo 127.0.0.1 -U Administrator --password=senha_AD

Listar todas as Zona de dns do seu servidor

samba-tool dns zonelist 127.0.0.1 -U Administrator --password=senha_AD

Lista zone DNS Reverso

samba-tool dns zonelist 127.0.0.1 --reverse -U Administrator --password=senha_AD

 

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

Repositório confiável utilizado:
https://apt.van-belle.nl/

 

 

Um comentário em “Samba 4.8.x : instalação de versões atualizadas do Samba via PPA confiável

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *