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:

HD 200 GB

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


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.

#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


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.

 
127.0.0.1	localhost
127.0.1.1	srvdc.oliveira.com	srvdc
192.168.10.2	srvdc.oliveira.com	srvdc

 


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.

 
domain oliveira.com
search oliveira.com
nameserver 192.168.10.2

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.

 
# /home was on /dev/sda3 during installation
UUID=xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxx /home           ext4    defaults,acl,user_xattr        0      

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

 
mount -o remount /home

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.

apt-get install samba krb5-user winbind smbclient ldap-utils acl attr ntp

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.

 
[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

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.

 
# 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

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

systemctl restart ntp

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.

 
passwd:	compat winbind
group:	compat winbind

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.

mv /etc/samba/smb.conf /etc/samba/smb.conf.bkp

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

  
systemctl stop smbd nmbd winbind

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

 
samba-tool domain provision

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.

 
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

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.

 
systemctl disable smbd.service nmbd.service winbind.service

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.

systemctl unmask samba-ad-dc.service 

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

 
systemctl enable samba-ad-dc.service

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.

 
chown root:ntp /var/lib/samba/ntp_signd/
chmod 750 /var/lib/samba/ntp_signd/

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.

systemctl restart ntp

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.

 
smbclient -L srvdc -U Administrator

Resultado:

 
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         

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.

 
samba-tool domain level show

Resultado:

 
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

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

 
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.

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: 

 
samba-tool user create marcos

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

 
samba-tool user setexpiry administrator --noexpiry

13.3) Desabilitando obrigatoriedade de complexidade de senha:

 
samba-tool domain passwordsettings set complexity=off 

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

 
samba-tool domain passwordsettings set --min-pwd-length=0 

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!