Samba 4 – Instalação e provisionamento

Instalação e provisionamento do SAMBA 4

Por Djavan Marques dos Santos

Na execução deste “LAB”, optei pelas placas em modo bridge o que torna possível o acesso remoto por SSH pelo host real. O gateway padrão é o roteador da minha rede local e a instalação do sistema foi realizada com os pacotes básicos, acrescentando apenas o servidor SSH para que pode-se configurar o Debian pelo PUTTY.

Cenário:

SAMBA 4 - Instalação e Provisionamento

Passo a passo:

1) Atualização do repositório e dos pacotes do sistema:

# apt-get update && apt-get upgrade

2) instalação das dependências:

  apt-get install acl attr autoconf bison build-essential \
  debhelper dnsutils docbook-xml docbook-xsl flex gdb krb5-user \
  libacl1-dev libaio-dev libattr1-dev libblkid-dev libbsd-dev \
  libcap-dev libcups2-dev libgnutls28-dev libjson-perl \
  libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl \
  libpopt-dev libreadline-dev perl perl-modules pkg-config \
  python-all-dev python-dev python-dnspython python-crypto \
  xsltproc zlib1g-dev libgpgme11-dev python-gpgme python-m2crypto libsystemd-dev

SAMBA 4 - Instalação e Provisionamento

Nesta parte basta seguir selecionando “OK” e pressionando “ENTER”, sem realizar qualquer alteração. Logo após a instalação das dependências, baixaremos o SAMBA em sua versão estável mais recente o que pode ser verificado no endereço: https://download.samba.org/pub/samba/stable/ 

3) Baixando, descompactando e compilando o SAMBA 4:

# wget https://download.samba.org/pub/samba/stable/samba-4.6.5.tar.gz
# tar -zxvf samba-4.6.5.tar.gz
# cd samba-4.6.5
# ./configure --enable-debug --enable-selftest

Se tudo ocorrer sem problemas será exibida uma mensagem de sucesso e a partir deste ponto é só compilar e instalar o SAMBA.

Baixar, descompactar e compilar o SAMBA 4

# make

Compilar e instalar o SAMBA 4

Obs:  A execução do comando “make” é um pouco demorada, sendo este o único inconveniente. Tenha um pouco de paciência.

# make install

Baixando, descompactando e compilando o SAMBA 4

4) Configurações importantes:

             Algumas configurações adicionais são necessárias a fim de garantir o correto funcionamento do servidor. Os arquivos “/etc/resolv.conf/” e o “/etc/hosts/” devem estar de acordo com o domínio a ser criado, bem como o IP do servidor deve ser fixo já que este será o DNS da rede local.

# vim /etc/hosts

SAMBA 4 no Debian

# vim /etc/resolv.conf

Arquivo resolv.conf no SAMBA 4

Após configurar e salvar o “/etc/resolv.conf” execute o comando “chattr +i” para garantir que o arquivo não seja modificado pelo sistema.

# chattr +i /etc/resolv.conf

            A configuração destes 2 (dois) arquivos nos auxilia no provisionamento do servidor. estando os arquivos corretamente configurados antes de se elevar o SAMBA a AD, quando da configuração do serviço  o domínio já estará definido.

 5) Provisionando o SAMBA 4:

                       Antes do provisionamento do SAMBA 4 como AD é uma boa prática listarmos tudo que for pertinente a consecução do domínio, seria algo como um checklist a fim de garantir os parâmetros corretos de configuração. Veja os dados na tabela a seguir:

Checklist SAMBA 4
Servidor Controlador de domínio e Active Directory 
DNS Samba Internal ( x ) – BIND (  ) – BIND DLZ (  )
IP do Servidor Fixo ( x ) IP:172.16.0.200/24 – Obs. deve ser feito antes de subir o domínio.
Qtde. Controladores de Domínio 1 (um)
Domínio BOSON.AULA.NET
DNS Resolver – Forwarding 172.16.0.1/24 Obs. neste caso esse é o IP do meu roteador.
DHCP Server Não

Em relação ao provisionamento do servidor, se o samba-tool não estiver declarado na variável PATH é necessário digitar o caminho absoluto “/usr/local/samba/bin/samba-tool” para poder utilizar os recursos da ferramenta.

# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive

Onde:

  • domain provision = para elevar o SAMBA a controlador de domínio;
  • –use-rfc2307 = ativa o Network Information Server (NIS);
  • –interactive = Modo interativo que permite realizar as configurações do domínio.

Vamos aos passos necessários:

  1. Realm [BOSON.AULA.NET] : Se o “/etc/hosts” e o “/etc/resolv.conf” estiverem definidos basta pressionar ENTER, caso não estejam configurados digite o nome do domínio desejado. Em nosso caso “BOSON.AULA.NET”;
  2. Domain : [BOSON] : “pressione enter”;
  3. Server Role (dc, manber, standalone,) [dc] : Como utilizaremos nosso SAMBA como DC basta pressionar ENTER;
  4. DNS backend (SAMBA_INTERNAL, BIND9, BIND9_DLZ) [SAMBA_INTERNAL] : O DNS que iremos escolher o SAMBA_INTERNAL que é o padrão da instalação, bastando pressionar “ENTER”;
  5. DNS forwarder IP address (write ‘none’ to disable forwarding) [172.16.0.200] : Neste caso é mostrado como IP de encaminhamento o definido no “/etc/resolv.conf/” se os arquivos não estiverem configurados, o DNS que ira ser definido para encaminhamento será o primário configurado em seu roteador. E comum a utilização do DNS do Google para está tarefa, mas, em nosso cenário setaremos o nosso gateway como encaminhador “172.16.0.1’;
  6. Administrator password: Definição da senha de administrador deve conter “letras, números e caracteres especiais” para que não aja erro no processo de provisionamento;
  7. Retype password: Repita a senha digitada anteriormente.

Senha do SAMBA 4

Após as configurações realizadas o servidor será elevado a controlador de domínio. Vide imagem abaixo:

SAMBA como controlador de domínio

6) Script de inicialização

Crie o arquivo “/etc/systemd/system/samba4.service” e adicione o conteúdo .service abaixo, para que o Unit baseado no systemd seja integrado ao servidor, possibilitando assim, o controle dos processos relativos aos serviços, bem como na inicialização do sistema o SAMBA possa subir automaticamente.

# vim /etc/systemd/system/samba4.service

Configure o arquivo com segue:

[Unit]
Description=Samba Active Directory Domain Controller
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/local/samba/sbin/samba -D
PIDFile=/usr/local/samba/var/run/samba.pid
[Install]
WantedBy=multi-user.target

Após criar o arquivo e adicionar o conteúdo, execute os comandos abaixo:

# systemctl daemon-reload
# systemctl enable samba4.service

Verificando se daemon encontra-se “enable”

# systemctl is-enabled samba4.service

Habilitando o serviço do SAMBA 4

Seguido estes passos o serviço já pode ser inicializado e verificado adequadamente.

# systemctl start samba4.service

Com o “systemctl” é possível a utilização das opções (stop, restart e status).

# systemctl status samba4.service -l

Serviço do SAMBA rodando no Linux

7) Testes:

 Verificando a versão do SAMBA instalado:

# /usr/local/samba/bin/smbclient --version

Pastas compartilhadas:

# /usr/local/samba/bin/smbclient -L localhost -U%

Testando o servidor SAMBA 4 no Linux

Verificação do usuário Administrador:

# /usr/local/samba/bin/smbclient //localhost/netlogon -Uadministrator%'Senha Cadastrada'

Usuário administrador no SAMBA 4 no Linux

Digite “exit” para voltar ao shell bash

LDAP

host -t SRV _ldap._tcp.BOSON.AULA.NET

Configurar LDAP no Samba 4  - Linux

KERBEROS

host -t SRV _kerberos._udp.BOSON.AULA.NET

Kerberos no SAMBA 4 no Linux

DNS

host -t A Debian.BOSON.AULA.NET

DNS no SAMBA 4 no Linux

KERBEROS.CONF

# cat /usr/local/samba/private/krb5.conf

Arquivo kerberos.conf no SAMBA 4 no Linux

KINIT

# kinit administrator@BOSON.AULA.NET

Arquivo KInit no SAMBA 4 no Linux

Com a instalação e o provisionamento concluída e sem apresentar erros, devemos instalar o serviço para sincronização de hora (NTP), e configurá-lo para que possamos utilizá-lo no ajuste das máquinas que integram o domínio.

Não é obrigatório a instalação do servidor “NTP” para o funcionamento do SAMBA, mas é uma boa prática sincronizar os hosts que pertencem ao domínio. O Kerberos requer “carimbos” de hora exatos para poder prevenir ataques de repetição bem como o AD utiliza a sincronização para evita replicação.

O AD admite um desvio padrão de até 5 minutos para mais ou para menos, caso haja uma diferença maior que esse padrão o acesso é negado, resultando no não acesso aos diretórios e compartilhamentos.

8) Instalação e configuração do NTP server

Execute os comandos a seguir para instalar o serviço de  NTP no servidor:

# apt-get install ntp
# cp /etc/ntp.conf /etc/ntp.conf.BK

Feita a cópia do arquivo /etc/ntp.conf devemos realizar algumas configurações, apague o conteúdo do ntp.conf e substitua pelo conteúdo abaixo:

# Local clock. Note that is not the "localhost" address!
server 127.127.1.0
fudge  127.127.1.0 stratum 10
# Where to retrieve the time from
server 0.pool.ntp.org     iburst prefer
server 1.pool.ntp.org     iburst prefer
server 2.pool.ntp.org     iburst prefer
driftfile               /var/lib/ntp/ntp.drift
logfile                /var/log/ntp
ntpsigndsocket  /usr/local/samba/var/lib/ntp_signd/
# Access control
# Default restriction: Allow clients only to query the time
restrict default kod nomodify notrap nopeer mssntp
# No restrictions for "localhost"
restrict 127.0.0.1
# Enable the time sources to only provide time to this host
restrict 0.pool.ntp.org   mask 255.255.255.255    nomodify notrap nopeer noquery
restrict 1.pool.ntp.org   mask 255.255.255.255    nomodify notrap nopeer noquery
restrict 2.pool.ntp.org   mask 255.255.255.255    nomodify notrap nopeer noquery

Obs: verifique se o diretório “/usr/local/samba/var/lib/ntp_signd/” existe. Em caso negativo, deve ser criado e fornecidas as devidas permissões. Outro ponto importante diz respeito aos arquivos “/var/lib/ntp/ntp.drift” e “var/log/ntp” – caso não tenham sido criados pela instalação você irá criá-los.

Criação do diretório “ntp_singd”:

# mkdir /usr/local/samba/var/lib/ntp_signd

Ajuste de Permissões:

# chown root:ntp /usr/local/samba/var/lib/ntp_signd
# chmod 750 /usr/local/samba/var/lib/ntp_signd

Criação dos arquivos “/var/lib/ntp/ntp.drift” e “/var/log/ntp”

# touch /var/lib/ntp/ntp.drift
# touch /var/log/ntp

Após as configurações do servidor NTP serem devidamente realizadas, devemos reiniciar o serviço de horas para que ele possa funcionar conforme configurado.

# systemctl restart ntp.service

Processo finalizado com sucesso.

Anterior: SAMBA 4 como Controlador de Domínio

Sobre Djavan Marques dos Santos (5 Artigos)
Djavan Marques dos Santos é Tecnólogo em Rede de computadores; Pós-Graduado (lato sensu) em Segurança de Redes de Computadores; e atua como Gerente de Infraestrutura e redes na Polícia Militar da Paraíba.

16 Comentários em Samba 4 – Instalação e provisionamento

  1. Antonio dos Santos // 24/07/2017 em 8:08 // Responder

    Parabéns pelo post, aqui conseguir ir ate o passo 7, agora não esta navegando na net e com isso não consigo instalar o NTP Server, acredito que seja alguma configuração que em relação a DNS.
    Poderia me orientar?

    • Djavan Marques Masculino Santos // 31/07/2017 em 23:26 // Responder

      A interface de rede do Virtualbox foi definida em nodo bridge, logo a rede será em caminhada para a internet pelo seu roteador local. Verifique se no provisionamento o DNS definido como forwarding foi o IP do seu roteador ou provedor de serviço, o DNS do SAMBA só resolver a rede LAN fora dela cabe ao encaminhamento.

      • Antonio dos Santos // 03/08/2017 em 11:45 // Responder

        Refiz as configurações e coloquei o forwarding com o IP do meu roteador.
        Esta funcionando perfeitamente.
        Agora estou configurando os compartilhamento e o perfil móvel.
        Você tem ou vai fazer um posto sobre compartilhamento e o perfil móvel?

        Mais uma vez, parabéns pelo posto e muito obrigado

  2. Fui até o comando “/usr/local/samba/bin/smbclient //localhost/netlogon -Uadministrator%’Senha Cadastrada'” e recebo a seguinte mensagem:
    session setup failed: NT_STATUS_LOGON_FAILURE.
    Não sei o que fiz de errado a unica coisa que alterei foi o nome, todo momento que pedia para colocar debian.boson.aula.net eu colocava o do meu TCC cube.nex.

    • Antonio dos Santos // 31/07/2017 em 11:28 // Responder

      /usr/local/samba/bin/smbclient //localhost/netlogon -Uadministrator%sua_senha,
      Lembrando que a senha tem que ter letras(maiúscula e minuscula), simbolo e números.

    • Djavan Marques Masculino Santos // 31/07/2017 em 23:40 // Responder

      Deve haver algum erro de escrita no comando, tente o trecho abaixo:

      /usr/local/samba/bin/smbclient //localhost/netlogon -UAdministrator%’Senha123@’

      • fui tentar hoje novamente:
        # systemctl samba4.service
        Unknown operation samba4.service.

        que irritante isso.

  3. Parabéns, sempre bom ter esses tutoriais com o Samba.

  4. Antonio dos Santos // 05/09/2017 em 17:13 // Responder

    Tenho mais uma duvida, apos a instalação e configuração, incluindo os usuarios e grupos e configurando os compartilhamentos.
    Posso alterar o nome do do servidor?
    No caso de debian para servidor?

  5. José Nilton // 20/11/2017 em 18:57 // Responder

    Gostaria de entender porque você fez a compilação em vez de usar o apt-get install. Existe alguma necessidade específica para tal?

  6. Diego Silva // 16/05/2019 em 12:09 // Responder

    Fiz todos os passos descritos porém ao dar o comando service –status-all

    O samba-ad-dc não está habilitado (-)

    Já tentei os comandos pra iniciar o serviço, unmask e nada.

  7. provavelmente funcionava quando postado em 02/07/2017, mas estamos em 2020 e sem previsao para atualizacao, mesmo assim serviu como experiencia, aguardamos respostas se possivel obg

  8. Olá fábio gostei muito do manual de instalação e configuração do samba 4 assim como outros tutoriais que você publicou , porém estou com uma grande dúvida e não encontrei nenhuma resposta concreta sobre.
    Eu gostaria de saber qual a diferença e qual a melhor opção de instalar o samba assim como outros serviços no servidor, se pelo apt ou compilando?

    • Djavan Marques dos Santos // 19/11/2020 em 11:15 // Responder

      Nobre! A resposta para a sua pergunta depende da necessidade, no caso especifico do SAMBA as atualizações do Debian são lentas, o ciclo de atualizações das versões é de um ano e seis meses, se esperar para atualizar pelo repositório certamente correra alguns riscos principalmente de segurança. Nesse caso entendo que compilar é melhor e a cada 6 meses atualizar a versão compilada para a corrente. VIDE: https://wiki.samba.org/index.php/Samba_Release_Planning

  9. Marco Buzato // 06/10/2021 em 19:05 // Responder

    Boa noite. Estou com um problema e acredito que seu post sirva direitinho, mas gostaria de saber o seguinte:
    1) Essas configurações ainda estão funcionando?
    2) Se eu quiser deixar o samba como servidor dhcp, onde configuro isso?
    3) Se eu quiser montar um servidor de arquivos nessa mesma maquina, como faço?

Escreva um comentário

Seu e-mail não será divulgado


*