Configurar um servidor Samba AD (Active Directory) no Linux Ubuntu pode parecer uma tarefa complicada, mas com um guia passo a passo, é possível realizar a instalação e configuração de maneira eficiente. Neste tutorial, vamos abordar a configuração de um servidor Ubuntu para atuar como controlador de domínio utilizando o Samba, um software livre que implementa o protocolo SMB/CIFS, permitindo que máquinas Linux e Windows trabalhem em conjunto.
Preparação do Ambiente
Primeiramente, é necessário realizar o download do Ubuntu Server, que pode ser feito através do link oficial Ubuntu Server Download. Recomenda-se utilizar as versões 22.04 ou 24.04 do Ubuntu Server para garantir compatibilidade e suporte atualizado. Durante a instalação, opte por instalar o sistema apenas no modo texto e use o sistema de arquivos XFS, pois ele oferece melhor suporte para ACLs (Access Control Lists), embora o ext4 também seja uma opção viável.
Configuração Inicial do Servidor
Após a instalação, o primeiro passo é definir as configurações básicas do servidor, como o nome da máquina e o Fully Qualified Domain Name (FQDN). Para isso, utilize os seguintes comandos:
$ hostnamectl set-hostname ad01
Isso define o nome da máquina como “ad01”. Em seguida, edite o arquivo /etc/hosts
para associar o FQDN ao endereço IP da máquina:
$ sudo vi /etc/hosts
Adicione a linha:
192.168.0.10 ad01.domain.local ad01
Este comando vincula o FQDN ad01.domain.local
ao IP 192.168.0.10
. Verifique se a configuração está correta usando:
$ hostname -f
$ ping -c3 ad01.domain.local
Para evitar conflitos com o serviço DNS, desabilite o systemd-resolved
:
$ sudo systemctl disable --now systemd-resolved
$ sudo unlink /etc/resolv.conf
Depois, configure o DNS manualmente editando o arquivo /etc/resolv.conf
:
$ sudo vi /etc/resolv.conf
Adicione as seguintes linhas:
nameserver 192.168.0.10
search domain.local
Por fim, torne o arquivo imutável para evitar modificações acidentais:
$ sudo chattr +i /etc/resolv.conf
Instalação do Samba e Configuração do Kerberos
Agora, instale os pacotes necessários para configurar o Samba AD:
$ sudo apt-get update
$ sudo apt-get install acl attr samba samba-dsdb-modules samba-vfs-modules smbclient winbind libpam-winbind libnss-winbind libpam-krb5 krb5-config krb5-user dnsutils chrony net-tools
Durante a instalação, o sistema pedirá informações sobre o Kerberos. Utilize as seguintes configurações:
- Default Kerberos Verion 5 Realm: DOMAIN.LOCAL
- Kerberos Servers for your realm: ad01.domain.local
- Administrative server for your Kerberos realm: ad01.domain.local
Para ajustar a configuração do Kerberos, edite o arquivo /etc/pam.d/common-password
para alterar o minimum_uid
para 2000:
$ sudo vi /etc/pam.d/common-password
Adicione ou modifique a linha:
password [success=3 default=ignore] pam_krb5.so minimum_uid=2000
Em seguida, configure o arquivo /etc/krb5.conf
:
$ sudo vi /etc/krb5.conf
O conteúdo deve ser semelhante ao seguinte:
[libdefaults]
default_realm = DOMAIN.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = true
[realms]
DOMAIN.LOCAL = {
default_domain = domain.local
}
[domain_realm]
ad01 = DOMAIN.LOCAL
Provisionamento do Active Directory
Antes de provisionar o AD, desabilite os serviços do Samba que não serão utilizados:
$ sudo systemctl disable --now smbd nmbd winbind
Faça um backup do arquivo de configurações do Samba
$ sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
Agora, provisione o Active Directory:
$ sudo samba-tool domain provision
Durante o provisionamento, utilize as seguintes opções:
- On Realm prompte – <Enter>
- On Domian Promp – <Enter>
- On Server Roll – <Enter>
- On DNS Backend – <Enter>
- DNS Forwarding IP – 8.8.8.8 1.1.1.1
- Enter an Admin Password (informe a senha do administrador)
Configuração Final do Samba AD
Após o provisionamento, ajuste o arquivo /etc/samba/smb.conf
para incluir as seguintes configurações:
$ sudo vi /etc/samba/smb.conf
Adicione ou modifique as seguintes linhas:
[global]
dns forwarder = 8.8.8.8 1.1.1.1
netbios name = AD01
realm = DOMAIN.LOCAL
server role = active directory domain controller
workgroup = DOMAIN
vfs objects = dfs_samba4 acl_xattr
map acl inherit = Yes
inherit permissions = yes
inherit acls = yes
ldap server require strong auth = no
[sysvol]
path = /var/lib/samba/sysvol
read only = No
browseable = No
[netlogon]
path = /var/lib/samba/sysvol/domain.local/scripts
read only = No
browseable = No
Inicie o serviço do Samba AD:
$ sudo systemctl start samba-ad-dc
Verifique se o serviço do Samba AD está funcionando
$ sudo systemctl status samba-ad-dc
Sincronização de Hora com Chrony
Para garantir que a hora esteja sincronizada corretamente, ajuste o Chrony:
$ sudo chown root:_chrony /var/lib/samba/ntp_signd/
$ sudo chmod 750 /var/lib/samba/ntp_signd/
$ sudo vi /etc/chrony/chrony.conf
Adicione as seguintes linhas:
bindcmdaddress 192.168.0.10
ntpsigndsocket /var/lib/samba/ntp_signd
Verificação e Testes Finais do Samba AD
Por fim, verifique se o Active Directory está funcionando corretamente. Confira se o domínio e o servidor estão sendo encontrados:
$ host -t A domain.local
O retorno deve ser:
domain.local has address 192.168.0.10
Verifique se o servidor está sendo encontrado
$ host -t A ad01.domain.local
O retorno deve ser:
ad01.domain.local has address 192.168.0.10
Verifique o Kerberos:
$ host -t SRV _kerberos._udp.domain.local
O Retorno deve ser:
_kerberos._udp.domain.local has SRV record 0 100 88 ad01.domain.local.
Verifique o LDAP:
$ host -t SRV _ldap._tcp.domain.local
O retorno deve ser:
_ldap._tcp.domain.local has SRV record 0 100 389 ad01.domain.local.
Teste a autenticação do administrador:
$ kinit administrator@DOMAIN.LOCAL
Password for administrator@DOMAIN.LOCAL: (informe a senha)
$ klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: administrator@DOMAIN.LOCAL
Valid starting Expires Service principal
12/19/2023 08:55:56 12/19/2023 18:55:56 krbtgt/DOMAIN.LOCAL@DOMAIN.LOCAL
renew until 12/20/2023 08:55:52
Configure o arquivo /etc/nsswitch.conf
para incluir winbind
em passwd
e group
:
$ sudo vi /etc/nsswitch.conf
Ajuste:
passwd: files systemd winbind
group: files systemd winbind
Verifique se os usuários do domínio são reconhecidos:
$ getent passwd DOMAIN\\Administrator
O retorno deverá ser:
administrator:*:102500:102513::/home/DOMAIN/administrator:/bin/false
Verifique se os grupos do domínio estão sendo reconhecidos:
$ getent group "DOMAIN\\Domains Admins"
O retorno deverá ser:
domains admin:x:102512:
Se tudo estiver configurado corretamente, seu Samba AD estará operacional e pronto para ser gerenciado tanto pelo samba-tool
quanto pelas ferramentas RSAT em estações de trabalho participantes do domínio.
Se você tiver mais perguntas sobre Samba AD, sinta-se à vontade para entrar em contatos.
Referências