
Introdução
Neste artigo irei mostrar a integração do Serviço de Diretórios(Active Directory) já nativo no SAMBA4, e sua interpolaridade com outros softwares assim como samba 3.x, postfix, webmin, sshd entre outros softwares, através de autenticação via modulo WINBIND + PAM. A interpolaridade hoje em dia é muito difundida, pois de forma geral e definida como sendo a capacidade de plataformas diferentes atuarem plenamente em conjunto, comunicando-se por intermedio de padrões abertos, neste caso em especial o SAMBA4 pode ser utilizando tanto por aplicativos utilizandos pelo windows como no linux de uma maneira em especial a comunicação entre o Serviço de Diretório(Active Directory) entre aplicativo utilizados no Linux.
O Wibind nesta estrutura é usado na relação de confiança entre domínios e o samba, neste caso entre domínio configurado no SAMBA4 e o SAMBA3x, assim fazendo a troca de informações de usuários e serviços de rede.
O PAM(Pluggable Authentication Modules, ou Módulos de Autenticação Plugáveis/Modulares) é uma biblioteca que permite autenticar usuários em ambientes como GNU/Linux, Unix ou Solaris. A autenticação no Linux era apenas via senhas criptografadas armazenadas em dois arquivos locais chamados /etc/passwd e /etc/shadow, quando um programa que exige login pede o nome do usuário e a senha, criptografava a senha e comparava o resultado com o armazenados nestes arquivos, se fossem iguais, garantia o acesso à máquina se não era regeitado o pedido.
A Sun® criou o PAM e liberou as especificações em forma de RFC.
Os modulos PAM são divididos em quatro categorias, definindo os tipos diponiveis, no linux, normalmente estão localizados
no diretório /etc/pam.d/. Nestes arquivos, a linha de configuração é dada como:
auth:
Verifica que o usuário é realmente quem ele diz que é. Pode ser bem simples, pedindo apenas por um nome e uma senha, ou utilizando autenticação biométrica, por exemplo (como uma impressão de voz, uma imagem da retina ou impressão digital).
account:
Verifica se o usuário em questão está autorizado a utilizar este serviço ao qual ele está se autenticando. Os módulos aqui podem checar por horário, dia da semana, origem do login, login simultâneo, etc.
passwd:
Este serviço é usado quando se deseja mudar a senha. Por exemplo, aqui podem ser colocados módulos que verificam se a senha é forte ou fraca.
session:
A session fica encarregada de fazer o que for necessário para criar o ambiente do usuário. Por exemplo, fornecer o acesso a alguns dispositivos locais como o de áudio ou cdrom, montar sistemas de arquivos ou simplesmente fazer o registro do evento nos arquivos de log do sistema.
O control-flag é utilizado para indicar de que forma a biblioteca do PAM reagirá ao sucesso ou falha do módulo que está associado, alguns control-flag:
required:
O resultado deste módulo influência diretamente o resultado final. Uma falha em um módulo deste tipo só aparecerá para o usuário após todos os outros módulos desta classe serem executados.
requisite:
Se a autenticação do módulo falhar nega a autenticação imediatamente.
sufficient:
A falha deste módulo não implica em falha da autenticação como um todo. Se o módulo falhar, o próximo da classe é executado. Se não houver próximo, então a classe retorna com sucesso.
optional:
Os módulos marcados como optional praticamente não influenciam o resultado da autenticação ele só é significante se o módulo for único em relação ao serviço ou classe.
Ambiente
Instalação e requisitos do servidor Samba4:
http://diegograssato.wordpress.com/2009/10/06/instalacao-e-configuracao-samba4/
Configurações da máquina “MAIL”:
• Linux: Ubuntu Server 9.10, instalação mínima com o sistema básico e OpenSSH:
http://www.ubuntu.com/getubuntu/download-server
Após a instalação será instalado os seguintes pacotes:
| #apt-get install samba samba-common smbclient smbfs winbind krb5-config krb5-user libpam-krb5 finger quota ntpdate nmap |
|
Alguns pacotes foram adicionados para sincronização de horário e verificação de rede “ntpdate e nmap “.
Configurações
A primeira coisa a ser feita é sincronização da hora da máquina com o servidor, use este comando:
Para agilizar o processo adicione esta linha em “/etc/rc.local”, toda vez que o micro iniciar ele irá sincronizar o seu horário.
Agora o primeiro passo é fazer a configuração do cliente kerberos em “/etc/krb5.conf”, faça uma backup antes do arquivo original:
| #mv /etc/krb5.conf /etc/krb5.conf-default |
|
Segue conteúdo do arquivo:
| [libdefaults] default_realm = TUX.ORG
[realms]
TUX.ORG = {
kdc = tux.org:88
admin_server = tux.org:749
default_domain = tux.org
kpasswd_server = tux.org:88
}
[domain_realm]
.tux.org = TUX.ORG
tux.org = TUX.ORG
|
|
Em seguida, vamos testar a comunicação com o SAMBA4 utilizando
Kerberos.
| # klist Ticket cache: FILE:/tmp/krb5cc_0_U3eIEX
Default principal: administrator@TUX.ORG
Valid starting Expires Service principal
01/06/10 00:10:30 01/07/10 00:09:59 krbtgt/TUX.ORG@TUX.ORG
|
|
Digite a senha, e vamos testar se ele adquiriu as credenciais:
Pronto!
Em seguida, vamos editaremos o arquivo nsswitch.conf, o arquivo Network Services Switch (/etc/nsswitch.conf) determina a ordem das buscas realizadas quando uma certa informação é requisitada, exatamente como o arquivo /etc/host.conf determina o modo como
pesquisas de hosts são executadas.
E alterar as linhas:
| passwd: compatgroup: compat
shadow: compat
|
|
DE:
| passwd: compat winbindgroup: compat winbind
shadow: compat winbind
|
|
PARA:
O ambiente está preparado para receber o SAMBA/Winbind.
Configurando o Samba/Winbind
| # mv /etc/samba/smb.conf /etc/samba/smb.original# vi /etc/samba/smb.conf
|
|
Vamos fazer backup do arquivo original e depois vamos criaremos o nosso arquivo de configuração:
| [global]# Segue apenas um comentario que ira parecer no seu ambiente de rede.
comment = Servidor MTA SAMBA 4
# Defini o nome do Grupo de Trabalho , Nesse caso nosso SAMBA4
workgroup = TUX
#Nome de NetBIOS da sua maquina, que aparecerece no ambiente de rede
netbios name = MAIL
# Define o nome do Servidor samba local
server string = SAMBA 4 MTA %v
netbios aliases = MAIL.TUX.ORG
unix charset = ISO-8859-1
#Desabilita Impressao
load printers = no
#Arquivo de log
log file = /var/log/samba/log.%m
#Tamanho maximo de LOGs
max log size = 500
# Nome do dominio do SAMBA4(Active Directory)
realm = TUX.ORG
security = ads
#Metodo Utilizado na Autenticacao WINBIND
auth methods = winbind
|
|
|
|
|
|
|
|
| #Servidor onde estao as senhas “*” aceita qualquer entrada voce pode #indicar o endereco do IP do servidorpassword server = *
#Não aceita senhas nulas
null passwords = no
#As senhas serao transitadas criptografadas
encrypt passwords = true
# Define o nivel de debugacao do arquivo log
debug level = 1
# Verifica a comunicacao a cada 20 segundo
keep alive = 20
# Separador do Winbind, (usado DOMINIO[+,/,@]usuario-do-dominio)
winbind separator = +
winbind cache time = 15
winbind enum users = yes
winbind enum groups = yes
#Configura o Winbind para buscar direto no dominio, ou em caso de no, #obriga a usar o separador
winbind use default domain = yes
# IDs que os usuarios do Dominio (no caso trazidos pelo Winbind) podem #assumir
idmap uid = 10000-20000
# IDs que os grupos do Dominio (trazidos pelo Winbind) podem assumir
idmap gid = 10000-20000
#Opcoes que configuram o socket para o tipo de acesso do server (no #caso rede ads, ou NT, ou Samba)
socket options = IPTOS_LOWDELAY TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
# Os level alto para que as eleiçs para controlador sejam garantidas, #a ele, neste caso vai ser baixo, pois
#o Controlado e o SAMBA4
os level = 233
#Determina se este servidor vai ser o principal, neste caso “no” pois #o MASTER e o SAMBA4
domain master = no
#Servidor master preferido, definido como “no”, pois quem e o #PREFERIDO e o SAMBA4
preferred master = no
# Aceita os logons dos clientes
domain logons = no
#Servidor MASTER local definido como “no”, pois o SAMBA4 e o MASTER
local master = no
#Diz ao samba se e ou nao para tentar resolver nomes ntbios atraves do nslookup do dns
dns proxy = no
#Desativa ssl do ldap
ldap ssl = no
#Define um shell valido aos usuarios
template shell = /bin/bash
#Home do usuario ja define onde irao ficar os emails
# Path que sera criado o home de um usuario novo #(/home/DOMINIO/usuario)
template homedir = /home/%D/%U
|
|
|
|
| # Permite acesso apenas da sua rede local, basta substituir o endereco #pelo da sua rede se#hosts allow = 192.168.11., 10.10.10.
#Válida o usuário
valid users = %S
#diz para nao modificar o nome do arquivo enviado
preserve case = yes
#Faz o samba intender letras minusculas como minusculas
short preserve case = yes
|
|
Criado o arquivo de configuração, vamos reiniciar os serviços do Samba e do Winbind:
| # /etc/init.d/samba restart# /etc/init.d/winbind restart |
|
| # net ads join -U administrator -S TUX.ORGEnter administrator’s password:
Using short domain name — TUX
Joined ‘MAIL’ to realm ‘tux.org’
|
|
Colocando a máquina em domínio.
| # wbinfo -tchecking the trust secret via RPC calls succeeded
|
|
Verificando se o Winbind está comunicando com o SAMBA4:
| # wbinfo –uadministrator
guest
anna
clodonil
diego
dns
root
zeh |
|
Listando Usuários que estão cadastrados no SAMBA4:
Utilizaremos shell script para criação dos diretorios HOMEs dos usuários setando suas permissões de acesso, este script foi retirado de “http://www.vivaolinux.com.br/artigo/Postfix-+-AD-%28Active-Directory%29?pagina=9” e editador por mim, você pode fazer as alterações que achar necesseário ao seu ambiente:
| #!/bin/bashclear
echo ” ————————————————————”
#Variveis
######## QUOTAS
TAM=3000000
TAMAX=3000001
ARQ=999
ARQM=1000
#############################################
DOMAIN=”TuX”
CADOMAIN=”/etc/$DOMAIN”
if [ -d $CADOMAIN ] && [ -f $CADOMAIN/local ] ; then
echo ” ————————————————————”
echo
echo ” $DOMAIN, CONFIGURADO CORRETAMENTO, PROCEGUINDO….. “
echo
echo ” ————————————————————”
echo
sleep 3
clear
else
echo ” ————————————————————”
echo ” $DOMAIN, AINDA NAO CONFIGURADO “
mkdir -p $CADOMAIN
#rm $CADOMAIN/*
touch $CADOMAIN/local
echo ” DOMINIO $DOMAIN, SERA CONFIGURADO EM: $CADOMAIN ”
echo
echo ” ARQUIVO LOCAL , SERA CONFIGURADO EM: $CADOMAIN/local ”
echo
#ls -al $CADOMAIN
echo ” ————————————————————”
echo
sleep 3
clear
fi
ARQ_AD=”$CADOMAIN/AD”
ARQ_LOCAL=”$CADOMAIN/local”
ARQ_CRIA=”$CADOMAIN/cria”
ARQ_DELETE=”$CADOMAIN/deleta”
HOME=”/mail”
echo ” ————————————————————”
echo ” ————————————————————”
#Gerando lista de usuáos no AD por ordem alfabéca
echo ” Buscando usuarios no samba4 “
wbinfo -u | grep -v ‘\$’ | sort > $ARQ_AD
echo “Comparando usuarios buscadso com os que já existem e salvando “
#Comparando a lista nova com a lista existente p/ criar users
comm -13 “$ARQ_LOCAL” “$ARQ_AD” > “$ARQ_CRIA”
mail=`cat $ARQ_CRIA`
contador=0
|
|
| ini=`echo $mail | wc -w`
while [ $contador -ne $ini ]
do
contador=`expr $contador + 1`
done
echo ” Existem $contador caixas de email a serem configuradas “
sleep 2
#Criando Diretorio HOME
for i in $(cat $ARQ_CRIA)
do
if [ -d $HOME/$i ]; then
teste(){
echo
echo ” Ja existe a pasta para o usuario $i “
echo ” Desja setar permissoes e cria Maildir? [Ss/Nn] “
read RESPOSTA
case $RESPOSTA in
S|s)
uid=`wbinfo -i $i |awk -F “:” ‘{print $3}’`
gid=`wbinfo -i $i |awk -F “:” ‘{print $4}’`
chown -R “$i”:mail $HOME/”$i”
chown -R “$uid”:”$gid” $HOME/”$i”
setquota -u “$i” “$TAM” “$TAMAX” “$ARQ” “$ARQM” -a $HOME/”$i”
echo ” Criando Maildir do usuario -[ $i ]- com quota de $TAM maximo $TAMAX “
;;
N|n)
echo ” Terminando Processamento “
echo ” Ignorado usuario $i, passando para o proximo “
;;
*) echo ” Opcao Invalida! “
teste
;;
esac
}
teste
else
mkdir $HOME/”$i”
maildirmake $HOME/”$i”/Maildir
uid=`wbinfo -i $i |awk -F “:” ‘{print $3}’`
gid=`wbinfo -i $i |awk -F “:” ‘{print $4}’`
chown -R “$i”:mail $HOME/”$i”
chown -R “$uid”:”$gid” $HOME/”$i”
setquota -u “$i” “$TAM” “$TAMAX” “$ARQ” “$ARQM” -a $HOME/”$i”
echo ” Criando Maildir do usuario -[ $i ]- com quota de $TAM maximo $TAMAX “
echo
fi
done |
|
| echo ” ————————————————————”echo ” Acertando configurações “
echo ” ————————————————————”
echo
#Copiando usuarios novos na base local e ordena alfabeticamente
echo ” Copiando os novos usuarios na base local e ordenando em ordem alfabetica “
cat “$ARQ_CRIA” >> “$ARQ_LOCAL” && cat “$ARQ_LOCAL” | sort > “$ARQ_CRIA” && cat “$ARQ_CRIA” > “$ARQ_LOCAL” && rm “$ARQ_CRIA”
#Comparando a lista existente com a lista nova p/ remover users
echo ” Comparando a lista existente com a nova para remover usuarios inativos “
comm -23 “$ARQ_LOCAL” “$ARQ_AD” > “$ARQ_DELETE”
#Deletando diretorio HOME de usuários inativos
for i in $(cat $ARQ_DELETE)
do
rm -rf $HOME/”$i”
echo ” Deletando usuario -[ $i ]- inativo “
done
echo ” Deleta arquivos antigos e ordenando os novos usuarios “
cat “$ARQ_DELETE” >> “$ARQ_LOCAL” && sort “$ARQ_LOCAL” > “$ARQ_DELETE” && uniq -u “$ARQ_DELETE” > “$ARQ_LOCAL” && rm “$ARQ_DELETE”
echo ” ————————————————————”
echo
|
|
| # getent passwdadministrator:*:10000:10000:Administrator:/home/TUX/administrator:/bin/bash
guest:*:10001:10001:Guest:/home/TUX/guest:/bin/bash
anna:*:10005:10000:anna:/home/TUX/anna:/bin/bash
clodonil:*:10016:10000:clodonil:/home/TUX/clodonil:/bin/bash
diego:*:10002:10000:diego:/home/TUX/diego:/bin/bash
dns:*:10003:10000:dns:/home/TUX/dns:/bin/bash
root:*:10019:10000:root:/home/TUX/root:/bin/bash
zeh:*:10008:10000:zeh:/home/TUX/zeh:/bin/bash
|
|
Testando se o samba está realmente buscando os uasuários do SAMBA4 e puxando se GUIDs e a pasta HOME:
| #finger diegoLogin: diego Name: Diego Pereira Grassato
Directory: /home/MAIL/diego Shell: /bin/bash
Never logged in.
No mail.
No Plan.
|
|
Podemos usar o comando “finger” para mostrar as informações de cada usuário:
Configurando SSHD
Agora vamos testar todo este sistema de autenticação com o aplicativo de acesso remoto a servidores mais utilizado o SSH(Secure Shell), vamos instala-lo e configura-lo:
| #apt-get install openssh-server openssl#vi /etc/ssh/sshd_config
|
|
| #vi /etc/pam.d/sshd#PAM configuration for the Secure Shell service
auth required pam_winbind.so
account required pam_winbind.so
session required pam_winbind.so
password required pam_winbind.so
|
|
Descomentaremos a seguinte linha “UsePAM yes”, que será reponsavél pela busca dos usuários via PAM, agora editaremos o arquivo “sshd” em “/etc/pam.d”:
Reinicie o daemon sshd:
Vamos testar a autenticação:
| #administrator@localhost:~$ pwd/home/TUX/administrator
|
|
OK! Funcionando, agora testaremos se o samba direcionou para o diretório home do usuário:
Direcionado!
| #apt-cache search webmin
webmin – A web-based administration interface for Unix systems.
#apt-get install webmin
|
|
Este é um simples exemplo de sincronização de usuário entre aplicativos, também podemos usar está mesma configuração via modulo PAM_WINBIND a outros aplicativos, agora um exemplo com o software WEBMIN que é usado para administração remota de configurações de servidores via Web, iremos instalar e fazer as configurações necessarias:

No final da instalação ele pedirá algumas informações sobre acesso e usuário administrador, após a instalação acessaremos o webmin via web, pelo “IP+:10000”, autentique com o usuário criado, agora editaremos o modulo PAM responsavél pela busca de usuários do webmin:
| #Webmin web-based administration interface for Unix systemsauth required pam_winbind.so
account required pam_winbind.so
session required pam_winbind.so
password required pam_winbind.so
|
|
Apague seu conteúdo e coloque este:
Agore mudaremos as configurações de autenticação do webmin siga os seguintes passos: “Webmin -> Configuração do Webmin -> Autenticação”, marque as opções “Utilizar autenticação PAM para Unix, se disponível” e “Support full PAM conversations?”, a tela irá ficar mais ou menos assim:
Quando a autenticação de sessão está habilitada, cada sessão de usuário autenticado será acompanhada pelo Webmin, possibilitando que usuário inativos sejam automaticamente desconectados. Tenha em mente que habilitar ou desabilitar autenticação de sessão pode forçar todos os usuário s se autenticarem novamente.
Agora salve as configurações fala logof e tente autenticar com algum usuário que esteje cadastrado no SAMBA4 e voilaaa!!! autenticou!!!
Podemos adicionar um nivél a mais de segurança em nas autenticações de nossos usuários adicionado aos módulos de autenticação o modulo “pam_krb5.so”, assim quando o usuário fazer a autenticação será gerado um ticket de autenticação, segue o exemplo do sshd:
|
|
|
| #vi /etc/pam.d/sshd
# PAM configuration for the Secure Shell service
auth required pam_winbind.so
auth required pam_krb5.so use_first_pass
account required pam_winbind.so
account required pam_krb5.so use_first_pass
session required pam_winbind.so
session required pam_krb5.so use_first_pass
password required pam_winbind.so
password required pam_krb5.so use_first_pass
|
|
|
|
| #ssh administrator@localhost Password:
Last login: Wed Jan 6 00:47:13 2010 from localhost
#administrator@localhost:~$
|
|
Verificando se realmente foi criada as credenciais de autenticação:
| #administrator@localhost:~$ klistTicket cache: FILE:/tmp/krb5cc_10000_SLGN6I
Default principal: administrator@TUX.ORG
Valid starting Expires Service principal
01/06/10 01:18:26 01/06/10 11:18:55 krbtgt/TUX.ORG@TUX.ORG
renew until 01/06/10 11:18:55
#administrator@localhost:~$
|
|
OK! Ele adquiriu os tickets de autenticação relamente!, voçê pode fazer a mesma coisa o com webmin, caso você não queira complicar muito pode usar tando o modulo “pam_krb5.so” enquanto “pam_winbind.so”, o “ pam_krb5.so” é util quando somente se utliza autenticação sem acesso as diretórios correntes do shell da máquina, agora o “pam_winbind.so”, é util na comunicação e busca de informações no SAMBA4 e na montagem dos diretórios pessoais do usuários, claro que aí fica a seu critério, com este tipo de autenticação pode ser utilizado por outros serviços como de ftp, email, login, entre outros.
Gostar disso:
Seja o primeiro a gostar disso post.
Anton disse,
fevereiro 14, 2010 às 5:08 pm
Finalmente eu encontrei alguma informação neste assunto!!! , ao mau eu não falo o portuguease: P, agradável que há um babelfish… Você faz não acontecido falar um bocado do inglês? : P, em minha maneira ao incoperate s4 como um usuário ativo do diretório em minha companhia. e eu tenho algum problema com os permissons nas partes, e o traço entre os usuários do anúncio… Isto está traduzido com o babelfish se você quer saber porque o languange é um bocado estranho às vezes. Agradecimentos para a boa informação!
DIEGO PEREIRA GRASSATO disse,
fevereiro 14, 2010 às 6:14 pm
Qualquer duvida o blog sempre está sendo atualizado, siga tambem
http://www.samba4.com.br.
Any doubt the blog is always being updated, also follow http://www.samba4.com.br.