Versão utilizada: Debian 11
O Samba DC secundário se integra ao domínio perfeitamente, porem, o serviço DNS não faz parte de sua configuração.
Quanto ao uso do Samba_Internals/Bind, fica por sua escolha.
O Samba DC secundário no RSAT se apresenta como offline.
Reforço que o uso do Samba_Internals é para ambientes pequenos ou de estudos.
Uma boa ideia e ter o backup da VM sempre atualizado.
Reserve as informações para facilitar a instalação. A tabela abaixo serve para ajudar na orientação.
Utilize o link do site oficial do Samba como controlador de domínio para maiores esclarecimentos.
Role: dc
Quantos sites: 1
Quantos Domain controllers: 2
Top level Domain: LOCAL.DOMAIN
Hostname: home11
Authentication Domain: home11.local.domain
Endereço IP: 192.168.10.11
Serviço DNS: BIND9_DLZ
Primary Domain Controller - PDC: YES
Backup Domain Controller - BDC: YES
DNS Resolver: 1.1.1.3; 9.9.9.11;
Quantos usuários: Pequenas/Medias estruturas (200) -> ou mais, não tenho relação de performance.
Ajustar o nome do servidor
# hostnamectl set-hostname home11 <- Ou outro conforme sua escolha
Ajustes o arquivo hosts
# vi /etc/hosts
127.0.0.1 localhost
192.168.10.10 home10.local.domain home10 <- IP do Samba4 DC
192.168.10.11 home11.local.domain home11
Nota: Configurar em todos os DC's as entradas no arquivo hosts.
Configurar a interface de rede
# vi /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug ens18
iface ens18 inet static
address 192.168.10.11/24
gateway 192.168.10.1
# This is an autoconfigured IPv6 interface
#iface ens18 inet6 auto
# LAN de Gerencia
allow-hotplug ens19
iface ens19 inet static
address 192.168.1.114/24
Reinicialize o servidor.
# reboot
Instalar pacotes e dependências:
# apt update && apt install acl attr samba smbldap-tools samba-dsdb-modules samba-vfs-modules winbind libpam-winbind libnss-winbind krb5-user dnsutils smbclient ldb-tools python3-cryptography ntp ntpdate ldap-utils bind9-utils bind9 -y
Default Kerberos version 5 realm: LOCAL.DOMAIN <- Pressione Enter
Kerberos servers for your realm: <vazio> <- Pressione Enter
Administrative server for your Kerberos realm: <vazio> <- Pressione Enter
# samba -V <- Informara a versão
Configurar o serviço NTP para ajudar a data e hora do servidor:
# /etc/ntp.conf
Testar o serviço NTP
# ntpq -p
# ntpdate -u <IP ou NOMESERVER>
Confirme se os serviços estão rodando e pare-os:
# ps axf | egrep "samba|smbd|nmbd|winbindd"
# systemctl stop smbd.service nmbd.service winbind.service samba-ad-dc.service
Remova o arquivo de configuração smb.conf existente:
# smbd -b | grep "CONFIGFILE"
CONFIGFILE: /etc/samba/smb.conf
# mv /etc/samba/smb.conf /etc/samba/smb.conf.default
Remova os arquivos de Database do Samba, *.tdb e *.ldb.
Para descobrir onde estão os arquivos utilize o comando smbd -b | egrep "LOCKDIR|STATEDIR|CACHEDIR|PRIVATE_DIR"
# rm -f /run/samba/*.tdb || rm -f /run/samba/*.ldb
# rm -f /var/lib/samba/*.tdb || rm -f /var/lib/samba/*.ldb
# rm -f /var/cache/samba/*.tdb || rm -f /var/cache/samba/*.ldb
# rm -f /var/lib/samba/private/*.tdb || rm -f /var/lib/samba/private/*.ldb
Configure o resolv.conf
# vi /etc/resolv.conf
domain local.domain
search local.domain
nameserver 192.168.10.10
nameserver 192.168.10.11
nameserver 127.0.0.1
# samba-tool domain join local.domain DC -U administrator --realm=LOCAL.DOMAIN -W DOMAIN --dns-backend=BIND9_DLZ --option="interfaces=lo ens18" --option="bind interfaces only=yes" --option="dns forwarder = 127.0.0.1" --option="dns zone scavenging = Yes" --option="log file = /var/log/samba/SAMBA-AD.log" --option="log level = 1 auth:5 winbind:5" --option="max log size = 1000" --option='idmap_ldb:use rfc2307 = yes' --password=Passw0rd
...
Password for [DOMAIN\administrator]:
Ajustando o DNS Forward no novo arquivo smb.conf alterando conforme abaixo:
# cat /etc/samba/smb.conf
Disponibilize o KRB5
# mv /etc/krb5.conf /etc/krb5.conf.default && cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
Inicie o serviço do Samba
# systemctl disable smbd.service nmbd.service winbind.service samba-ad-dc.service && systemctl unmask samba-ad-dc.service && systemctl enable samba-ad-dc.service && systemctl start samba-ad-dc.service && systemctl daemon-reload
Para descobrir quais portas o serviço esta usando e funcionando:
# netstat -ntlup | egrep "samba|smbd" <- Caso tenha instalado o pacote net-tools o comando funcionará
# smbclient //localhost/netlogon -U Administrator -c 'ls'
Enter DOMAIN\Administrator's password:
. D 0 Sat Nov 19 11:17:45 2022
.. D 0 Sat Nov 19 11:17:51 2022
36115224 blocks of size 1024. 33696080 blocks available
# smbclient -L local.domain -N
Anonymous login successful
Sharename Type Comment
--------- ---- -------
sysvol Disk
netlogon Disk
IPC$ IPC IPC Service (Samba 4.13.13-Debian)
SMB1 disabled -- no workgroup available
Validar o funcionamento do Kerberos
# kinit administrator
Password for administrator@LOCAL.DOMAIN:
Warning: Your password will expire in 41 days on Sat 31 Dec 2022 11:17:51 AM -03
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@LOCAL.DOMAIN
Valid starting Expires Service principal
11/19/2022 11:47:59 11/19/2022 21:47:59 krbtgt/LOCAL.DOMAIN@LOCAL.DOMAIN
renew until 11/20/2022 11:47:55
# wbinfo -u
# wbinfo -g
# wbinfo -t
# wbinfo --ping-dc
Após criar um usuário e possível testar
# wbinfo -i DOMAIN\\NomeUser
Avalia o domain level
# samba-tool domain level show
Domain and forest function level for domain 'DC=local,DC=domain'
Forest function level: (Windows) 2008 R2
Domain function level: (Windows) 2008 R2
Lowest function level of a DC: (Windows) 2008 R2
Avalia se existe falha de consistência na base
# samba-tool dbcheck --cross-ncs
Caso altere as configurações do smb.conf execute o comando abaixo para atualizar sem reiniciar o serviço. (Opcional)
# smbcontrol all reload-config
Confira as entradas estão no arquivo named.conf:
# cat /etc/bind/named.conf
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
Ajuste o arquivo named.conf.options
# mv /etc/bind/named.conf.options /etc/bind/named.conf.options.default
# vi /etc/bind/named.conf.options
acl "trusted" { 192.168.10.0/24; 192.168.20.0/24; 127.0.0.0/8; localhost; };
options {
directory "/var/cache/bind";
dnssec-validation yes;
listen-on-v6 { none; };
version none;
hostname none;
server-id none;
allow-update { none; };
datasize default;
listen-on port 53 { 192.168.10.11; 127.0.0.1; ::1; };
auth-nxdomain yes;
notify no;
empty-zones-enable no;
minimal-responses yes;
tkey-gssapi-keytab "/var/lib/samba/bind-dns/dns.keytab";
allow-query { trusted; };
allow-query-cache { trusted; };
allow-recursion { trusted; };
recursion yes;
forwarders { 192.168.10.1; }; <- Ajuste conforme necessário
allow-transfer { none; };
};
Validar a configuração do arquivo named.conf.options
# named-checkconf /etc/bind/named.conf.options
Por padrão de instalação o Bind9 ira usar os arquivos existentes em:
O arquivo /usr/share/dns/root.hints que contem as entradas hints.
O arquivo /etc/bind/db.local que contem a entrada localhost.
O arquivo /etc/bind/db.127 que contem o reverso para 127.0.0.1.
Ajsute o arquivo named.conf.local:
# vi /etc/bind/named.conf.local
#######################include "/var/lib/samba/bind-dns/named.conf";
# echo "include "/var/lib/samba/bind-dns/named.conf";" >> /etc/bind/named.conf.local
Reinicie o serviço Bind
# systemctl restart named.service
# tail -f /var/log/syslog <- para acompanhar a evolução do funcionamento do Bind
Receber/enviar replicas DNS
Depois de replicar é possível realizar os testes abaixo.
Testar o funcionamento do serviço DNS
# host -t A localhost 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
localhost has address 127.0.0.1
# host -t PTR 127.0.0.1
1.0.0.127.in-addr.arpa domain name pointer localhost.
# host local.domain
local.domain has address 192.168.10.10
local.domain has address 192.168.10.11
# host -t SRV _ldap._tcp.local.domain
_ldap._tcp.local.domain has SRV record 0 100 389 samba.local.domain.
# host -t SRV _kerberos._udp.local.domain
_kerberos._udp.local.domain has SRV record 0 100 88 samba.local.domain.
# host -t A home11.local.domain
home11.local.domain has address 192.168.10.11
# dig @localhost local.domain
# dig @localhost home10.local.domain
# dig -t SRV @localhost _ldap._tcp.local.domain
Para configurar IDs idênticos nos controladores de domínio, após ingressar o DC adicional Samba 4 siga os passos :
No DC primário localize o arquivo idmap.ldb
# ls /var/lib/samba/private/idmap.ldb
Use o comando abaixo para gerar um backup do mesmo
# tdbbackup -s .bak /var/lib/samba/private/idmap.ldb
Agora mova o arquivo de backup o DC adicional, remova o sufixo .bak e substitua o arquivo existente em /var/lib/samba/private/.
Redefinir as listas de controle de acesso do sistema de arquivos (ACL) da pasta Sysvol no novo DC com o comando :
# samba-tool ntacl sysvolreset
# samba-tool ntacl sysvolcheck