Vous êtes sur la page 1sur 10

Samba4 integrado com Samba/Winbind e PAM

http://www.nisled.org/index.php?/SAMBA4/Samba4-integrado-com-...

Samba4 integrado com Samba/Winbind e PAM


Escrito pelo Diego Pereira Grassato tamanho do texto Qualifique este item Imprimir E-mail 1958 comentrios
(1 vote)

Neste artigo irei mostrar a integrao do Servio de Diretrios (Active Directory) j nativo no SAMBA4, e sua interpolaridade com outros softwares assim como samba 3.x, postfix, webmin, sshd entre outros softwares, atravs de autenticao 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 padres 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 comunicao entre o Servio de Diretrio (Active Directory) entre aplicativo utilizados no Linux. O Winbind nesta estrutura usado na relao de confiana entre domnios e o samba, neste caso entre domnio configurado no SAMBA4 e o SAMBA3x, assim fazendo a troca de informaes de usurios e servios de rede.

O PAM (Pluggable Authentication Modules, ou Mdulos de Autenticao Plugveis/Modulares) uma biblioteca que permite autenticar usurios em ambientes como GNU/Linux, Unix ou Solaris. A autenticao 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 usurio e a senha, criptografava a senha e comparava o resultado com o armazenados nestes arquivos, se fossem iguais, garantia o acesso mquina se no era regeitado o pedido. A Sun criou o PAM e liberou as especificaes em forma de RFC. Os modulos PAM so divididos em quatro categorias, definindo os tipos diponiveis, no linux, normalmente esto localizados no diretrio /etc/pam.d/. Nestes arquivos, a linha de configurao dada como: auth: Verifica que o usurio realmente quem ele diz que . Pode ser bem simples, pedindo apenas por um nome e uma senha, ou utilizando autenticao biomtrica, por exemplo (como uma impresso de voz, uma imagem da retina ou impresso digital). account: Verifica se o usurio em questo est autorizado a utilizar este servio ao qual ele est se autenticando. Os mdulos aqui podem checar por horrio, dia da semana, origem do login, login simultneo, etc. passwd: Este servio usado quando se deseja mudar a senha. Por exemplo, aqui podem ser colocados mdulos que verificam se a senha forte ou fraca. session: A session fica encarregada de fazer o que for necessrio para criar o ambiente do usurio. 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 mdulo que est associado, alguns control-flag: required: O resultado deste mdulo influncia diretamente o resultado final. Uma falha em um mdulo deste tipo s aparecer para o usurio aps todos os outros mdulos desta classe serem executados. requisite: Se a autenticao do mdulo falhar nega a autenticao imediatamente. sufficient: A falha deste mdulo no implica em falha da autenticao como um todo. Se o mdulo falhar, o prximo da classe executado. Se no houver prximo, ento a classe retorna com sucesso. optional: Os mdulos marcados como optional praticamente no influenciam o resultado da autenticao ele s significante se o mdulo for nico em relao ao servio ou classe.

1. Ambiente:
Para as configuraes mostradas a seguir foi utilizado para base o seguinte ambiente: 2 servidores Linux. Servidor 1: SAMBA4 - Active Directory Livre Dados do servidor: Sistema Operacional: Linux Slackware Ip: 192.168.11.1 Domnio: TUX.ORG Nome: TUX Servidor 2: Ubuntu Server 10.4 Sistema Operacional: Linux Ubuntu Server 10.4

1 de 10

12/05/2012 20:10

Samba4 integrado com Samba/Winbind e PAM

http://www.nisled.org/index.php?/SAMBA4/Samba4-integrado-com-...

Ip: 192.168.11.2 Domnio: TUX.ORG Nome: MAIL.TUX.ORG

A instalao do Samba4 poder ser consultada nesse link (Instalao do Samba4).

2. Configuraes da mquina MAIL


Aps a instalao ser instalado os seguintes pacotes:

O Ubuntu Server 10.4 foi instalado da forma padro com os pacotes minmos e com o OpenSSH.

#apt-get install samba samba-common smbclient smbfs winbind krb5-config krb5-user libpam-krb5 finger quota ntpdate nmap Alguns pacotes foram adicionados para sincronizao de horrio e verificao de rede ntpdate.

2.1 Configuraes
A primeira coisa a ser feita sincronizao da hora da mquina com o servidor, use este comando: #net time set -S tux.org Para agilizar o processo adicione esta linha em /etc/rc.local, toda vez que o micro iniciar ele ir sincronizar o seu horrio. Agora o primeiro passo fazer a configurao do cliente kerberos em /etc/krb5.conf, faa uma backup antes do arquivo original: #mv /etc/krb5.conf /etc/krb5.conf-default Segue contedo do arquivo: #vim /etc/krb5.conf [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 comunicao com o SAMBA4 utilizando Kerberos. #kinit administrator Password for administrator@TUX.ORG: Digite a senha, e vamos testar se ele adquiriu as credenciais: # 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 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 informao requisitada, exatamente como o arquivo /etc/host.conf determina o modo como pesquisas de hosts so executadas. # vi /etc/nsswitch.conf E alterar as linhas: DE: passwd: compat group: compat

2 de 10

12/05/2012 20:10

Samba4 integrado com Samba/Winbind e PAM

http://www.nisled.org/index.php?/SAMBA4/Samba4-integrado-com-...

shadow: compat PARA: passwd: compat winbind group: compat winbind shadow: compat winbind O ambiente est preparado para receber o SAMBA/Winbind.

2.2 Configurando o Samba/Winbind


Vamos fazer backup do arquivo original e depois vamos criaremos o nosso arquivo de configurao: # mv /etc/samba/smb.conf /etc/samba/smb.original # vi /etc/samba/smb.conf [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 servidor password server = * #No 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

3 de 10

12/05/2012 20:10

Samba4 integrado com Samba/Winbind e PAM


winbind cache time = 15 winbind enum users = yes winbind enum groups = yes

http://www.nisled.org/index.php?/SAMBA4/Samba4-integrado-com-...

#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 eleis 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. #Vlida o usurio 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 configurao, vamos reiniciar os servios do Samba e do Winbind: # /etc/init.d/samba restart # /etc/init.d/winbind restart Colocando a mquina em domnio. # net ads join -U administrator -S TUX.ORG Enter administrator's password: Using short domain name -- TUX

4 de 10

12/05/2012 20:10

Samba4 integrado com Samba/Winbind e PAM


Using short domain name -- TUX Joined 'MAIL' to realm 'tux.org' Verificando se o Winbind est comunicando com o SAMBA4: # wbinfo -t checking the trust secret via RPC calls succeeded Listando Usurios que esto cadastrados no SAMBA4: # wbinfo u administrator guest anna clodonil diego dns root zeh

http://www.nisled.org/index.php?/SAMBA4/Samba4-integrado-com-...

Utilizaremos shell script para criao dos diretorios HOMEs dos usurios setando suas permisses 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 alteraes que achar necesserio ao seu ambiente: #!/bin/bash clear 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

5 de 10

12/05/2012 20:10

Samba4 integrado com Samba/Winbind e PAM

http://www.nisled.org/index.php?/SAMBA4/Samba4-integrado-com-...

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 usuos no AD por ordem alfabca 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"

6 de 10

12/05/2012 20:10

Samba4 integrado com Samba/Winbind e PAM

http://www.nisled.org/index.php?/SAMBA4/Samba4-integrado-com-...

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 configuraes " 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 usurios 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

7 de 10

12/05/2012 20:10

Samba4 integrado com Samba/Winbind e PAM

http://www.nisled.org/index.php?/SAMBA4/Samba4-integrado-com-...

Testando se o samba est realmente buscando os uasurios do SAMBA4 e puxando se GUIDs e a pasta HOME: # getent passwd administrator:*: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 Podemos usar o comando finger para mostrar as informaes de cada usurio: #finger diego Login: diego Directory: /home/MAIL/diego Never logged in. No mail. No Plan. Name: Diego Pereira Grassato Shell: /bin/bash

3. Configurando SSHD
Agora vamos testar todo este sistema de autenticao 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 Descomentaremos a seguinte linha UsePAM yes, que ser reponsavl pela busca dos usurios via PAM, agora editaremos o arquivo sshd em /etc/pam.d: #vi /etc/pam.d/sshd #PAM configuration for the Secure Shell service auth required pam_winbind.so pam_winbind.so pam_winbind.so pam_winbind.so

account required session required password required Reinicie o daemon sshd: #/etc/ini.d/ssh restart Vamos testar a autenticao:

#ssh administrator@localhost Password: Last login: Tue Jan 5 22:59:05 2010 from tux.org administrator@localhost:~$ OK! Funcionando, agora testaremos se o samba direcionou para o diretrio home do usurio: #administrator@localhost:~$ pwd /home/TUX/administrator Direcionado! Este um simples exemplo de sincronizao de usurio entre aplicativos, tambm podemos usar est mesma configurao via modulo PAM_WINBIND a outros aplicativos, agora um exemplo com o software WEBMIN que usado para administrao remota de configuraes de servidores via Web, iremos instalar e fazer as configuraes necessarias: #apt-cache search webmin webmin - A web-based administration interface for Unix systems. #apt-get install webmin

8 de 10

12/05/2012 20:10

Samba4 integrado com Samba/Winbind e PAM

http://www.nisled.org/index.php?/SAMBA4/Samba4-integrado-com-...

No final da instalao ele pedir algumas informaes sobre acesso e usurio administrador, aps a instalao acessaremos o webmin via web, pelo IP+:10000, autentique com o usurio criado, agora editaremos o modulo PAM responsavl pela busca de usurios do webmin: #vi /etc/pam.d/webmin Apague seu contedo e coloque este: #Webmin web-based administration interface for Unix systems auth required pam_winbind.so pam_winbind.so pam_winbind.so pam_winbind.so

account required session required password required

Agore mudaremos as configuraes de autenticao do webmin siga os seguintes passos: Webmin -> Configurao do Webmin -> Autenticao, marque as opes Utilizar autenticao PAM para Unix, se disponvel e Support full PAM conversations?, a tela ir ficar mais ou menos assim:

Quando a autenticao de sesso est habilitada, cada sesso de usurio autenticado ser acompanhada pelo Webmin, possibilitando que usurio inativos sejam automaticamente desconectados. Tenha em mente que habilitar ou desabilitar autenticao de sesso pode forar todos os usurio s se autenticarem novamente. Agora salve as configuraes fala logof e tente autenticar com algum usurio que esteje cadastrado no SAMBA4 e voilaaa!!! autenticou!!! Podemos adicionar um nivl a mais de segurana em nas autenticaes de nossos usurios adicionado aos mdulos de autenticao o modulo pam_krb5.so, assim quando o usurio fazer a autenticao ser gerado um ticket de autenticao, segue o exemplo do sshd: #vi /etc/pam.d/sshd # PAM configuration for the Secure Shell service auth auth required required pam_winbind.so pam_krb5.so use_first_pass pam_winbind.so pam_krb5.so use_first_pass pam_winbind.so pam_krb5.so use_first_pass pam_winbind.so pam_krb5.so use_first_pass

account required account required session required session required password required password required Testando o SSH

#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 autenticao: #administrator@localhost:~$ klist Ticket 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

9 de 10

12/05/2012 20:10

Samba4 integrado com Samba/Winbind e PAM

http://www.nisled.org/index.php?/SAMBA4/Samba4-integrado-com-...

renew until 01/06/10 11:18:55 #administrator@localhost:~$ OK! Ele adquiriu os tickets de autenticao realmente!, vo pode fazer a mesma coisa o com webmin, caso voc no queira complicar muito pode usar tando o modulo pam_krb5.so enquanto pam_winbind.so, o pam_krb5.so util quando somente se utliza autenticao sem acesso as diretrios correntes do shell da mquina, agora o pam_winbind.so, util na comunicao e busca de informaes no SAMBA4 e na montagem dos diretrios pessoais do usurios, claro que a fica a seu critrio, com este tipo de autenticao pode ser utilizado por outros servios como de ftp, email, login, entre outros.

10 de 10

12/05/2012 20:10