Samba 4 Configurado para reportar a diferentes redes

Introdução

Recentemente, implementei o Samba 4 para um cliente que deu um pouco de trabalho, pois a infraestrutura contava com redes com várias subnets.Analisando a documentação oficial (SambaWiki), eu verifiquei que o próprio Samba roda um DNS interno. Porém, os computadores que precisavam ingressar no AD, fazem parte de redes diferentes e a configuração com o DNS interno não permitia fazer a comunicação dos computadores com o DC.

Para resolver esse problema, foi necessário encaminhar as requisições de resolução de nomes para o DNS principal da rede.

A imagem abaixo, mostra a infraestrutura básica para implementar o Samba 4:

Linux: Samba 4 - Configurado para reportar-se a diferentes redes

Observando a figura, temos duas redes neste cenário:

1. A rede 192.167.10.0, onde encontra-se o DNS principal da rede e outros hosts (podendo ser clientes do Samba).
2. E a rede 192.167.0.0, onde ficará o servidor Samba e outros hosts (podendo ser clientes do Samba).

Para esse nosso teste, os hosts do cenário tem os seguintes IPs:

  • DNS Principal = 192.167.10.51
  • Samba AD DC = 192.167.0.251 (este host está com o nome samba-4)

O objetivo principal deste artigo, é fazer o Samba reportar-se a diferentes redes. Portanto, não será demonstrado como ingressar um computador no domínio. Poderá ser um tópico para outra ocasião.

Para evitar problemas de bloqueio, eu desabilitei o Firewall do servidor do Samba 4 e as políticas de SELinux.

Os testes executados neste artigo foram realizados com a distribuição CentOS 6.4.

Instalação do Samba 4

Com a instalação mínima do CentOS 6.4, executar os seguintes comandos:# yum install gcc libacl-devel libblkid-devel gnutls-devel readline-devel python-devel gdb pkgconfig krb5-workstation zlib-devel setroubleshoot-server libaio-devel setroubleshoot-plugins policycoreutils-python libsemanage-python setools-libs-python setools-libs popt-devel libpcap-devel sqlite-devel libidn-devel libxml2-devel libacl-devel libsepol-devel libattr-devel keyutils-libs-devel cyrus-sasl-devel cups-devel bind-utils bind wget -y

Incluir as opções acl e user_xattr no arquivo “/etc/fstab” na partição onde está o diretório “/usr”. Estas opções devem ser acrescentadas após a opção defaults.

Seu arquivo “/etc/fstab”, deverá ficar parecido com a linha abaixo:

/dev/mapper/VolGroup-lv_root /    ext4    defaults,acl,user_xattr    1 1

Para esse teste, o “/usr” estava na partição /. Antes de compilarmos o Samba, precisamos remontar o sistema de arquivos:

# mount -o remount /

Para verificar se o sistema está montado com as opções acl e user_xattr, execute:

# mount | grep acl

Deve retornar algo, como:

/dev/mapper/VolGroup-lv_root on / type ext4 (rw,acl,user_xattr)

Para uma lista completa dos requisitos do Samba 4, acesse:

Baixar a última versão estável do Samba 4:

# cd /usr/src/
# wget
 http://www.samba.org/samba/ftp/stable/samba-4.0.9.tar.gz
# tar xf samba-4.0.9.tar.gz

Compilar o Samba 4:

# ./configure
# make
# make install

Se você desejar exportar para a variável PATH, os diretórios utilizados pelo Samba (o que é aconselhável), digite os seguintes comandos:

# echo “export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/local/samba/sbin:/usr/local/samba/bin” >> /root/.bashrc
# source /root/.bashrc

Samba 4 instalado. Hora de fazer as configurações básicas antes de configurarmos o AD DC.

Dois arquivos importantes que devem ser editados são: “/etc/hosts” e “/etc/resolv.conf”.

Nesse nosso teste, o nome do host será samba-4 e o nome do domínio testesamba.com.br.

O arquivo “/etc/hosts” deverá ficar da seguinte forma:

127.0.0.1          localhost
127.0.0.1          samba-4.testesamba.com.br samba-4
192.167.0.251  samba-4.testesamba.com.br samba-4

O IP 192.167.0.251 é o IP escolhido para o servidor que irá rodar o Samba 4.

Já o arquivo “/etc/resolv.conf”, deverá ficar da seguinte forma:

search testesamba.com.br
nameserver 192.167.10.51

Iremos utilizar o DNS BIND no servidor do Samba 4, que irá encaminhar a resolução de nomes para o servidor DNS externo (principal DNS de toda a rede).

Observe que no arquivo “/etc/resolv.conf”, o nosso servidor de nomes está configurado com o IP do servidor DNS externo. Essa configuração é mais utilizada para redes que possuem várias sub-redes e também vários domínios, mas o Samba precisa reportar-se a todas as redes.

Configuração

Vamos configurar o domínio para o Samba 4:Execute:

# samba-tool domain provision

Responda às opções:

  • Realm: TESTESAMBA.COM.BR
  • Domain [TESTESAMBA]: Tecle Enter
  • Server Role (dc, member, standalone) [dc]: Tecle Enter
  • DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ
  • Administrator password: Digite a senha do admin do Samba
  • Retype password: Repetir a senha

E aguarde a configuração terminar.

Com essa configuração, o Samba 4 irá solicitar a resolução de nomes para o servidor BIND, rodando em seu próprio servidor, e o BIND irá encaminhar as requisições para o servidor principal da rede (essa configuração será realizada a seguir).

Ao final da execução do comando anterior, veremos as seguintes informações:

 Once the above files are installed, your Samba4 server will be ready to use
 Server Role:       active directory domain controller
 Hostname:          SAMBA-4
 NetBIOS Domain:    TESTESAMBA
 DNS Domain:        testesamba.com.br
 DOMAIN SID:        S-1-5-21-1472350804-1383287446-2542997206

Configuramos o arquivo “/etc/named.conf”, incluindo na seção options o seguinte conteúdo:

forwarders {192.167.10.51;};

…que é o IP do servidor DNS principal da rede.

Até aqui, as configurações foram realizadas no no próprio servidor do Samba. Agora, precisamos fazer algumas configurações no servidor DNS principal.

No arquivo “/etc/named.conf”, devemos incluir a zona do domínio do Samba:

zone “testesamba.com.br” {
type master;
file “data/samba-4.db”;
};

Observe que informamos que o arquivo de configuração da zona testesamba.com.br é samba-4.db, que criaremos dentro do diretório “/var/named/data/”.

Este arquivo deverá ter o seguinte conteúdo:

$TTL    86400
$ORIGIN testesamba.com.br.
@               IN SOA  localhost.     root.testesamba.com.br. (
2013300777      ; serial
3H              ; refresh
15M             ; retry
1W              ; expiry
1D )            ; minimum
@                       IN NS          samba-4
samba-4         IN A            192.167.0.251
_kerberos._tcp.testesamba.com.br.      IN      SRV     0 100 88 samba-4
_ldap._tcp.testesamba.com.br.          IN      SRV     0 100 389 samba-4
_kpasswd._udp.testesamba.com.br.       IN      SRV     0 0 464 samba-4

Devemos também, incluir o servidor do Samba na zona reversa do DNS. O arquivo da configuração da zona reversa do meu servidor é “/var/named/rev/0.167.192.db”:

251     IN      PTR     samba-4.testesamba.com.br.

Reinicie o serviço do BIND no servidor DNS principal e também no servidor do Samba:

# service named start

Tudo certo com o DNS. Agora, podemos iniciar o Samba e fazer alguns testes (voltar a executar os comandos no servidor do Samba, pois as configurações no DNS principal terminaram).

Execute:

# samba

Pode usar o comando ps aux | grep samba, para verificar se os processos estão em execução.

Agora executamos os seguintes comandos, para verificar o funcionamento do Samba.

Para listar os compartilhamentos do Samba:

# smbclient -L localhost -U%

Domain=[TESTESAMBA] OS=[Unix] Server=[Samba 4.0.9]

 Sharename       Type      Comment
 ---------       ----      -------
 netlogon        Disk
 sysvol          Disk
 IPC$            IPC       IPC Service (Samba 4.0.9)
Domain=[TESTESAMBA] OS=[Unix] Server=[Samba 4.0.9]

 Server               Comment
 ---------            -------

 Workgroup            Master
 ---------            -------

Para testar a autenticação no compartilhamento netlogon do Samba:

# smbclient //samba-4.testesamba.com.br/netlogon -UAdministrator%’p@ssw0rd’ -c ‘ls’

Domain=[TESTESAMBA] OS=[Unix] Server=[Samba 4.0.9]

  .                            D        0  Wed Sep  4 15:36:58 2013
  ..                           D        0  Wed Sep  4 15:37:35 2013

   52726 blocks of size 131072. 38573 blocks available

Para checar as configurações do arquivo “smb.conf”:

# testparm

Após os testes, podemos continuar com a configuração do domínio.

Vamos ajustar a configuração do Kerberos. Renomeie o arquivo padrão de configuração:

# mv /etc/krb5.conf /etc/krb5.conf.old

Copie o arquivo criado pelo Samba para o nosso domínio:

# ln -s /usr/local/samba/private/krb5.conf /etc/

O arquivo “krb5.conf” deve ter o seguinte conteúdo:

[libdefaults]
default_realm = TESTESAMBA.COM.BR
dns_lookup_realm = false
dns_lookup_kdc = true

Iniciamos um ticket do Kerberos para o usuário Administrator:

# kinit [email protected]

Password for [email protected]:
Warning: Your password will expire in 41 days on Wed Oct 16 16:05:41 2013

Para verificarmos o ticket gerado:

# klist

Ticket cache: FILE:/tmp/krb5cc_0
Default principal: [email protected]

Valid starting     Expires            Service principal
09/04/13 16:11:36  09/05/13 02:11:36  krbtgt/[email protected]
 renew until 09/05/13 16:11:32

Para testar a autenticação no Samba utilizando Kerberos, executamos:

# smbclient -k //samba-4.testesamba.com.br/netlogon -c ‘ls’

Domain=[TESTESAMBA] OS=[Unix] Server=[Samba 4.0.9]
  .                                   D        0  Wed Sep  4 16:05:22 2013
  ..                                  D        0  Wed Sep  4 16:05:50 2013

  52726 blocks of size 131072. 38572 blocks available

Para testar se o DNS está funcionando corretamente, execute o seguinte comando:

Obs.: o comando abaixo, realiza o teste para uma consulta ao serviço LDAP.

# host -t SRV _ldap._tcp.testesamba.com.br.

_ldap._tcp.testesamba.com.br has SRV record 0 100 389 samba-4.testesamba.com.br.

Se o resultado do comando acima for diferente, por exemplo, conter no final: not found: 3(NXDOMAIN), alguma coisa errada tem com o DNS, tanto no servidor do Samba 4, como também no servidor DNS principal.

Com isso, você já pode ingressar com os computadores de outras sub-redes no servidor do Samba 4, pois as requisições de resolução de nome para o Samba serão encaminhadas por um servidor DNS central, que irá fazer o tratamento correto.

Rolar para cima