Artigos, Instalação e Configuração, Samba4

Instalação e Configuração do Samba4


Em janeiro de 2006 foi lançando a primeira versão beta do samba4. Mesmo antes desta data várias informações já eram dadas sobre as características do novo “servidor de arquivo”. Uma das informações que mais chama a nossa atenção era sobre a integração do SAMBA com o AD.
Agora com a versão ALPHA 9 já podemos testar e verificar as principais características do SAMBA4.

Softwares utilizados:

• Linux: Slackware 12.2 – Current Version
ftp://ftp.slackware.no/pub/linux/ISO-images/slackware/13.0/

• PhpLDAPadmin 1.1.0.7
http://phpldapadmin.sourceforge.net/

• Samba 4 Alpha9
Via Git: “git clone git://git.samba.org/samba.git samba-master; cd samba-master && git checkout -b master origin/master; cd ..”

• Heimdal Kerberos
http://www.h5l.org/dist/src/heimdal-1.2.1.tar.gz

• Bind 9
ftp://ftp.isc.org/isc/bind9/9.5.2/bind-9.5.2.tar.gz

Dependências de Outros softwares para o perfeito funcionamento

Para o perfeito funcionamento do Samba4 depois vários testes foi visto que o DNS é um dos requisito primordiais para seu funcionamento adequado e reconhecimento de algumas diretivas impostas pelo samba4, para isso recopilaremos o BIND com suporte a Heimdal Kerberos, existem duas implementações de código aberto do Kerberos: Heimdal e MIT Kerberos. Heimdal é uma implementação do protocolo Kerberos implementada pela KTH (Royal Institute of Technology, em Estocolmo), enquanto MIT Kerberos é fornecido pelo MIT (Massachussets Institute of Technology), como diz seu nome.
Autenticação Kerberos é um protocolo de rede. Foi concebido para fornecer autenticação forte para o cliente/servidores de aplicativos usando criptografia de chaves secretas, então um cliente pode provar a sua identidade para um servidor (e vice-versa) em uma conexão de rede insegura.
Em nosso caso utilizaremos BIND com suporte ao Heimdal Kerberos por causa do GSS-TSIG algoritmo de serviço de segurança genérico para autenticação de transação com chave secreta de DNS (GSS-TSIG) este mecanismo é utilizado para estabelecer relações TSIG para autenticação do tipo Kerberos, necessário para interagir BIND com Samba4, com essas credenciais o DNS aceita atualizações GSS-TSIG assinadas e verifica as credenciais de correspondentes com as credencias cadastradas no Samba4, isso permite aos usuários descarregar o DNS dos usuários do Microsoft Windows sem ter a segurança comprometida.

Compilação e Instalação

Começaremos pelo Heimdal:

#tar –zxvf heimdal-1.2.1.tar.gz
#cd heimdal-1.2.1
#./configure –prefix=/usr –libdir=/usr/lib \
–sysconfdir=/etc –localstatedir=/var \
–mandir=/usr/man –with-openssl=/usr –bindir=/usr/bin/ \
–sbindir=/usr/sbin/ –enable-kcm
#make && make install

Criaremos o usuário e o grupo responsável pelo Bind, e efetuaremos a compilação:

# groupadd named && useradd named –g named
#tar –zxvf bind-9.5.2.tar.gz
#cd bind-9.5.2
#./configure –prefix=/usr –libdir=/usr/lib \
–sysconfdir=/etc –localstatedir=/var –with-libtool \
–mandir=/usr/man –enable-shared –disable-static \
–enable-threads –with-openssl=/usr –with-gssapi=/usr/include/gssapi –bindir=/usr/bin/ –sbindir=/usr/sbin/
#make && make install

Adicione seu host em “/etc/hosts”, para ajudar na resolução de nomes, em meu caso ficou deste modo:

#vi /etc/hosts

127.0.0.1                         localhost

192.168.11.1                   dtux.org dtux

Testando o funcionamento do Bind:

#named –u named -g
25-Sep-2009 11:00:21.348 zone dtux.org/IN: loaded serial 2009091112
25-Sep-2009 11:00:21.350 running
25-Sep-2009 11:00:21.350 zone dtux.org/IN: sending notifies (serial 2009091112)

Compilação

Após fazer o download, foi criado um diretório chamando samba-master. Os fontes do SAMBA4 ficaram dentro do diretório source4, criaremos um link simbólico apontando para source.

# cd samba-master/
# ln –s source4 source
# cd source
#./autogen.sh
#./configure –prefix=/usr/local/samba –sysconfdir=/etc/ –localstatedir=/var –mandir=/usr/man/ –enable-fhs –enable-debug –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/lib –enable-developer
# make && make install

Após a instalação rode o utilitário provision para a criação do domínio e do usuário administrator e sua respectiva senha:

#./setup/provision –realm=DTUX.ORG –domain=DTUX –admin=anna –server-role=’domain controller’

O parâmetro “–realm” é para definir o domínio do servidor Kerberos e o “domain” para o domínio SAMBA.
O SAMBA4 trás embutido os protocolos:

DNS – ( Bind )
SMB-( Samba 3 )
LDAP( OpenLdap )
KERBEROS( Heimdal )
MS-RPC – ( GPO )

Credenciais Utilizando base SamDB

… que são responsáveis pela autenticação Active Directory.

O diretório “/usr/local/samba” é gerado pela compilação do SAMBA e tem os seguintes subdiretórios:

  • /usr/bin: Programas para gerenciamento do samba, tais como smbstatus, net, etc.
  • /usr/sbin: Programa responsável por inicializar o samba.
  • /etc/samba: Neste diretório fica o arquivo de configuração smb.conf
  • /usr/lib: Todas as libs compiladas do samba
  • /var/lib/samba/private: Exemplos de arquivos de configuração

Configuração do Bind

Após a instalação, configuramos o servidor DNS para trabalhar juntamente com o KERBEROS e KERBERO com BIND. Utilize os arquivos exemplos gerados pelo próprio SAMBA que estão dentro do diretório “/var/lib/samba/private”. Edite o arquivo “/etc/named/named.conf” adicione as seguintes linhas:

#vi /etc/named/named.conf

Na sessão “option{}” adicione as linhas que irão fazer a comunicação ente o Keberos e o Bind:

options{
directory “/var/named”;
tkey-gssapi-credential “DNS/dtux.org”;
tkey-domain “DTUX.ORG”;
}

Depois de configurado a sessão “options” incluiremos o arquivo “named.conf” do Samba4 no Bind, abaixo da sessão “options” adicione:

options{
directory “/var/named”;
tkey-gssapi-credential “DNS/dtux.org”;
tkey-domain “DTUX.ORG”;
}
include “/var/lib/samba/private/named.conf”;

Nesse arquivo está a configuração a zona configurada pelo Samba4 quando foi utilizado o utilitário “provision”. Antes de testar o funcionamento do Bind, temos que setar as variáveis de localização do arquivo “dns.keytab”, que é onde estão as informações de DNS registradas pelo Samba4:

# KEYTAB_FILE=“/var/lib/samba/private/dns.keytab”
# export KRB5_KTNAME=“/var/lib/samba/private/dns.keytab”

Para não termos que ficar digitando essas linhas a todo o momento coloquemos elas no inicio do arquivo “/etc/rc.d/rc.bind”, responsável pela inicialização do daemon do named.

#killall -9 named
#named –u named
#ps ax |grep named
4450 ? Ssl 0:00 named -u named
4455 pts/3 R+ 0:00 grep named

Pronto seu Bind já estará rodando e trocando informações com o Samba4, vamos fazer um teste para verificar se seu funcionamento está ok, utilizaremos a ferramenta “nsloockup”:

dns

Caso você queira configurar um DNS reverso para o IP de seu samba fica a seu critério.
Também copiaremos o arquivo “krb5.conf” que está em “/var/lib/samba/private/“ para o diretório “/etc/”.
Por utilizar o Kerberos, é necessário que todas as máquinas envolvidas estejam com os mesmos horários (segundos).Para isso nada melhor do que setar o Samba para ser o nosso time server, adicione ao “/etc/samba/smb.conf” na sessão “[globlas] “time server = yes”, nos cliente é só setar “net time \dtux.org /set /Yes”, que o horário ficará sincronizado o com o do servidor.
Acerte o sistema de arquivo para trabalhar com o “xattr” alterando o arquivo “/etc/fstab”.


/dev/sda1 ext3 defaults,user_xattr     0       1

Remonte o sistema para ativar as alterações.

# mount -o remount,rw /

Para testar, criemos alguns compartilhamentos. Para isso edite o arquivo “smb.conf” que está dentro do diretório “/etc/samba/”.

[profiles]
comment = Profiles Remotos
path = /home/profiles
read only = no
browseable = no

O compartilhamento “Profiles” indica a localização dos profiles dos usuários nesse caso se tratando de uma configuração para “Perfil Móvel(Roaming Profile)”

Agora testaremos alguns serviços e verificar se estão todos funcionais.

Iniciando do Samba

#samba -i -M single

Iniciando o Samba em modo debug:

#samba -i -M single –d3

Inicialização do Bind:

#/etc/rc.d/rc.bind start

Pronto com isso no servidor já está no ar com DNS funcionado, vamos a alguns testes:

Samba4

Autentique algum usuário do Samba4 com:

# smbclient //dtux.org/profiles -Uadministrator%anna
smb: \> dir
. D                       0                                      Wed Sep 23 11:31:36 2009
.. D                     0                                      Tue Sep 22 17:26:38 2009
Admin           D                         0            Tue Sep 22 15:28:02 2009
alexandro   D                         0            Tue Sep 22 17:19:31 2009
diego              D                         0           Mon Sep 21 16:42:47 2009
nazir               D                         0           Wed Sep 23 11:31:36 2009
danilo            D                         0           Tue Sep 22 12:04:42 2009

Kerberos

Autentique algum usuário do Samba4 com e ofereça a senha quando pedido:

#kinit administrator@DTUX.ORG
Password for administrator@DTUX.ORG:

Verificando os tickets de conexão:

#klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@DTUX.ORG

Valid starting Expires Service principal
09/25/09 14:22:50 09/26/09 14:22:48 krbtgt/DTUX.ORG@DTUX.ORG

Verificando os tickets de conexão e os métodos de autenticação aplicados:

#klist -e
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@DTUX.ORG

Valid starting Expires Service principal
09/25/09 14:22:50 09/26/09 14:22:48 krbtgt/DTUX.ORG@DTUX.ORG
Etype (skey, tkt): ArcFour with HMAC/md5, ArcFour with HMAC/md5

Windows sendo Dominado pelo Samba4

Para colocar o Windows XP no domínio do samba, além da configuração de hora já foi falado, devemos configurar o ip da máquina onde está o samba4 no DNS do micro com Windows XP/2003/2008/7.

dns21


No Windows XP segue as seguintes configurações para se entrar em domínio, este procedimento serve para Windows XP/2000/2003/2008/7:

• Menu Iniciar -> Painel de Controle -> Sistema
• Guia “Nome do Computador”
• Alterar
• Marque o checkbox “Domínio”
• Coloque o seu domínio (DTUX.ORG) -> OK
• Caso ocorrer algum problema de apontamento de DN, pode-se editar o arquivo “C:\WINDOWS\system32\drivers\etc\hosts”, no arquivo “hosts” você coloca o IP do servidor samba e na frente o seu respectivo DNS name desta forma:

  • 127.0.0.1    localhost
  • 192.168.11.2    dtux.org dtux

logon

logon1

Simple no primeiro logon logue como administrator, caso você queira fazer parte da administração do Samba4 através do “Windows Server 2003 Administration Tools Pack” antes de instalá-lo, instale o “Windows Server 2003 Suporte Tools”:

http://www.microsoft.com/downloads/details.aspx?FamilyID=c16ae515-c8f4-47ef-a1e4-a8dcbacff8e3&displaylang=en
http://download.microsoft.com/download/3/e/4/3e438f5e-24ef-4637-abd1-981341d349c7/WindowsServer2003-KB892777-SupportTools-x86-ENU.exe

Aproveitando vamos criar um “Perfil Remoto”, um problema encontrado com perfil remoto foi encontrado quando você cria um usuário pelo “Administrator Tolls” esse usuário não terá acesso ao Shell do Linux e com isso ele não irá conseguir ditar permissões de escrita e leitura, a forma existe script na pasta: /usr/local/samba/share/samba/setup/.

• newuser

Antes de utilizá-lo você tem que adicionar o usuário no Linux usando o comando comum “useradd”.
Iremos simular o seguinte ambiente, criaremos um grupo e adicionaremos um usuário no Linux a colocaremos esse usuário no grupo criado entre no “Administrator Tools”, criaremos o grupo também e utilizaremos o script “newuser” para adicionar o usuário no samba4.

• Criando grupo:
#groupadd samba4

Criando usuário no Linux:
#useradd teste –g samba4 -p senha –c “Teste Samba4 Users”

• Criando a pasta do profile do usuário, levando em consideração que “/home/profiles”, já foi feito acima:
#mkdir -p /home/profiles/teste

• Ditando permissões de acesso a pasta para este usuário recém criado:
#chown teste:samba4 /home/profiles/teste

Agora usaremos o script “newuser” para fazer a importação, um problema encontrado foram as bibliotecas python utilizadas por esse scripts elas estão localizadas em “/usr/local/samba/lib/python2.6/site-packages”, temos que copiar todo esses arquivos para a pasta real do python do sistema “/usr/lib/python2.6/site-packages/”:

#cd /usr/local/samba/lib/python2.6/site-packages
#cp –rp * /usr/lib/python2.6/site-packages/

Vamos fazer a copia do “newuser” para nosso diretório “/usr/sbin”:

#cp /usr/local/samba/share/samba/setup/newuser /usr/sbin

Tudo pronto para a execução do script:

#newuser teste senha –unixname=teste -k KERBEROS –workgroup=dtux.org

• –unixname: Usuário criado no Linux/Unix
• -k KERBEROS: Utiliza autenticação Kerberos
• –workgroup: Domínio Criado

Agora quando você autenticar no Windows com este usuário que ele já está sincronizado, quando você abrir o “Administrator Tools” pelo menu “Iniciar -> Executar”, digite “dsa.msc”:

dsamsc1

Depois clique em seu domínio e vá em “Users” o usuário já irá aparecer na listagem, criaremos o grupo “samba4” pelo “Administrator Tools” e adicionaremos o usuário “teste” neste grupo, e configuraremos o seu profile remoto.
Criando o grupo: “Botão direito em Builtin ->Novo -> Group”, dê um nome uma descrição.

cgrupos

Agora na guia “Members” você define os usuários que farão parte deste grupo.

cotactgrop

Os usuários que foi importamos já estão criados agora é só acertar alguns detalhes em “User logon name” que é o nome de logon é só colocar o nome do usuário e na frente o “@DOMINIO”, marque as opções “Use cannot chance password” se não quer que os usuários alterem a senha, e “Password never expires”, pra ela numca expirar.

configuracao

Iremos agora á guia “Profile” e em “Profile Path” definiremos o caminho do diretório remoto onde serão armazenados os arquivos do usuário.

profile

Em “Map Folder”, podemos colocar esse caminho do profile do usuário para ser montado em uma unidade de mapeamento de rede.

mapeamento

Podemos através do Windows os tickets do Kerberos através do “Windows Server 2003 Resource Kit Tools” (http://www.microsoft.com/downloads/details.aspx?familyid=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displaylang=en). Utilizaremos Klist e o Kerbtray, que ficam localizadas em: “Iniciar -> Windows Resource Kit Tolls -> Command Shell”.

resourcekit1

Klist

A ferramenta klist é uma ferramenta de linha de comando que permite que você exiba o conteúdo dos cache de credenciais e pode ser usada em um cliente Windows para exibir ou destruir credenciais existentes de Kerberos.
A ferramenta klist exige um argumento. O argumento “tgt” mostra as credenciais no cache atual, e o argumento “tickets” mostram as credenciais em cache.

klisttgt

klisttickets

KerbTray

A ferramenta Kerberos Tray, KerbTray, (kerbtray.exe) é uma ferramenta gráfica da plataforma Windows que exibe informações de tickets Kerberos em um computador de plataforma Windows onde os tickets Kerberos foram armazenados no cache de credenciais. Os tickets Kerberos são adquiridos e armazenados nas credenciais de cache quando um usuário autenticar em um computador de plataforma Windows (cliente ou servidor) como um usuário de domínio. O KerbTray permite que você visualize e limpe o cache de ticket.
Quando executado, a ferramenta coloca um ícone na bandeja do sistema. Esse ícone exibe o status com base na presença ou ausência de credenciais válidas. Dados disponibilizados pela interface KerbTray incluem os selos de tempo nos tickets, os marcadores associados às credenciais e o(s) tipo(s) de criptografia dos tickets.

kerbtraytickets

Administração do Samba4 via phpLDAPadmin
phpLDAPadmin é uma interface gráfica para gerenciar a base de dados LDAP. Para seu funcionamento será necessário ter instalação do Apache com suporte à PHP versão 5 ou 4 se preferir. O seu site oficial é (http://phpldapadmin.sourceforge.net).

#wget –C http://ufpr.dl.sourceforge.net/sourceforge/phpldapadmin/phpldapadmin-1.1.0.7.tar.gz
# tar -zvzf phpldapadmin-1.1.0.7.tar.gz
# mv phpldapadmin-1.1.0.7 phpldapadmin

Copiaremos a pasta “phpldapadmin” na pasta do apache

# mv phpldapadmin /srv/www/htdocs

Acesse a pasta onde estão as configurações de seu samba, lá você irá encontrar um arquivo de configuração devidamente configurado para se conectar ao samba4, copie para a pasta de configuração do “phpLDAPadmin”.

# cd /var/lib/samba/private
# cp phpldapadmin-config.php /srv/www/htdocs/ldap/config/config.php

Seu apache deve estar devidamente configurado com suporte a PHP. Caso você esteje utilizando o Slackware Linux, apenas descomente a linha “Include /etc/httpd/mod_php.conf” de seu “httpd.conf” em “/etc/httpd” e reinicie o apache:

# apachectl restart

Abra seu navegador no seguinte endereço:

http://localhost/phpldapadmin/index.php

Irá abrir a pagina lhe pedindo usuário e senha, você pode conectar usando o usuário “Anônimo” ou como “Administrator”.
Para se conectar como “Administrator” você deve indicar o caminho completo da localização do usuário, neste caso ele se encontra em “CN=Users,DC=dtux,DC=org”, para o usuário “Administrator” ficará assim:

CN=Administrator,CN=Users,DC=dtux,DC=org

Você pode se conectar com qualquer usuário desde que indique o seu caminho completo, assim como o “Administrator”.

login2

login1

Arquivos de configuração, lembrando que esse foram usados na minha estrutura, lembre-se cada caso é um caso:

Unknownsmb.conf – Arquivo de configuração do samba

Unknownnamed.conf – Arquivo principal do bind

Unknowndtux.org.zone – Zona principal criada pelo samba e adaptada

Unknown11.168.192.in-addr.arpa – Zona Reversa baseada na Zona Principal

Unknownkrb5.conf – Arquivo de configuração do Keberos criado pelo samba

UnknownadminSamba4.sh – Script criado por mim, para ajuda na tarefa de criar usuários no linux e im porta-los para Active Directory do Samba4, simple que pode evoluir, sujestões são aceitas.

Fontes de Apoio: http://wiki.samba.org/index.php/Samba4/HOWTO
http://www.vivaolinux.com.br/artigo/Samba-4-como-controlador-de-dominio-com-Active-Directory-da-MS
http://www.nisled.org/?p=68

 

# smbclient //dtux.org/profiles -Uadministrator%anna

smb: \> dir

.                              D        0  Wed Sep 23 11:31:36 2009

..                             D        0  Tue Sep 22 17:26:38 2009

Admin                          D        0  Tue Sep 22 15:28:02 2009

alexandro                      D        0  Tue Sep 22 17:19:31 2009

diego                          D        0  Mon Sep 21 16:42:47 2009

nazir                          D        0  Wed Sep 23 11:31:36 2009

danilo                         D        0  Tue Sep 22 12:04:42 2009

gustavo                        D        0  Tue Sep 22 12:16:04 2009

zeh                            D        0  Tue Sep 22 17:32:59 2009

satarosa                       D        0  Tue Sep 22 17:26:38 2009

anna                           D        0  Mon Sep 21 16:51:32 2009

15 comentários sobre “Instalação e Configuração do Samba4

      1. Galera fiz vários testes, e mais alguns e devo colocar o samba4 em produção já na próxima semana, validei ele com todos as Versões do Windows e não tive qualquer problema com nenhum.

        So não consegui ainda colocar em produção as GPO’s, alguém já conseguiu?

  1. Boa tarde, achei muito bom seu artigo sobre samba 4, gostaria de saber se vc já teve alguma experiência de integração com o mysql… to precisando muito desta solução para integrar com um aplicação aqui do trabalho… desde já agradeço!!

  2. Estou querendo acessar os arquivos ded configuração que estão listados no final do artigo, porém dá acesso negado no site.

  3. cara, muito bom seu post, mas nao estou conseguindo pegar os arquivos. tá mandando para uma página da software livre brasil. já fiz cadastro lá, mas mesmo assim da acesso negado. poderia estar verificando, por favor? obrigado.

Deixar mensagem para Rafael Henrique da Silva Correia Cancele a resposta