Como Instalar e Configurar o Samba 4.1.11

Pessoal nesse post irei mostrar o passo-a-passo da instalação e configuração do Samba 4.1.11 como controlador de domínio. A finalidade desse artigo é a compilação, instalação e configuração do Samba 4.1.11. O Samba é um software aberto que é capaz de gerir e compartilhar arquivos entre diferentes plataformas, como: Microsoft Windows, Linux e Mac. Para aqueles que não estão familiarizados com o Samba, segue abaixo uma breve descrição.

Descrição do SAMBA

O Samba é um conjunto de softwares de interoperabilidade entre diferentes sistemas operacionais criado por Andrew Tridgell. Ele provê compartilhamento de arquivos, impressoras e recursos de rede através dos protocolos SMB/CIFS. A partir da versão 4 do Samba ele também provê o serviço de active directory com igual ou maior eficiência que servidores baseados em sistemas operacionais da Microsoft.

Com o SAMBA, é possível construir domínios completos, fazer controle de acesso a nível de usuário, compartilhamento, montar um servidor WINS, servidor de domínio, impressão, etc. Na maioria dos casos o controle de acesso e exibição de diretórios no samba é mais minucioso e personalizável que no próprio Windows.

Descrição do Active Directory

Active Directory é uma implementação de serviço de diretório no protocolo LDAP, que por sua vez é um conjunto de Atributos sobre recursos e serviços existentes na rede, isso significa que é uma maneira de organizar e simplificar o acesso aos recursos de sua rede centralizando-os. Bem como, reforçar a segurança e dar proteção aos objetos da database contra intrusos, ou controlar acessos dos usuários internos da rede.

O Active Directory mantém dados como contas de usuários, impressoras,grupos,computadores, servidores,recursos de rede, etc. Ele pode ser totalmente escalonável, aumentando conforme a nossa necessidade.

Esse serviço de diretório, é composto por objetos, ou seja, todo recurso da nossa rede é representado como um objeto no AD. Esses objetos possuem propriedades o que são chamados de atributos dos objetos. A base de dados do AD é um arquivo chamado NTDS.dit, onde todos os recursos são armazenados no mesmo.

Protocolos Envolvidos

Os protocolos que fazem parte do Samba 4 são: DNS, LDAP, Kerberos, NTP, SBM/CIFS e o DHCP. Esse conjunto de protocolos são responsáveis por nos prover todos esses maravilhosos serviços através do Samba.

Descrição do Laboratório Utilizado

Para nosso ambiente de teste utilizamos uma VM no VirtualBox com 1 Gb de Ram, 1 core de um processador core 2 duo. Estamos utilizando o Ubuntu Server 14.04 com uma única partição. Se você não esta ambientado com o VitualBox acesse: Como Criar uma VM no VirtualBox.

Instalação Passo-a-Passo

Primeiramente iremos instalar algumas dependências do Samba, para isso execute o seguinte conteúdo em seu terminal:

# apt-get install build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls-dev libreadline-dev python-dev libpam0g-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev dnsutils libbsd-dev attr krb5-user docbook-xsl libcups2-dev acl

Depois de instalar as dependências é preciso realizar uma pequena mudança do sistema de aquivo, para o sistema suportar o namespace xattr  “user” e “system”. para isso acesse o fstab.

# pico /etc/fstab 

Localize a linha que monta a partição onde você vai disponibilizar os arquivos para compartilhamento, no meu caso como o sistema só tem a martição / a linha vai ficar assim:

UUID=d8d936be-e5a4-4048-bcb4-96dc429e5566 /               ext4    user_xattr,acl,barrier=1   1  1

Agora precisamos remontar a partição, execute:

# mount -o remount,rw /

Neste passo é importante testar o suporte a xattr, para isso execute os seguintes comandos como root:

# touch test.txt
# setfattr -n user.test -v test test.txt
# setfattr -n security.test -v test2 test.txt
# getfattr -d test.txt

Após executar o último comando você irá receber a seguinte saída:

# file: test.txt
user.test="test"

Não acabou ainda, vamos continuar os testes, execute:

# getfattr -n security.test -d test.txt

Você irá receber a seguinte saída:

# file: test.txt
security.test="test2"

Agora vamos testar o suporte a ACL estendido, execute:

# touch test.txt
# setfacl -m g:adm:rwx test.txt
# getfacl test.txt

Depois você irá receber o seguinte retorno:

# file: test.txt
# owner: root
# group: root
user::rw-
group::r--
group:adm:rwx
mask::rwx
other::r--

Pronto, se tudo deu certo até aqui significa que podemos continuar, agora iremos faxer o download do Samba 4.1.11 do site oficial do Samba e depois descompactar:

# cd /opt

Depois de baixar descompacte o arquivo e acesse o diretório criado:

# tar -zxvf samba-4.1.11.tar.gz && cd samba-4.1.11

Nesse passo iremos preparar os arquivos para compilação:

# ./configure --enable-debug --enable-selftest

Depois de concluído iremos compilar, esse passo vai demorar um bocado, então pode ir ao banheiro ou tomar um café:

# make

Agora vamos instalar:

# make install

Pronto, se você chegou até aqui seu samba já esta instalado e pronto para ser usado, iremos começar a configuração propriamente dita..

Configuração Passo-a-Passo

Iremos realizar o provisionamento de um novo domínio utilizando a ferramenta samba-tool, esse carinha vai criar o nosso Active Directory, ele também é capaz de gerenciar usuários e realizar o gerenciamento do samba. Para isso execute:

# /usr/local/samba/bin/samba-tool domain provision

Depois disso ele vai lhe perguntar o FQDN do Samba, aqui eu escolhi GUIADOTI.LOCAL. Em seguida ele vai perguntar o nome do domínio, você pode pressionar enter para ser o mesmo do FQDN. Depois é preciso encolher o modo de execução do Samba, como iremos utilizar o Active Directory iremos escolher o modo dc, que já é o padrão da configuração. No próximo passo iremos escolher o tipo de DNS do Samba, iremos utilizar o DNS interno do samba. Em seguida é preciso informar um DNS externo caso o DNS interno não consiga resolver algum nome, particularmente eu gosto de usar o DNS do Open Dns (208.67.222.222). E no próximo passo é preciso informar a senha do usuário administrator do Samba. Veja abaixo a saída do comando:

OBS: A senha deverá ter um nível de complexidade misturando letras maiúsculas, minúsculas, caracteres especiais (!@#$%) e números. Também deverá ter no mínimo 8 caracteres. Estou utilizando a senha P4ssW@rd

Realm: GUIADOTI.LOCAL
Domain [GUIADOTI]:
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
DNS forwarder IP address (write 'none' to disable forwarding) [192.168.0.1]: 208.67.222.222
Administrator password:
Retype password:

Veja também a imagem da saída. Ao final do processo, depois de confirmar sua senha o samba ira processar as informações e gerar o arquivo smb.conf, você deverá receber uma saída como essa:

O próximo passo e alterar as configurações do nosso resolv.conf para utilizar o DNS do Samba. Para isso acesse o arquivo e deixe ele da seguinte maneira:

# pico /etc/resolv.conf

domain GUIADOTI.LOCAL
nameserver 127.0.0.1

Depois iremos iniciar o daemon do Samba:

# /usr/local/samba/sbin/samba

Agora iremos testar essa essa configuração executando o seguinte comando:

# host -t SRV _ldap._tcp.guiadoti.local.

Você deverá receber uma saída parecida com essa:

_ldap._tcp.guiadoti.local has SRV record 0 100 389 ubuntu.guiadoti.local.

Verifique agora os compartilhamentos ativos, para isso execute:

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

A saída deverá ser a seguinte:

Agora iremos testar a autenticação no localhost na pasta netlogon utilizando o usuário administrator, e executar o comando ls para listar o conteúdo da pasta.

# /usr/local/samba/bin/smbclient //localhost/netlogon -UAdministrator%'P4ssW@rd' -c 'ls'

A saída deverá ser como a imagem:

Nesse passo iremos testar a autenticação do servidor Kerberos, execute o seguinte comando e informe a sua senha:

# kinit administrator@GUIADOTI.LOCAL

Você irá receber a seguinte saída:

Estamos quase acabando, agora iremos alterar as configurações do NTP, para isso acesse:

# pico /etc/ntp.conf

Apague todo o conteúdo e depois insira o conteúdo abaixo:

server a.ntp.br iburst prefer
server b.ntp.br iburst prefer
driftfile /var/lib/ntp/ntp.drift
logfile /var/log/ntp
ntpsigndsocket /usr/local/samba/var/lib/ntp_signd/
restrict default kod nomodify notrap nopeer mssntp
restrict 127.0.0.1
restrict a.ntp.br mask 255.255.255.255 nomodify notrap nopeer noquery
restrict b.ntp.br mask 255.255.255.255 nomodify notrap nopeer noquery

Estamos simplesmente configurando o servidor para sincronizar o horário com o servidor NTP.BR. Depois você pode executar o comando date e verificar se a hora está correta.

Pronto pessoal, o nosso servidor Samba já esta pronto para ser usado, agora é só adicionar as estações no domínio criado utilizando o usuario administrator. Lembrando que as estações devem estar configuradas para usar o DNS do servidor samba, senão você não vai conseguir colocar as máquinas no domínio. Você pode fazer isso automaticamente utilizando seu servidor DHCP, nos próximos posts irei abordar a instalação e configuração de um servidor DHCP. 

Pessoal é isso ai, espero que tenham curtido esse artigo, nos próximos posts irei mostrar como colocar máquinas de diferentes sistemas operacionais no domínio e explorar um pouco mais as configurações do Samba 4. Não esqueçam de curtir nossas páginas nas redes sociais, Facebook, G+ e seguir o Guia do Ti no Twitter. Compartilhem e comentem esse artigo, isso é muito importante para divulgação do nosso trabalho.

Ricardo Galossi
Siga me

Ricardo Galossi

É um apaixonado por segurança da informação, atua profissionalmente há mais de 7 anos na área de tecnologia da informação, onde é focado em análise de vulnerabilidades e testes de invasão.Criou o blog Guia do TI para compartilhar conhecimento, ajudar os mais novos, incentivar debates e manter a comunidade atualizada com as principais notícias da área de TI.
Ricardo Galossi
Siga me

Últimos posts por Ricardo Galossi (exibir todos)

Ricardo Galossi

É um apaixonado por segurança da informação, atua profissionalmente há mais de 7 anos na área de tecnologia da informação, onde é focado em análise de vulnerabilidades e testes de invasão. Criou o blog Guia do TI para compartilhar conhecimento, ajudar os mais novos, incentivar debates e manter a comunidade atualizada com as principais notícias da área de TI.

Deixe seu comentário