Blog destinado a publicações de arquigos e dicas, para contribuir com a comidade livre.
Replica de dados entre servidores Samba4 com load-balance de DNS
13 de Setembro de 2010, 0:00 - sem comentários aindaA partir da versão Alpha 11 do Samba4 possui a capacidade de aderir um controlador de domínio adicional a um controlador de domínio já existente, este recurso é útil para melhorar a disponibilidade e a confiabilidade dos serviços de rede. Adicionar outros controladores de domínio pode ajudar a fornecer tolerância a falhas, equilibrar a carga de controladores de domínio existentes.
O fato de haver mais de um controlador de domínio em um domínio permite que o domínio continue a funcionar se um controlador de domínio falhar ou precisar ser desconectado. Vários controladores de domínio também podem melhorar o desempenho, pois facilitam a conexão de um cliente com um controlador de domínio durante o logon em rede. Você pode adicionar outros controladores de domínio pela rede tanto sendo “Samba4 < – > Samba4, ou Samb4 < – > Samba4 < – > Windows Server 2008 Server”, que vai dar a sua rede uma infraestrutura multi-plataforma com uma base heterógena e única.
Montando a estrutura de replica
Primeiramente é necessário ter duas instalações do Samba4, no qual uma completa com o domínio configurado, outra sem o domínio configurado. Os passos da instalação podem ser seguidos aqui:
Link1 = http://diegograssato.wordpress.com/2009/10/06/instalacao-e-configuracao-samba4/
Link2 = http://wiki.samba.org/index.php/Samba4/HOWTO
Pulem somente o passo da configuração dos domínios feitos pelo “provision”.
Configuração do Controlador de Domínios Primários
#./setup/provision –realm=tux.org –domain=TUX –adminpass=d13g@anna –server-role=’domain controller’
Configuração do Controlador de Domínios Replica 1
No controlador secundário, após a instalação do sistema e a configuração correta do DNS vamos para as configurações para integra-lo ao samba4 e faze-lo de servidor de replica de dados:
Primeiro passo “INICIAR -> RUN”, digite “dcpromo”:
Aparecerá uma mensagem de erro ignore-a e click em “NEXT”:
Marque a opção “EXISTING FOREST”, que irá vincula-lo a uma floresta já existente.
Digite o nome de domínio que se deseja vincular:
Click em “SET” logo abaixo e entre com as credenciais de administrator do domínio adicionado acima.
Selecione a Floresta Principal:
Selecione o site do controlador default:
Passemos para a parte de verificação de DNS, desmarque a opção “DNS server” e “Read-only domain controler” deixe somente o catalogo global:
Próximo passo será é a verificação do DNS:
Irá aparecer um erro, mas click em “Yes” mais tarde iremos adicionar as entradas DNS do servidor manualmente no servidor.
Configuração feita você pode fazer a exportação dos dados para poder utilizar posteriormente, avence para próxima etapa:
Nesta etapa que pode demora um pouco o servidor irá importa os catálogos do Samba4 para utilização é feito o sincronismo com a base do Samba4.
Processo finalizado o servidor irá reinicia para que aplique as configurações e já volta replicando, mas antes de iniciarmos o servidor iremos adicionar a entrada do host do servidor no nosso servidor DNS, para adicionarmos o servidor precisamos de seu número de identificação “GUID”, pois é através dele que feita autorização pelo servidor Samba4 caso contrario o Samba4 acusará alguns erros:
Para descobrimos o “GUID” de replica irá digitar o seguinte comando no servidor onde está o Samba4:
#ldbsearch -H /var/lib/samba/private/sam.ldb objectClass=ntdsdsa objectguid –cross-ncs
Ele irá mostrar o “GUID” dos dois servidores copie a entrada que fala de nosso servidor Windows 2008 e abra o arquivo de configuração da zona criada pelo Samba4 que está localizada em “/var/lib/samba/private/dns/tux.org”.
Após adicionar as entradas reinicie o servidor DNS e inicie o Windows 2008, agora vamos testar se a replica está funcionando corretamente.
No shell do DC primário use o comando “net” para adicionar um novo usuário:
No caso criamos o usuário “Anna”, vamos verificar usando o comando “wbinfo -u”:
Ele listará todos usuários.
Logue-se agora no servidor Windows 2008 Server, como administrator, vá ao meu “INCIAR -> RUN -> das.msc”, vá na guia usar que está e Users.
Criaremos agora um usuário no Servidor 2008. Remova o usuário usando o utilitário do Windows e Cadastre um outro usuário, usando o formulário do “DSA”.
Verificando no Samba4 se replicou os dados:
Replicando dados perfeitinhos, vá à guia “Domain Controllers” você verá os dois controladores ativo.
Configuração do Controlador de Domínios Replica 2
Nesta segunda replica nos usaremos outra máquina rodando Samba4, siga as passos da instalação padrão só pule a aparte do “provision”
#net vampire TUX.ORG -UAdministrator –realm=tux.org
Coloque a senha do administrator de domínios e em alguns instantes sua segunda replica está no ar.
Antes de iniciar o serviço rode novamente o seguinte comando para obter e adicionar o “GUID” deste servidor ao servidor DNS e o DC primário possa encontra-lo na rede.
O atributo objectGUID é um atributo de identificação, o valor do objeto objectGUID é GUID atribuído quando o objeto foi criado e é imudável depois, a replicação depende da integridade do atributo objectGUID.
#ldbsearch -H /var/lib/samba/private/sam.ldb objectClass=ntdsdsa objectguid –cross-ncs
Ele irá mostrar o “GUID” dos dois servidores copie a entrada que fala de nosso servidor Windows 2008 e abra o arquivo de configuração da zona criada pelo Samba4 que está localizada em “/var/lib/samba/private/dns/tux.org”.
Após adicionar as entradas reinicie o servidor DNS e inicie o Windows 2008, agora vamos testar se a replica está funcionando corretamente.
No shell do Servidor Replica 2 primário use o comando “net” para adicionar um novo usuário:
No caso criamos o usuário “Anna”, vamos verificar usando o comando “wbinfo” no servidor DC principal:
OK Funcionando e se você verifica no Windows 2008 Server já está atualizado também.
Vamos adicionar a nossa regra de load-balance de Domínio em nosso servidor DNS para que os dados sejam replicados podemos fazer um balanceamento de requisições caso um servidores pare o outro assume até que ele volte, quando ele volta os dados são repassado a eles, para fazer esse balanceamento é simples, abra o arquivo de configuração de sua zona e adicione a seguinte entrada, logo abaixo” IN A 192.168.11.1” adicione:
IN A 192.168.11.18
IN A 192.168.11.12
Assim sempre o acesso será balanceado pelo servidor DNS e caso um dos dois pare e outro irá continuar trabalhando, quando o DC voltar ele irá importar os dados para que as informações sempre fiquem integras.
Para testarmos se está funcionado utilize o comando “ping”;
Primeiro teste
# ping tux.org
PING tux.org (192.168.11.1) 56(84) bytes of data.
64 bytes from tux.org (192.168.11.1): icmp_seq=1 ttl=64 time=0.253 ms
64 bytes from tux.org (192.168.11.1): icmp_seq=2 ttl=64 time=0.087 ms
Segundo teste
# ping tux.org
PING tux.org (192.168.11.12) 56(84) bytes of data.
64 bytes from tux.org (192.168.11.12): icmp_seq=1 ttl=64 time=0.253 ms
64 bytes from tux.org (192.168.11.12): icmp_seq=2 ttl=64 time=0.087 ms
Terceiro teste
# ping tux.org
PING tux.org (192.168.11.18) 56(84) bytes of data.
64 bytes from tux.org (192.168.11.18): icmp_seq=1 ttl=64 time=0.253 ms
64 bytes from tux.org (192.168.11.18): icmp_seq=2 ttl=64 time=0.087 ms
Openfire, Asterisk Interagindo Voip com Seus Clientes Internos
28 de Outubro de 2009, 0:00 - 5 comentários
O Openfire é um servidor Jabber desenvolvido em Java pela Ignite Realtime,ele passou por inúmeras melhorias, recebendo mais recursos e aprimorando os que já existiam (como a autenticação LDAP e Active Directory, por exemplo).
O Openfire tem uma gama imensa de recursos, um dos mais interessantes é o uso de plugins, que permitem extender as funcionalidades do servidor. Existe quase uma dezena de plugins disponíveis (e outros que já estão em desenvolvimento), no nosso caso usaremos o "SIP Phone Plugin":
SIP Phone Plugin: Plugin que provê a comunicação dos usuário com contas VOIP.
Não irei aborta a instalação nem configuração dos clientes no Openfire, irei abordar somente a adequação dos clientes para trabalhar com sistema voip com asterisk. Segue abaixo alguns link sobre a instalação do OpenFire:
Instalação: http://www.nisled.org/?tag=openfire
http://www.vivaolinux.com.br/artigo/Servidor-Jabber-com-Openfire-+-MySQL-+-Debian-Lenny
Bom a parte inicial é nosso ambiente de trabalho:
· Linux: Slackware 12.2 – Current Version
ftp://ftp.slackware.no/pub/linux/ISO-images/slackware/Current-ISObuild/
· Libpri
http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.2.8.tar.gz
· Asterisk 1.6.1
http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.6.1.1.tar.gz
· Asterisk-Addons 1.6.2.0 rc1
http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-addons-1.6.2.0-rc1.tar.gz
· Asterisk-sounds 1.2.1
http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-sounds-1.2.1.tar.gz
· Servidor rodando Openfire devidamente configurado com busca de usuário utilizando OpenLDAP ou Mysql.
Instalação e configuração do Asterisk
O Asterisk é um software PBX que usa o conceito de software livre, criado inicialmente por Mark Spencer, fundador da empresa Digium. Com o Asterisk você pode criar diversas aplicações a um baixo custo, com a mesma, se não superioridade de muitos PABX encontrados hoje no mercado de telecomunicações.
Entenda que o Asterisk é muito mais que um PABX padrão. Com o Asterisk em sua rede, você cria novas aplicações em telefônia.
Algumas como:
· URA (Unidade de Resposta Audível);
· Filas de chamadas para Call Centers e outras atividades;
· VoiceMail;
· Atendimento Programado;
· Servidor de Fax;
· Conferência;
· VideoConferência;
· Bilhetagem detalhada;
· Planos de chamadas (DialPlain);
· CRM
· e muitos outros...
Instalando o Asterisk
Após o download dos pacotes vamos compactá-los, o primeiro que iremos instalar será o libpri depois o asterisk:
-LibPri
root@host# tar -zxvf libpri-1.2.8.tar.gz
root@host# cd libpri-1.2.8
root@host# make && mak install
-Asterisk
root@host# tar –zxvf asterisk-1.6.1.1.tar.gz
root@host# cd asterisk-1.6.1.1
root@host# ./configure --prefix=/usr --sysconfdir=/etc --
localstatedir=/var --mandir=/usr/man
root@host# make && make install
root@host# make samples && make progdocs
-Addons
root@host# tar -zxvf asterisk-addons-1.6.2.0-rc1.tar.gz
root@host# cd asterisk-addons-1.6.2.0-rc1
root@host# ./configure --prefix=/usr --sysconfdir=/etc --
localstatedir=/var --mandir=/usr/man
root@host# make && make install
-Souns
root@host# tar -zxvf asterisk-sounds-1.2.1.tar.gz
root@host# cd asterisk-sounds-1.2.1
root@host# make install
Script de incialização:
#========================================================================
#!/bin/sh
#
# Start/stop/restart Asterisk PBX
asterisk_start() {
if [ -x /usr/sbin/asterisk ]; then
VERSION=`/usr/sbin/asterisk -rx 'core show version'`
if [ "`echo $VERSION | cut -c 1-8`" = "Asterisk" ]; then
echo "Asterisk está em funcionamento. $0 saindo agora."
exit 1
fi
echo "Starting Asterisk /usr/sbin/asterisk"
/usr/sbin/asterisk
fi
}
asterisk_stop() {
if [ -r /var/run/asterisk.pid ]; then
killall asterisk
fi
}
asterisk_restart() {
asterisk_stop
asterisk_start
}
case "$1" in
'start')
asterisk_start
;;
'stop')
asterisk_stop
;;
'restart')
asterisk_restart
;;
*)
echo "usage $0 start|stop|restart" ;;
esac
#========================================================================
Salve com o nome de rc.asterisk, dê permissão de execução e copie para
o diretório no diretório /etc/rc.d, e podemos inicializá-lo pela primeira vez:
root@host# chmod +x rc.asterisk
root@host# mv rc.asterisk /etc/rc.d
root@host# /etc/rc.d/rc.asterisk start
root#host# asterisk –vvvrcg
Asterisk 1.6.1.1, Copyright (C) 1999 - 2008 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' fordetails.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under certain conditions. Type 'core show license' for details.
=========================================================================
== Parsing '/etc/asterisk/asterisk.conf': == Found
== Parsing '/etc/asterisk/extconfig.conf': == Found
Connected to Asterisk 1.6.1.1 currently running on chat (pid = 23082)
Verbosity is at least 5
-- Remote UNIX connection
Pronto asterisk funcionado agora vamos fazer a configurações das contas voip, dentro de /etc/asterisk encontram-se os arquivos de configuração.
O arquivo de configuração SIP - extensions.conf
O arquivo extensions.conf é o responsável por criar as extensões ou ramais, nele criamos também caminhos genéricos como XXX para cada X um dígito, onde podemos usar a imaginação para solucionar as questões que precisamos.
No extensions.conf criamos grupos de chamadas locais no qual podemos incluir outros grupos e criar os ramais dentro dele. Abaixo temos um exemplo de configuração do grupo de chamada 'grupo1' que inclui os ramais do grupo 'demo' e contém os seguintes ramais. Os comentários deste arquivo são precedidos de " ; ".
Veja que no contexto [interno] incluímos o contexto [demo] e criamos
dois ramais (1000,1001).
[interno]
include => demo
; Configuração do SIP
exten => 1000,1,Dial(SIP/1000,25)
#; SIP-É o tipo da conta / 1000 / 25-O tempo que vai
chamar em segundos.
exten => 1000,2,Hangup
exten => 1001,1,Dial(SIP/1001,25)
exten => 1001,2,Hangup
O arquivo de configuração SIP - sip.conf
O arquivo sip.conf armazena informações sobre contas de usuários de protocolo SIP as informações são simples como nome de usuário, bina, senha e qual grupo participam.
No exemplo abaixo estamos criando os usuários que receberam um número no extensions.conf.
[general] ; configurações básicas do protocolo
context=default ; Context padrão para recebimento de chamadas
bindport=5060 ; Porta UDP (A padrão é 5060)
bindaddr=0.0.0.0; Endereço IP para escutar (0.0.0.0 Escuta todas
interfaces)
;Codec
allow=ulaw
allow=alaw
allow=g729
allow=ilbc
allow=h263
allow=h263p
language=pt_BR ;Lingua padão
videosupport=Yes; Suporte a video
textsupport=Yes; Suporte a texto
#################################################################
# * Friend = Efetua e recebe ligações;
# * Peer = Apenas faz ligações;
# * User = Apenas recebe ligações.
################################################################
[1000]
type=friend ; tipo friend=faz e recebe chamadas, user=faz chamadas,
peer=recebe chamadas.
callerid = "ADMIN" <1000>
username=1000 ;Nome do usuário para login
secret=123 ; Senha
host= dynamic ; se não tem ip fixo
nat=yes ; se está debaixo de nat
canreinvite=no ; no para não encaminhar chamadas
context=interno ; Context padrão para recebimento de chamadas
qualify=yes ; verifica se o host está respondendo (está a menos de 20ms)
allow=all
[1001]
type=friend
callerid = "Diego" <1001>
username=1001
secret=123
host= dynamic
nat=yes
canreinvite=no
context=interno
qualify=yes
allow=all
Após as alterações reinicie o asterisk e vamos verificar as contas:
root@host# /etc.rc.d/rc.asterisk restart
root@host# asterisk –vvvvrcg
chat*CLI> sip show peers
Name/username Host Dyn Nat ACL Port Status
1000/1000 201.91.215.132 D N 5061 OK (166 ms)
1001/1001 201.91.215.132 D N 61836 OK (134 ms)
Bom essa contas já estão conectadas e respondendo ao ping do asterisk, eu as autentiquei em um softphone e estão em perfeito funcionamento agora vamos vinculá-las e cotas de usuários do OpenFire. Com o Openfire abeto vá a guia Plugins e Plugins Disponiveis e instale
o plugin "SIP Phone Plugin":
Depois de instalado vamos a guia Servidor, Telefone, Ajustar SIP:
Aqui é onde faremos as configurações do servidor Sip Asterisk que configuramos colocarmos o IP ou hostname do servidor se ele tiver correio de voz colocaremos o IP dele novamente se terá suporte a STUN, IP do servidor STUN e sua porta, depois é só clicar em "Atualizar
Configurações".
O que é um servidor STUN?
O STUN (Simple Traversal of User Datagram Protocol [UDP], por meio da Network Address Translators [NATs]), é um servidor que permite que clientes NAT (ex.: computadores protegidos por firewall) realizem chamadas telefônicas a um provedor VoIP que se encontre fora da rede local.
O servidor STUN permite que os clientes descubram seu endereço público, o tipo de NAT utilizado, e o lado da porta da Internet associada à NAT com uma porta local específica. Essas informações são usadas para permitir a comunicação UDP entre o cliente e o provedor VoIP, e então, estabelecer a chamada. O protocolo STUN é definido pela RFC 3489.
O servidor STUN está ligado à porta UDP 3478. No entanto, o servidor irá sugerir aos clientes que realizem testes em IPs e números de portas alternativos (os servidores STUN têm dois endereços IP). O RFC determina que tanto portas como IPs podem ser usados (de acordo com a preferência do cliente).
Fonte: http://www.3cx.com.br/voip-sip/stun-server.php
Depois de configurado o servidor vamos veicular nossa contas de usuários aos números voip, vá à guia "Mapeamento de Telefones SIP", logo abaixo terá "Add new Phone Mapping", para adicionarmos a primeira conta vamos supor que temos cadastrados os usuário:"admin e diego", vamos adiciona uma conta para cada um.
No usuário "XMMP username" é onde colocarmos o login do cliente, "SIP username" é a conta VOIP, "Nome de Autenticação" é o login para autenticar no SIP, "Mostra Nome" é um nome de apresentação só, "Senha" a senha definida no SIP Server, os outros atributos já são colocados por Default, pois já foram configurados "Ajustes SIP".
Agora iremos configurar o cliente para utilizar o serviço, iremos utilizar o "SPARK", podemos baixar o spark em "http://www.igniterealtime.org", depois de instalado o cliente iremos
configurar a conta do cliente:
Agora iremos instalar o plugin "Phone Client", vá a guia "Spark-> Plugins -> Plugins Disponíveis", ele irá buscar todos os plugins disponíveis, instale o "Phone Client", feche e abra o programa.
Configure a outra conta em outra maquina e podemos fazer um teste de discagem digite o ramal "1001" e aperte "ENTER". Pronto está funcionando.
Fontes interessantes de Pesquisa:
http://www.fug.com.br/content/view/101/9/1/1/
http://www.fug.com.br/content/view/112/9/
http://www.3cx.com.br/voip-sip/stun-server.php
http://www.asterisk.org
http://www.vivaolinux.com.br/artigo/Asterisk-O-PBX-de-codigoaberto/?pagina=1
Instalação e Configuração do Samba4
1 de Outubro de 2009, 0:00 - sem comentários ainda
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”:
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.
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
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”:
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.
Agora na guia “Members” você define os usuários que farão parte deste grupo.
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.
Iremos agora á guia “Profile” e em “Profile Path” definiremos o caminho do diretório remoto onde serão armazenados os arquivos do usuário.
Em “Map Folder”, podemos colocar esse caminho do profile do usuário para ser montado em uma unidade de mapeamento de rede.
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”.
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.
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.
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”.
Arquivos de configuração, lembrando que esse foram usados na minha estrutura, lembre-se cada caso é um caso:
smb.conf - Arquivo de configuração do samba
named.conf - Arquivo principal do bind
dtux.org.zone - Zona principal criada pelo samba e adaptada
11.168.192.in-addr.arpa - Zona Reversa baseada na Zona Principal
krb5.conf - Arquivo de configuração do Keberos criado pelo samba
adminSamba4.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