Controlador de Domínio Samba 4

Neste artigo vamos tratar de um assunto especial, vamos falar sobre controlador de domínio no Linux. Neste artigo irei abordar a configuração do Samba 4 como controlador de domínio, concorrente direto do Active Directory da Microsoft 😉 . Ao final deste artigo você será capaz de configura-lo de maneira simples, fácil e objetivo.


CONSIDERAÇÕES

Estou levando em consideração que você já possua conhecimentos em Linux e também saiba o que é, e para que serve um controlador de domínio. Meu foco aqui no blog é criar artigos de SysAdmin para SysAdmin. Estarei utilizando o Debian 9 como base, mas você pode utilizar a distro de sua preferência.


1) INFORMAÇÕES INICIAIS

Antes de começar a nossa instalação, precisamos levantar algumas informações primordiais para o sucesso de nossa configuração.

1.1) Definição de Partições.

Precisamos definir como trabalhará nosso particionamento, estaremos realizando uma configuração do zero, portanto é importante definir as partições de maneira correta. Para este exemplo, nosso controlador de domínio possuirá os seguintes particionamentos:

[sourcecode language=”bash”]
HD 200 GB

/boot 1GB
/ 50GB
/home 118GB
/var 40GB
/swap 5GB

[/sourcecode]


1.2) Definição de IP.

Precisamos também definir o IP fixo que será utilizado pelo nosso controlador de domínio. Para isso, acesse o arquivo de configuração de sua rede e informe o ip que deseja utilizar. Em nosso caso o arquivo é /etc/network/interfaces.

[sourcecode language=”bash”]
#Interface statica
allow-hotplug ens18
iface ens18 inet static
address 192.168.10.2
netmask 255.255.255.0
network 192.168.10.0
gateway 192.168.10.5
dns-nameservers 192.168.10.2
dns-search oliveira.com
[/sourcecode]


1.3) Definição de nome do servidor.

Precisamos também definir o nome do servidor controlador de domínio. Para isso acesse o arquivo /etc/hostname com seu editor de texto de estimação, e defina um nome para o servidor. Essa informação já deve estar com o nome que definiu no momento da instalação do Linux. No nosso exemplo o servidor se chamará srvdc.

1.4) Definição de nome do domínio.

Precisamos também definir um nome de domínio. A dica que dou é sempre utilizar o nome de domínio de e-mail da empresa. No nosso exemplo o domínio se chamará oliveira.com.


2) CONFIGURANDO ARQUIVO HOST.

Vamos definir as informações do arquivo de configuração /etc/hosts. Este arquivo também é utilizado para pesquisa e resolução de nomes. Vamos definir neste arquivo o nome e IP do servidor que estamos instalando de forma que ele também seja conhecido pelo seu número de IP de rede local.

[sourcecode language=”bash”]
127.0.0.1 localhost
127.0.1.1 srvdc.oliveira.com srvdc
192.168.10.2 srvdc.oliveira.com srvdc
[/sourcecode]

 


3) CONFIGURANDO ARQUIVO DE RESOLUÇÃO.

Vamos definir as informações do arquivo de configuração /etc/resolv.conf, informando quem será o servidor DNS. No nosso caso o próprio servidor controlador de domínio será o servidor DNS.

[sourcecode language=”bash”]
domain oliveira.com
search oliveira.com
nameserver 192.168.10.2
[/sourcecode]


4) DEFININDO PERMISSÕES NO FSTAB.

Vamos definir no ponto de montagem /home (Onde ficará as pastas dos usuários em nosso exemplo) as permissões acl, user_xattr. Para isso, vamos editar o arquivo /etc/fstab e adicionar as informações ao ponto de montagem conforme exemplo abaixo.

[sourcecode language=”bash”]
# /home was on /dev/sda3 during installation
UUID=xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxx /home ext4 defaults,acl,user_xattr 0
[/sourcecode]

Após inserida as informações, precisamos remontar o ponto de montagem para que as alterações entrem em vigor.

[sourcecode language=”bash”]
mount -o remount /home
[/sourcecode]


5) INSTALANDO PACOTES.

Agora que já definimos as informações e configurações necessárias, vamos instalar nosso Samba e mais alguns pacotes necessários. Para isso, execute os comandos ilustrados abaixo.

[sourcecode language=”bash”]
apt-get install samba krb5-user winbind smbclient ldap-utils acl attr ntp
[/sourcecode]

Assim que começar a realizar a instalação aparecerá uma tela solicitando a autenticação de kerberos, podemos realizar esta configuração de imediato, ou em um segundo momento através do arquivo /etc/krb5.conf. Vamos continuar a configuração e inserir as informações solicitadas em tela.

Insira também o nome do servidor que responderá ao Kerberos. Em nosso caso o próprio servidor que estamos realizando a instalação.

Também informe o nome do servidor administrativo que realizará a gerencia e troca de senhas para o kerberos. Em nosso caso também será o mesmo servidor.

Feito isso nossos pacotes já estarão instalados, agora precisamos realizar as configurações necessárias.


6) CONFIGURANDO KERBEROS.

Entre no arquivo de configuração /etc/krb5.conf e defina as informações de seu domínio. Em nosso exemplo estamos utilizando o domínio oliveira.com, conforme ilustrado abaixo.

[sourcecode language=”bash”]
[libdefaults]
default_realm = OLIVEIRA.COM
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
fcc-mit-ticketflags = true
dns_lookup_realm = false
dns_lookup_kdc = true
[realms]
OLIVEIRA.COM = {
kdc = srvdc.oliveira.com
default_domain = oliveira.com
admin_server = srvdc.oliveira.com
}
[domain_realm]
.oliveira.com = OLIVEIRA.COM
oliveira.com = OLIVEIRA.COM
[/sourcecode]


7) CONFIGURAÇÃO NTP.

Precisamos configurar o pacote NTP de nosso novo servidor. Para isso, adicione as informações ao final do arquivo de configuração /etc/ntp.conf, conforme ilustrado abaixo.

[sourcecode language=”bash”]
# Relogio Local
server 127.127.1.0
fudge 127.127.1.0 stratum 10

# Configurações adicionais para o Samba 4
ntpsigndsocket /var/lib/samba/ntp_signd/
restrict default mssntp
disable monitor
[/sourcecode]

Após inserir as informações reinicialize o serviço ntp.

[sourcecode language=”bash”]
systemctl restart ntp
[/sourcecode]

Obs: Utilize o comando ntpq -p para verificar se o ntp está funcionando.


8) CONFIGURANDO NSSWITCH.

Precisamos informar ao nosso servidor que desejamos trabalhar com o “winbind”. Esta configuração é utilizada para clientes de autenticação e não vi utilidade na configuração de nosso servidor controlador de domínio. Porém, para que o winbind esteja funcional e configurado de forma correta, caso venha a rebaixar o servidor controlador de domínio, e interessante já deixar essa opção pré configurada. Para isso, edite as duas linhas no arquivo /etc/nsswitch.conf conforme ilustrado abaixo.

[sourcecode language=”bash”]
passwd: compat winbind
group: compat winbind
[/sourcecode]


9) CONFIGURAÇÃO SAMBA.

Agora iremos promover nosso servidor à controlador de domínio. Para isso, precisamos renomear nosso arquivo de configuração original do samba. Isso é necessário pois ao provisionar o samba, um novo arquivo smb.conf será criado.

[sourcecode language=”bash”]
mv /etc/samba/smb.conf /etc/samba/smb.conf.bkp
[/sourcecode]

Feito isso, vamos parar todos os serviços samba e winbind.

[sourcecode language=”bash”]
systemctl stop smbd nmbd winbind
[/sourcecode]

Agora vamos provisionar nosso samba à controlador de domínio através do comando ilustrado abaixo.

[sourcecode language=”bash”]
samba-tool domain provision
[/sourcecode]

Após executar o comando será solicitado várias informações para a configuração do controlador de domínio. Repare que a cada opção solicitada aparece uma informação entre colchetes. Se essa informação for a informação correta, basta pressionar a tecla ENTER para continuar, caso contrário, descreva a informação correta e pressione ENTER.

As informações solicitadas são:

Realm [OLIVEIRA.COM]:  (nome de seu domínio completo).
Domain [OLIVEIRA]: (nome de seu domínio abreviado).
Server Role (dc, member, standalone) [dc]: (tipo de servidor controlador de domínio).
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: (tipo de serviço DNS).
DNS forwarder IP address (write ‘none’ to disable forwarding) [192.168.10.2]: (Encaminhador DNS)

Após essas informações, se tudo correr bem, o domínio será criado com sucesso e será exibida a informação abaixo.

[sourcecode language=”bash”]
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: srvdc
NetBIOS Domain: OLIVEIRA
DNS Domain: oliveira.com
DOMAIN SID: S-1-5-21-1013406554-2850412196-174890639
[/sourcecode]


10) DESABILITANDO SERVIÇOS DE INICIALIZAÇÃO.

Com nosso samba funcionando como controlador de domínio, não podemos mais utiliza-lo como standalone. Precisamos então desabilitar os serviços do samba e winbind da inicialização do sistema.

[sourcecode language=”bash”]
systemctl disable smbd.service nmbd.service winbind.service
[/sourcecode]


11) HABILITANDO SERVIÇOS DE INICIALIZAÇÃO.

Agora precisamos habilitar o serviço samba-ad-dc.service para inicializar junto com o sistema de boot. Porém é preciso realizar o desmascaramento do arquivo utilizando o comando systemctl unmask.

Obs: Quando um arquivo está mascarado é impossível inicializa-lo. Maiores informações consulte o manual do comando systemctl, e pesquise por mask e unmask.

[sourcecode language=”bash”]
systemctl unmask samba-ad-dc.service
[/sourcecode]

Agora vamos adicionar o serviço a inicialização do sistema.

[sourcecode language=”bash”]
systemctl enable samba-ad-dc.service
[/sourcecode]

Pronto! Seu Controlador de Domínio está configurado. Reinicie seu servidor e verifique se o AD estará ativo e inicializável.


12) SINCRONIZAÇÃO DE HORA NO AD.

Em um Active Directory (AD), você deve ter uma sincronização de tempo precisa. Por exemplo, o Kerberos requer carimbos de hora corretos para evitar ataques de repetição e o AD usa o tempo para resolver conflitos de replicação. O desvio de tempo máximo permitido padrão em um AD é de 5 minutos. Se um membro de domínio ou controlador de domínio (DC) tiver uma diferença de horário maior ou menor, o acesso será negado. Como resultado, um usuário não pode acessar compartilhamentos ou consultar o diretório. Já começamos a corrigir esse problema no passo 7, agora precisamos finalizar a configuração, pós instalação do controlador de domínio.  Para isso, vamos dar permissão ao arquivo socket do AD, para que o serviço ntp consiga realizar as alterações de horário.

[sourcecode language=”bash”]
chown root:ntp /var/lib/samba/ntp_signd/
chmod 750 /var/lib/samba/ntp_signd/
[/sourcecode]

OBS: Se você estiver executando o controlador de domínio em uma VM, considere adicionar tinker panic 0ao final do ntp.conf. Isso diz ao NTP para não entrar em pânico e sair, não importa qual seja o deslocamento de tempo. Isso é recomendado porque as máquinas virtuais não têm relógio físico e podem ser pausadas a qualquer momento e iniciar o backup horas mais tarde.

Após realizar as configurações reinicie o serviço ntp.

[sourcecode language=”bash”]
systemctl restart ntp
[/sourcecode]


12) TESTANDO CONTROLADOR DE DOMÍNIO.

Uma forma de testar se seu controlador de domínio está funcionando é utilizar o comando smbclient. Para isso, execute o comando ilustrado abaixo, o resultado exibirá informações sobre o domínio.

[sourcecode language=”bash”]
smbclient -L srvdc -U Administrator
[/sourcecode]

Resultado:

[sourcecode language=”bash”]
root@srvdc:~# smbclient -L srvdc -U Administrator
Enter Administrator’s password:
Domain=[OLIVEIRA] 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=[OLIVEIRA] OS=[Windows 6.1] Server=[Samba 4.5.12-Debian]

Server Comment
——— ——-
SRVDC Controlador de Dominio

Workgroup Master
——— ——-
OLIVEIRA

[/sourcecode]

Também podemos obter mais informações através do comando samba-tool. Para isso, execute o comando ilustrado abaixo, o comando exibirá o nível de domínio e floresta.

[sourcecode language=”bash”]
samba-tool domain level show
[/sourcecode]

Resultado:

[sourcecode language=”bash”]
root@srvdc:~# samba-tool domain level show
Domain and forest function level for domain ‘DC=oliveira,DC=com’

Forest function level: (Windows) 2008 R2
Domain function level: (Windows) 2008 R2
Lowest function level of a DC: (Windows) 2008 R2
[/sourcecode]

Também é interessante testarmos o DNS. Para isso, vamos executar alguns comandos como ilustrado abaixo.

[sourcecode language=”bash”]
root@srvdc:~# host -t A oliveira.com
oliveira.com has address 192.168.10.2

root@srvdc:~# host -t SRV _kerberos._udp.oliveira.com
_kerberos._udp.oliveira.com has SRV record 0 100 88 srvdc.oliveira.com.

root@srvdc:~# host -t SRV _ldap._tcp.oliveira.com
_ldap._tcp.oliveira.com has SRV record 0 100 389 srvdc.oliveira.com.
[/sourcecode]


13) MAIS ALGUNS COMANDOS.

O comando samba-tool é o principal comando de manuseio de informações do controlador de domínio samba por linha de comando. É interessante verificar seu manual para obter o máximo dele.

Abaixo estão listados mais alguns comandos uteis:

13.1) Criar usuários: 

[sourcecode language=”bash”]
samba-tool user create marcos
[/sourcecode]

13.2) Desabilitando obrigatoriedade de troca de senha a cada 45 dias:

[sourcecode language=”bash”]
samba-tool user setexpiry administrator –noexpiry
[/sourcecode]

13.3) Desabilitando obrigatoriedade de complexidade de senha:

[sourcecode language=”bash”]
samba-tool domain passwordsettings set complexity=off
[/sourcecode]

13.4) Desabilitando tamanho mínimo de senhas para o samba:

[sourcecode language=”bash”]
samba-tool domain passwordsettings set –min-pwd-length=0
[/sourcecode]


CONCLUSÃO

Através deste artigo foi possível demostrar de maneira prática e objetiva a configuração de um servidor controlador de domínio utilizando o serviço Samba em uma distribuição Linux Debian 9.

Se você gostou deste post e através dele pude lhe ajudar, o que acha de aproximarmos nosso contato? Siga meu blog e me adicione no Linkedin, aproveite para classificar algumas das minhas competências/recomendações, este simples gesto faz toda a diferença.

Att,
Rafael Oliveira
SysAdmin

Você pode compartilhar esse artigo.

Siga o Blog Via E-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 47 outros assinantes

Sobre o Autor

Rafael Oliveira Maria - Linux

Rafael Oliveira

Bacharel em Sistemas de Informação, SysAdmin, Professor, Blogueiro e Entusiasta Linux.

Certificados:

LPIC-1-Large
LPIC-2
LinuxPlus Logo Certified
itil-foundation-digital-badge

Gostou do conteúdo? Ajude-me a manter o blog.

PicPay - Linux

Aceitamos pagamentos e doações via PicPay link picpay.me/rafaeloliveimar

Ficou com dúvida? Alguma Sugestão ou Elogio? Deixe seu comentário!