### Rever se necessario ajustar config smb.conf
###protocol = SMB3
###client min protocol = SMB2_02
###server min protocol = SMB2_02
Versão utilizada: Debian 10 + Samba 4.12.5
A versão do Samba 4.5 não adiciona automaticamente as entradas no DNS, portanto é preciso realizar manualmente. A partir da versão 4.7 passou a utilizar o modo automático de adição de entradas no DNS. - Ajuste o repositório do debian para aceitar o repositório testing e instalar versão Samba 4.7 ou superiores.
Defina o nome de domínio a ser utilizado, um exemplo para domínio local seria LOCAL.DOMAIN.
Dica: Para criação do NOME de domínio interno utilizar [LOCAL,OFFICE,HOME,LAN].DOMAIN, esta é uma forma de evita conflito com nomes de domínios externos e serviços Zeroconf e MAC.
Defina qual modo de serviço ira utilizar (DC, RODC, MEMBER, SUBDOMAIN).
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.
Ajustar o arquivo hosts
# vi /etc/hosts
10.0.2.22 smbdc01.local.domain smbdc01
Ajustar o arquivo hosts
# vi /etc/hosts
10.0.2.22 smbdc01.local.domain smbdc01
Ajuste o arquivo /etc/resolv.conf
domain smbdc01.local.domain
search smbdc01.local.domain
nameserver 10.0.2.22
Instalar os pacotes para o serviço NTP
# apt install ntp ntpdate
Configurar o serviço NTP
# /etc/ntp.conf
Testar o serviço NTP
# ntpq -p
# ntpdate -u <IP ou NOMESERVER>
Instalar os pacotes para o serviço do Samba
# apt -t testing install samba smbclient attr winbind libpam-winbind libnss-winbind libpam-krb5 krb5-config krb5-user net-tools dnsutils
Modify smb.conf to use WINS settings from DHCP? = No
Default Kerberos version 5 realm: DOMAIN
Kerberos servers for your realm: DOMAIN
Administrative server for your Kerberos realm: DOMAIN
Confirme se os serviços estão rodando
# ps axf | egrep "samba|smbd|nmbd|winbindd"
Remova os arquivos atuais de configuração do samba e do kerberous
Para descobrir onde esta o arquivo do samba utilize o comando # smbd -b | grep "CONFIGFILE"
# rm /etc/samba/smb.conf && rm /etc/krb5.conf
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 /var/run/samba/*.tdb /var/run/samba/*.ldb && rm -f /var/lib/samba/*.tdb /var/lib/samba/*.ldb && rm -r /var/cache/samba/*.tdb /var/cache/samba/*.ldb && rm -f /var/lib/samba/private/*.tdb /var/lib/samba/private/*.ldb
# samba-tool domain provision --server-role=dc --use-rfc2307 --dns-backend=SAMBA_INTERNAL --realm=LOCAL.DOMAIN --domain=DOMAIN --adminpass=<PASSWD>
Nota: A senha do parametro adminpass será a senha do usuario Administrtor.
Ajustando o DNS Forward no novo arquivo smb.conf alterando conforme abaixo:
# vi /etc/samba/smb.conf
[global]
dns forwarder = 1.1.1.1 8.8.8.8 9.9.9.9
dns zone scavenging = Yes
Ajustando o daemon
# systemctl stop smbd nmbd winbind samba-ad-dc
# systemctl disable smbd nmbd winbind samba-ad-dc
# systemctl unmask smbd nmbd winbind samba-ad-dc
# systemctl start samba-ad-dc && systemctl enable samba-ad-dc
Criando a Zona Reversa
# samba-tool dns zonecreate smbdc1.local.domain 2.0.10.in-addr.arpa -UAdministrator
Configurando o Kerberous
# cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
Verificando o File Server
# samba-tool domain level show
# smbclient -L localhost -U%
### Rever se necessario ajustar config smb.conf
###protocol = SMB3
###client min protocol = SMB2_02
###server min protocol = SMB2_02
# smbclient //localhost/netlogon -UAdministrator -c 'ls'
Verificando o DNS
# host -t SRV _ldap._tcp.local.domain.
# host -t SRV _kerberos._udp.local.domain.
# host -t A smbdc1.local.domain.
# netstat -tulpn | grep ":53"
# samba-tool dbcheck --cross-ncs
Verificando o Kerberous (Opcional)
# kinit administrator
# klist
Daemon
# systemctl start samba-ad-dc.service
* Samba como controlador de domínio
# samba-tool domain provision --server-role=dc --use-rfc2307 --dns-backend=SAMBA_INTERNAL --realm=LOCAL.DOMAIN.COM --domain=LOCAL --adminpass=<PASSWD>
Nota: É possivel utilizar BIND9_DLZ como dns-backend - testar config do link
* Copie o novo krb5.conf para o /etc
# cp /usr/local/samba/private/krb5.conf /etc/krb5.conf
* Samba como controlador de domínio
dns forwarder = 8.8.8.8 1.1.1.1 208.67.222.222
path = /export/dfsroot
host msdfs = yes
vfs object = dfs_samba4
ln -s msdfs:storage0\\share0 linkatask[kdc] pre-forked worker(2)
1613 ? S 0:00 | \_ samba: tfork waiter proces
ln -s msdfs:server1\\share,server2\\share linkb
[dfs]
path = /windows/dfs
read only = No
msdfs root = Yes
samba-tool domain join LOCAL.DOMAIN.COM DC -U Administrator" --adminpass=<PASSWD> --realm=LOCAL.DOMAIN.COM --dns-backend=SAMBA_INTERNAL <- como Domain Controller PDC/BDC
samba-tool domain join LOCAL.DOMAIN.COM RODC -U Administrator" --adminpass=<PASSWD> --realm=LOCAL.DOMAIN.COM --dns-backend=SAMBA_INTERNAL <- como RODC
samba-tool domain join LOCAL.DOMAIN.COM -U Administrator" --adminpass=<PASSWD> --dns-backend=SAMBA_INTERNAL
/etc/krb5.conf
[libdefaults]
default_realm = local.domain.com
dns_lookup_realm = true
dns_lookup_kdc = true
kinit Administrator
ntpdate windc01.local.domain.com
DNS
samba-tool dns add <IP_AD_DNS> local.domain.com smbdc02 A <IP_SAMBA> -U Administrator
samba-tool drs kcc -U Administrator
samba-tool drs showrepl
samba-tool user add <NOME_USER>
* Como RODC sempre sera necessario que o AD primario esteja ativo
TRANSF FSMO - trocar para o server smbdc02 antes de trocar
* Visualmente em Operation master alterar RID/PDC/Infraestructure
* regsvr32 schmmgmt.dll para registrar a biblioteca e alterar no mmc/AD schema
* Active directory domain and trust operation master
* No samba pegar as fsmo do server windows
samba-tool fsmo seize --role=rid
samba-tool fsmo seize --role=pdc
samba-tool fsmo seize --role=infrastructure
samba-tool fsmo seize --role=schema
samba-tool fsmo seize --role=naming
OU
samba-tool fsmo transfer --role=all --
samba-tool fsmo show
Desligar o servidor windows
* O PDC realizado teste foi um Windows 2008 R2 com o nome windc01.local.domain.com
* Preparação do ambiente para instalação, reserve as informações abaixo para facilitar o andamento da instalação.
* Utilize o link do site oficial do Samba Joining a Samba DC to an Existing Active Directory para maiores esclarecimentos.
* Ajuste o nome do servidor no arquivo /etc/hostname alterando para
smbdc02
* Ajuste o ip da maquina /etc/network/interface
address 10.0.2.23
netmask 255.255.255.0
gateway 10.0.2.2
* Reinicie para subir com as configurações nova de nome e ip
* Instalar os pacotes de dependência para o serviço do Samba
Nota: será solicitada configuração para o serviço kerberos, deixe padrão. O pacote nscd sera utilizado para auxiliar na limpeza do cache do DNS.
* Instalar os pacotes para o serviço do Samba
# apt install attr ldb-tools dnsutils ntpdate nscd libpam-krb5 krb5-config krb5-user
# apt -t testing install samba smbclient winbind libpam-winbind libnss-winbind
# apt -t testing install samba smbclient winbind libpam-winbind libnss-winbind
Nota: Foi utilizada a versão Samba4.7 (testing) por adicionar as entradas de modo automático na base do serviço DNS
* mova os arquivos atuais de configuração
# mv /etc/samba/smb.conf /home
# mv /etc/krb5.conf /home
* Atualizar o date time do servidor
# ntpdate -u <IP ou NOME_SERVER_PDC> ou a.ntp.br
domain local.domain.com
search local.domain.com
nameserver 10.0.2.21
nameserver 10.0.2.23
* Ajuste o arquivo /etc/krb5.conf
[libdefaults]
dns_lookup_realm = false
dns_lookup_kdc = true
default_realm = LOCAL.DOMAIN.COM
* Verificar se o acesso do kerberous esta funcionando
# kinit administrator
Password for administrator@LOCAL.DOMAIN.COM:
# klist <- Lista o ticket
# systemctl stop smbd.service nmbd.service winbind.service
# systemctl disable smbd.service nmbd.service winbind.service
# systemctl unmask samba-ad-dc.service
* Realize o ingresso do Samba como domain controller
# samba-tool domain join local.domain.com DC -U"LOCAL\Administrator" --realm=LOCAL.DOMAIN.COM --dns-backend=SAMBA_INTERNAL
Comando opcional: --adminpass=<PASSWD>
* Acesse o arquivo de configuração do samba e adicione a linha
# vi /etc/samba/smb.conf
[global]
...
dns forwarder = 8.8.8.8 1.1.1.1 208.67.222.222
...
Nota: A partir do Samba 4.5 é possivel utilizar forward para multiplos IP's.
* Reinicie os serviço
# systemctl start samba-ad-dc.service
# systemctl enable samba-ad-dc.service
# systemctl status samba-ad-dc.service
* Execute os testes para validar o funcionamento do ambiente.
* Verifique o DNS
# host -t A smbdc02.local.domain.com
# host -t A local.domain.com localhost <- Verifica em todos os dns resolver. O retorno deve ser de cada um dos servidores LDAP/AD
# dig -t A smbdc02.local.domain.com +short <- Caso tenha instalado o pacote dnsutils
# dig -t A sambadc01.local.domain.com
# dig -t SRV _ldap._tcp.local.doamin.com <- O retorno deve ser de cada um dos servidores LDAP/AD
# dig -t SRV _kerberos._tcp.local.domain.com <- O retorno deve ser de cada um dos servidores LDAP/AD
* Crie um usuario no Active directory e verifique se o mesmo foi replicado
# samba-tool user list
# samba-tool user create <NOME>
* Verifica a replicação
# samba-tool drs showrepl
* Realize a replicação do sysvol de maneira manual para validar o as Policies
- Acesse o Windows-DC
PS C:\> robocopy \\local.domain.com\sysvol\local.domain.com\ \\smbdc02\sysvol\local.domain.com\ /mir /sec
- Acesse o smbdc02 e execute
# samba-tool ntacl sysvolreset
# samba-tool ntacl sysvolcheck
Nota: Crie um agendador do windows para executar a cada 5 minutos para sincronizar os arquivos sysvol.
* Verifica o File Server
# smbclient -L localhost -U%
* Verificar a conexão com netlogon
# smbclient //localhost/netlogon -UAdministrator -c 'ls'
* Testando a replicação de diretorio
# samba-tool ldapcmp ldap://windc01 ldap://smbdc02 -Uadministrator domain
# samba-tool ldapcmp ldap://windc01 ldap://smbdc02 -Uadministrator configuration
# samba-tool ldapcmp ldap://windc01 ldap://smbdc02 -Uadministrator schema
# samba-tool ldapcmp ldap://windc01 ldap://smbdc02 -Uadministrator dnsdomain
# samba-tool ldapcmp ldap://windc01 ldap://smbdc02 -Uadministrator dnsforest
# samba-tool ldapcmp ldap://DC1 ldap://DC2 -Uadministrator domain --filter=msDS-NcType,serverState
# samba-tool ldapcmp ldap://DC1 ldap://DC2 -Uadministrator domain --filter=msDS-NcType,serverState,subrefs
* Caso seja o DC primario transfira as FSMO para outro DC
# samba-tools fsmo transfer -role= <- Testar
# samba-tool domain demote -U Administrator
* Filtro
$ ldbsearch -H ldap://<IP_SERVER> -s base -b "" defaultNamingContext
$ ldbsearch -H ldap://<IP_SERVER> "cn=Administrator" -UAdministrator
$ ldbsearch -H ldap://<IP_SERVER> "samaccountname=Administrator" -U Administrator
* Criar novo certificado com data maior e com NOME especifico.
* O local default de armazenamento do certificado do samba é /var/lib/samba/private/tls/.
# cd /etc/samba/tls
# openssl req -newkey rsa:2048 -keyout mykey.pem -nodes -x509 -days 9999 -out mycert.pem -subj "/C=BR/ST=PARANA/L=CURITIBA/O=EXPOENTE/OU=TI/CN=<NOME.local>/emailAddress=suportetecnico@domain.com/"
# chmod 600 mykey.pem
# cd ..
# vi smb.conf
tls keyfile = /etc/samba/tls/mykey.pem
tls certfile = /etc/samba/tls/mycert.pem
# /etc/init.d/samba restart
* A linha abaixo reduz a proteção de integridade, esta redução ajuda a alguns softwares, por exemplo o OPNSense, a realizar consultas.
# vi /etc/samba/smb.conf
ldap server require strong auth = no