Ir para o conteúdo
ou

Software livre Brasil

0 comunidades

Nenhum(a)

Tela cheia
 Feed RSS

Blog

27 de Maio de 2009, 0:00 , por Software Livre Brasil - | Ninguém está seguindo este artigo ainda.

Servidor de Arquivo e Autenticação – Integração Perfeita entre Gosa (LDAP) e SAMBA

15 de Junho de 2009, 0:00, por Software Livre Brasil - 22 comentários

Servidor de Arquivo completo

Para instalar o servidor do Samba é necessário que os seguintes pré-requisitos estejam instalados.

Pré-requisitos:

Para aqueles que estão começando agora, definiria o SAMBA como sendo um servidor de autenticação de desktop Windows na rede. Claro que essa é uma definição bem superficial levando em consideração os recursos que o SAMBA tem, por outro lado, a grande maioria usa o SAMBA realmente para fazer isso, autenticar e armazenar arquivos de usuários do Windows.

Com o SAMBA é possível compartilhar recursos entre maquinas UNIX/Linux e Windows. Neste artigo vamos ficar mais focado na parte de autenticação, fazendo o Samba funcionar como um verdadeiro PDC.

1. LDAP

Vamos começar a configuração do SAMBA pelo LDAP. Já escrevi um post que mostra como instalar e configurar o LDAP e o GOsa. Leia este artigo e configure o GOsa e LDAP antes de continuar a configuração.

Com o LDAP e GOsa instalado, vamos precisar que o sistema Linux reconheça os usuários cadastrados na base LDAP. É procedimento é necessário para atribuir permissões para os usuários da base LDAP.Caso você queira utilizar cota, só é possível habilitando o usuário LDAP juntamente com os usuários do sistemas.

Para que isso aconteça é preciso instalar um pacote chamado libnss-ldap e configurar o arquivo /etc/nsswitch.conf. O comando a seguir faz a instalação.

[root@cabeca]#apt-get install libnss-ldap

 Durante a instalação, o sistema vai solicitar algumas informações sobre a base LDAP, tais como endereço, usuário de administração. Todas essas informações são gravadas dentro do arquivo /etc/ldap.conf. Segue um modelo do arquivo, altere conforme as suas configurações.

  • /etc/ldap.conf

base dc=trigo
uri ldap://localhost
ldap_version 3
binddn cn=manager,dc=trigo
bindpw x
rootbinddn cn=manager,dc=trigo
pam_password md5

 O próximo passo é fazer o sistema Linux ir buscar os usuários também na base LDAP. Para isso é necessário que seja alterado o arquivo /etc/nsswitch.conf. Segue a forma como o arquivo deve ficar.

  • /etc/nsswitch.conf

passwd:		files	ldap
group:		files	ldap
shadow:		files	ldap

 No arquivo nsswitch está definido que os usuários serão pesquisados primeiramente no arquivo local (/etc/passwd, /etc/group,/etc/shadow) e caso não encontre este usuário, o mesmo será pesquisado na base LDAP. Para testar se tudo está funcionando de acordo, execute o comando getent e olhe se os usuários da base LDAP estão sendo listados também.

[root@cabeca]#  getent passwd

 Se o comando listar os usuários da base LDAP, o sistema está pronto para receber o SAMBA.

2. Criação de Usuários pelo GOsa

Antes da criação do usuário no sistema GOsa, vamos preparar o ambiente para a criação do diretório home do usuário no sistema de arquivo. Esse procedimento para criar o usuário é feito através de um script que é executado pelo GOsa na hora da criação do usuário. É importante frisar que é possível colocar outras tarefas nesse arquivo, tais como definição de quotas.

Como o script é executado pelo GOsa, é necessário dar permissão de administrador para o usuário do apache para executar esse script. Se não fizer isso não será possível a criação dos diretórios. Altere o arquivo /etc/sudoers, como definido a seguir.

  • /etc/sudoers
    www-data	ALL=(ALL) NOPASSWD:ALL

Com a configuração do sudo pronta, vamos configurar o GOsa para executar o script "create_user.sh" toda vez que um usuário for criado e "delete_user.sh" toda vez que um usuário for apagado do GOsa.

  • /etc/gosa/gosa.conf

Altere o arquivo gosa.conf, acrescentando a linha abaixo no plugin do posixAccound. Este plugins já existe no arquivo, é preciso apenas completar a linha com as variáveis postcreate e postremove.

<plugin acl="default" class="posixAccount" icon="posix.png" path="plugins/personal/posix" postcreate="/usr/bin/sudo /etc/gosa/create_user.sh %uid" 
postremove="/usr/bin/sudo /etc/gosa/delete_user.sh %uid">
</plugin>

 A seguir estão os dois scripts que serão executados pelo GOsa. Lembre-se de criá-los no diretório /etc/gosa/.

  • create_user.sh

#!/bin/bash
HOME=$(getent passwd $1| sed -n -e /^$1:x:[[:digit:]]*:[[:digit:]]*:.*:\(.*\):.*/{s//\1/;p;q;})
if [[ -d $HOME ]]; then
        exit 1
fi
GROUP=$(getent passwd $1| sed -n -e /^$1:x:[[:digit:]]*:\([[:digit:]]*\):.*/{s//\1/;p;q;})
mkdir $HOME
chown $1:$GROUP $HOME

 

  • delete_user.sh

     

#!/bin/bash
HOME=$(getent passwd $1| sed -n -e /^$1:x:[[:digit:]]*:[[:digit:]]*:.*:\(.*\):.*/{s//\1/;p;q;})
if [[ -d $HOME ]]; then
     rm -rf $HOME
fi

 3. Recursos do GOsa

Com o Gosa instalado e os scripts para criar os diretórios funcionando, vamos criar os usuários no GOsa. O Processo é bem simples. Na tela iniciar como mostra a figura 1, acesse o ícone "Create User".

Figura – Browser de usuários

Em seguida uma tela com o cadastro do usuário é aberto. A primeira tela de cadastro é sobre informações gerais do usuário. Preencha com cuidado os campos "last name","first name", "login", como mostra a figura 2. Também é possível enviar uma foto.

Figura 2 – Informações gerais sobre o usuário

Com as informações gerais criadas, click na aba "UNIX" para criar a conta Unix deste usuário. Preencha as informações tomando cuidado para a opção "Home Directory" que será o diretório do usuário. Para este exemplo estamos criando dentro do diretório /home/arquivos, como mostra a figura 3. Verifique se o diretório "arquivos" existe dentro do diretório home. Nesta aba também é possível definir os grupos de trabalho. Lembrando que os usuários que estiverem dentro do grupo "Domain Admins" podem colocar as máquinas no domínio.

Figura 3 – Criação da conta UNIX

Após a criação da conta "UNIX", click na aba "SAMBA" para criar a conta do SAMBA. Mude a unidade de rede para L:. Olhe as propriedades de travar conta de usuário, data para trocar senhas, como mostra a figura 4.

Figura 4 – Criação da conta SAMBA

Ao termino da configuração click na opção "SAVE" e o sistema vai solicitar a senha do usuário.

  • Template

A criação dos template é um facilitador para a criação das contas dos usuários. As permissões, grupos e propriedades são automaticamente passados para os usuários. Par criar um novo template, click no ícone "Create New Template" no browser de usuário, como mostra a figura 5.

Figura 5 – Criação do template

A próxima tela é para definir o nome do template e algumas propriedades gerais, como mostra a figura 6.

Figura 6 – Definição do nome do template

Para criar a conta UNIX, click na aba "UNIX" e defina as propriedades do usuário. Perceba que no campo "Home Directory" ficou com o valor "/home/arquivos/%uid", como mostra a figura 7. No lugar do %uid vai entrar no login do usuário quando um novo usuário for criado utilizando este template.

Figura 7 – Criação da conta UNIX pelo template

Na aba "SAMBA" crie a conta geral do SAMBA, como mostra a figura 8.

Figura 8 – Criação da conta SAMBA do Template

Ao criar um novo usuário, o GOsa vai perguntar em qual template será criado e todas as propriedades serão passada ao usuário evitando erros, como mostra a figura 9.

Figura 9 – Criação de usuário pelo Template

O GOsa trabalha com ACLs, portanto você pode definir quais usuários podem criar outros usuários, quais podem alterar a senha e assim por diante.

Com o GOsa e os usuário criados, vamos passar para a configuração do SAMBA.

4. Configuração do Samba

O arquivo de configuração do SAMBA tem uma particularidade bem interessante. Todas as configurações ficam dentro de um contêiner que inicia com uma palavra entre "[ ]". Todos as seções que abre com "[ ]" são compartilhamentos criados, exceto o primeiro que é o global que define toda a configuração para o servidor. Antes de começar a configuração vamos fazer a instalação do SAMBA.

[root@cabeca]# apt-get install samba

A seguir temos um arquivo de configuração do samba, este arquivo está bem completo e pode ser utilizado para um servidor em produção, após alguns ajustes de acordo com a sua necessidade.

  • /etc/samba/smb.conf

A seguir temos o arquivo smb.conf que é o arquivo de configuração do SAMBA, por questão didática, colocamos os comentários do comando logo a frente do comando, e todos os parâmetros que estão em negrito devem ser alterados de acordo com a sua configuração. Este arquivo de configuração está configurado para um cenário que tem vários usuários acessando o servidor e tem um compartilhamento chamado "GERAL" para gravar arquivos em comuns. Os profiles dos usuários ficarão no servidor e quando o usuário realizar o login no Windows será executado um script que vai ajustar à hora do computador de acordo com o servidor e fazer o mapeamento do geral.

O arquivo smb.conf a seguir está todo colorido bem carnavalesco, coloquei desta forma para agrupar os parâmetros afim.

[global]

#Abre a seção da configuração Principal.

netbios name = BACULO

#Esta função define o nome da máquina na rede Windows.

workgroup = BACULO.NET

#Define o grupo que a mais vai estar no windows ou o domíno.

server string = Servidor de Arquivos e Autenticao

#Descrição sobre o servidor Samba

name resolve order = lmhosts wins bcast

#Essa opção define a ordem que será utilizado para resolver nome/IP

map to guest = Bad User

#Define que a conta guest vai ser usada na rede (lembre-se de

#liberar o "guest ok =yes" nos compartilhamentos que guest terá

#acesso

guest account = nobody

#Define qual usuário do unix será usando como guest

null passwords = No

#Permite ou não um usuário acessar a conta com a senha em branco.

security = user

#Define que a segurança vai ser por usuário autenticado.

encrypt passwords = Yes

#Samba vai aceitar cryptografia. WinNT 4.0 SP3 e superiores

update encrypted = Yes

 

interfaces = eth0 192.168.10.0/24

#Especifica a interface de rede que o samba vai trabalhar, se forem

#todas as interfaces, comente essa opção. É possível também

#especificar a rede.

passwd chat = *New*password* %n\n *Retype*new*password* %n\n *passwd:*all*authentication*tokens*updated*successfully*

#Habilita alteração de senha pelo windows.

passwd program = /usr/sbin/smbldap-passwd %u

#Programa para alterar a senha

log level = 1

#Habilita o nível de debug

syslog = 1

#Mapeia o log para ser registrado pelo syslog

log file = /var/log/samba/%m.log

#Define que os logs serão feitos por nome da maquina (%m).

printcap name = /etc/printcap

#Define o arquivo de configuração da impressora. Se estiver usando

#cups mude essa opção.

max log size = 100000

#Tamanho máximo do arquivo de log (Kilobytes)

time server = yes

#O samba passa a ser um servidor de Time para as máquinas Windows

os level = 200

#Este parâmetro define o nmbd master da rede. Maior número

local master = Yes

#Define que o servidor poderá se tornar o servidor master da rede

domain master = Yes

#Este parametro trocar o workgroup em um domínio

preferred master = Yes

#Define que o servidor de preferencia na eleição de domínio na rede

domain logons = Yes

#Este parâmetro permite que maquina win9x tenha netlogon no domínio

logon script = logon.vbs

#Define o script que vai ser executado na hora do login.

logon path = \\BACULO\profiles\%U

#Define o local de armazenamento do perfil

logon drive = L:

#Define a letra da únidade do HOME

wins support = Yes

#O Samba passa a ser o servidor Wins da Rede

admin users = "@Domains Admins",root

#Define os usuários/grupos que serão os administradores do domínio

ldap passwd sync = Yes

#Permite que sincronizar a senha do Samba com NT e LM hash, quando

#a senha for alterada pelo windows.

ldap delete dn = No

#Não permitir que o samba apague o usuário. Somente o Gosa faz

#isso.

passdb backend = ldapsam:ldap://localhost

#Configurações do servidor LDAP

ldap admin dn = cn=Manager,dc=trigo

#Define o administrador da base LDAP

ldap suffix = dc=trigo

#Define o suffix da base LDAP

ldap ssl = no

#Define se o LDAP está com SSL ou não

ldap user suffix = ou=people

#Define o suffix que ficarão os usuários

ldap group suffix = ou=groups

#Define o suffix que ficarão os grupos

ldap machine suffix = ou=computers

#Define o suffix que ficarão as contas dos computadores

ldap idmap suffix = ou=Idmap

#Define o suffix que ficarão os idmaps para o winbind

ldap replication sleep = 5000

#Valor em milisegundos

add machine script = /usr/sbin/smbldap-useradd -a -w %m

#Script para criar maquina no LDAP

recycle:exclude = *.tmp *.temp *.o *.obj ~$*

#Define os arquivos que não serão gravados na lixeira

recycle:keeptree = Yes

#Cria diretório dos arquivos deletados, fica mais organizado

recycle:touch = Yes

#Se a data do arquivo eliminado pode ser trocado pela data da

#exclusão. Muito útil para limpar a lixeira

recycle:versions = Yes

#Permite fazer backup de versão de arquivos repetidos

recycle:noversions = *.doc|*.xls|*.ppt|*.dwg|*.dxf|*.txt

#Não faz backup dessas extensões de arquivo

recycle:repository = /home/lixeira/%U

#Local que vai ser armazenado os arquivos deletados

recycle:maxsize = 1000000

#Define em bytes o tamanho máximo de um arquivo que vai encaminhado

#para a lixeira. O valor zero é sem limite.

vfs objects = recycle audit

#Habilita o modulo de lixeira e o sistema de auditoria

default case = lower

#Usa internamente caixa baixa

case sensitive = no

#Desabilita o case sensitive

unix charset = iso8859-1

#Define o charset do UNIX que vai ser mostrada no compartilhamento

display charset = iso8859-1

#Define o charset que irá utizar para imprimir as mensagens, o

#padrão é utizar o valor do "LOCALE", ou você pode definir.

fstype = NFS

 

idmap uid = 10000-15000

#Mapeamento de uid para o idmap winbind

idmap gid = 10000-15000

#Mapeamento de gid para o idmap winbind

nt acl support = Yes

#Habilita o suporte de acl do net. Lembre-se de ativar partição

protocol = NT1

 

announce as = NT Server

#Define o tipo de servidor que vai anunciar o nmbd

announce version = 4.5

#Define a versão do servidor

template shell = /bin/false

#Desabilita o shell, no preenchimento das informações pelo winbnind

set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"

#Script que define o grupo principal de cada usuário.

winbind use default domain = no

#Define que não vai usar idmap para os usuários

read raw = Yes

#Habilita pacotes de 65.535 bytes, alguns clientes não conseguem

#suportar essa negociação.

write raw = Yes

#Habilita o raw write quando os dados são transferidos do cliente

Level2 oplocks = yes

#Aumenta o acesso aos arquivos que não são escritos, tais como exe

max xmit = 65535

#Determina o tamanho máximo de um pacote que será negociado pelo

#samba. O valor 65535 é o maior.

dead time = 15

#Valor decimal que representa o número de minuto inativo para

#considerar que a conexão esta morta de desconectar.

getwd cache = Yes

#Essa é uma refinamento na performace. Ativa um algoritmo de

#caching o que reduzir o tempo necessário para getwd().

socket options = IPTOS_LOWDELAY TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 SO_KEEPALIVE=100

#Opção para inicialização do socket

[homes]

#Cria o compartilhamento Home

comment = Diretório Home

#Comentário sobre o compartilhamento

valid users = %S

#usuário que pode acessar o compartilhamento. Apenas o dono (%S)

browseable = no

#Indica que a diretória não aparece ao fazer o network browse

writeable = yes

#Mostra o compartilhamento

printable = no

#Habilita a opção de impressão(impressora) no compartilhamento

read only = no

#Define que o compartilhamento não é somente leitura

available = yes

#Define que o compartilhamento esta disponível.

inherit permissions = yes

#Herda permissão de arquivos e diretório do diretório home

follow symlinks = no

#Desabilita o acesso a links

wide links = no

#Define se os arquivos com links fora do diretório serão acessados

force directory mode = 0771

#Força a permissão dos diretórios

force create mode = 0771

#Força a permissão dos arquivos

force group = administrators

#Força que o grupo seja administradores

create mode = 0771

#Define a permissão que será aplicada ao criar um arquivo

directory mode = 0771

#Define a permissão que será aplicada ao criar um diretório

map archive = yes

#Habilita os mapeados de bits do dos para UNIX quando um arquivo é

#modificado.

map system = no

#Define se o estilo do DOS vai ser mapeado para execução UNIX

map hidden = no

#Define se o estilo do DOS para arquivos ocultos vai ser mapeado

#para UNIX

[Geral]

#Compartilhamento Geral

comment = Area Publica para todos

#Comentário sobre o compartilhamento

path = /home/arquivos/geral

#Caminho do diretório que será utilizado como geral

browseable = Yes

#Indica que a diretória aparece ao fazer o network browse

public = Yes

#Torna o compartilhamento público

[netlogon]

#Compartilhamento que ficarão os script para execução

comment = NetLogon Script

#Comentário sobre o compartilhamento

path=/etc/samba/netlogon

#Diretório que ficarão os scripts

public = no

#Não é um compartilhamento público

browseable = no

#Indica que a diretória não aparece ao fazer o network browse

read only = yes

#Define o compartilhamento como somente leitura

printable = no

#Não habilita a opção de impressão(impressora) no compartilhamento

Level2 oplocks = yes

#Aumenta o acesso aos arquivos que não são escritos, tais como exe

write list = "@Domains Admins"

#Define o grupo que pode escrever no compartilhamento

[profiles]

#Compartilhamento para armazenar os profiles dos usuários

comment = Network User Profiles

#Comentário sobre o compartilhamento

path = /home/profiles

#Diretório que ficarão os profiles

read only = no

#Define que o compartilhamento não é somente leitura

create mask = 0700

#Define a permissão para arquivos criados

directory mask = 0700

#Define a permissão para diretórios criados

Browserable = no

#Indica que a diretória não aparece ao fazer o network browse

 Pegue o arquivo smb.conf limpo.

Após fazer a configuração do arquivo smb.conf, vamos ajustar os compartilhamentos do netlogon e do profile.

  • Netlogon

O compartilhamento netlogon é criado para executar um script na hora do login da máquina na rede. O parâmetro "logon script" do smb.conf define como vai ser o script de logon e o nome. Em nosso caso estamos utilizando apenas um script para todos os usuários, e este script tem o nome de "logon.vbs". Tem caso que é necessário executar um script por usuário ou por grupo.

Crie o arquivo logon.vbs dentro do "/etc/samba/netlogon", se não existir a diretório netlogon, deve ser criado. Lembre-se de criar este arquivo no Windows porque ele é executado no Windows. Se fizer no Linux pode dar algum tipo de erro.

  • /etc/samba/netlogon/logon.vbs

' VBScript.
'WScript.Echo(Mapeando...)
Dim net
Set objShell = CreateObject(Wscript.Shell)
Set net = CreateObject(WScript.Network)
net.MapNetworkDrive g:, \\BACULO\geral, False
objShell.Run net time \\BACULO /set /y, 0, TRUE

 Para o Windows alterar a hora, é preciso alterar o GPO do XP para permitir os usuários altere as datas.

  • Profiles

No compartilhamento profiles ficam todos os perfis dos usuários. Crie o diretório "/home/profiles" caso não exista.

Após essas configurações, é testar os parâmetros do SAMBA e em seguida passar a senha do administrador do LDAP (no nosso exemplo é o cn=mananger,dc=trigo) para o samba.

[root@cabeca]# testparm

 

Se não aparecer nenhum erro, continue.

[root@cabeca]# smbpasswd -w senha_do_manager<br />
  • Lixeira

Para o funcionamento da função lixeira, é preciso criar o diretório /home/lixeira e mudar a permissão para permitir que os arquivos apagados sejam encaminhados para o diretório definido.

[root@cabeca]# mkdir /home/lixeira 
[root@cabeca]# chmod 777 /home/lixeira

 Os usuários não terão acesso diretamente aos arquivos apagados.

  • Auditoria

Para ativar o sistema de auditoria nas pastas, é necessário acrescentar a seguinte entrada no /etc/syslog.conf.

.*;user.!warn;authpriv.none;cron.none;mail.none;news.none   /var/log/samba/audit.log

 

Crie o arquivo /var/log/samba/audit.log. Neste arquivo que ficarão os logs da auditoria nas pastas.

[root@cabeca]# touch /var/log/samba/audit.log

 Agora podemos iniciar o samba.

[root@cabeca]# /etc/init.d/samba restart

 5. Adicionando Windows no domínio Samba

Com todas as configurações prontas, vamos colocar uma maquina no domínio e fazer os testes. Com o arquivo smb.conf acima foi possível fazer alteração de senha pelo Windows , recuperar arquivos apagados através da lixeira, armazenar o perfil dos usuários no servidor.

A figura 10 mostra o Windows XP entrando no domínio. A conta da máquina é criada automaticamente na base LDAP.

Figura 10 – Windows entrando no domínio

Com a máquina no domínio, os usuários cadastrados na LDAP podem fazer login e o mapeamento da unidade home e do compartilhamento Geral devem ser feitos. A sincronização da hora com o servidor também deve ser feito no login.

  • Mapeamento

    Figura 11 – Mapeamento

Agora temos um servidor de autenticação completo.



Treinamento de OpenLDAP – Uma abordagem Integrada

28 de Maio de 2009, 0:00, por Software Livre Brasil - 0sem comentários ainda

Instrutor: Clodonil Honorio Trigo

INSCREVA-SE AGORA

 

Domine definitivamente o LDAP e integre a sua rede usando apenas uma ferramenta.

Pré-requisitos:

  • Conhecimento básico de Linux

Metodologia:

  • Curso é oferecido à distância utilizando o ambiente virtual Moodle, com disponibilidade de 99,99%;
  • Aulas pelos chat na segunda e quarta-feira das 14h às 17h (logs);
  • Utilização obrigatória no fórum do Moodle;
  • Exercícios de validação;

Material didático:

  • Apostilas;
  • Livro: OpenLDAP – Uma abordagem Integrada;
  • CDROM – UBUNTU SERVER;
  • Vídeo Aulas com as implementações;
  • Arquivos de Configurações;

Suporte: Durante o curso é oferecido os seguintes suporte:

  • MSN
  • EMAIL
  • Fórum (Moodle)
  • Voip (skype)

Duração do curso: 6 semanas Datas:

  • Início da Inscrição: 10/05/2009
  • Início do curso: 01/07/2009
  • Vagas: 10 vagas
  • Valor: R$ 840,00 
  • Mais informações: clodonil@nisled.org, clodo_trigo@hotmail.com

Conteúdo programático:

  •   1. Semana
    • Conceitos de Diretórios
    • Estrutura do LDAP
    • Instalação do OpenLDAP
    • Definição e conceitos sobre os esquemas
  •   2. Semana
    • Configuração do OpenLDAP
    • OpenLDAP configurado com SSL
    • Réplicas da base LDAP
    • Comandos do OpenLDAP

  •   3. Semana
    • Gerenciador do LDAP – GOSA
    • Jabber (MSN) com LDAP
  •   4. Semana
    • Proxy (squid) com LDAP
      • Autenticação por usuário
      • Controle de sites por grupos de usuário
      • Relatório
    • Gerenciando DNS pelo LDAP

  •   5. Semana
    • Servidor de Email (Postfix) com LDAP
      • WEBMAIL
      • IMAP e POP
    • Autenticação Linux pelo LDAP

  •   6. Semana
    • SAMBA 3x com LDAP
    • Preview do Samba4

 

 Certificado: O certificado será emitido pelo Centro Universitário Adventista de São Paulo com a carga horária de 70 hs para aqueles que participarem dos fóruns e realizarem as atividades proposta.

Sobre Instrutor: Clodonil Honório Trigo  Professor  no  Centro  Universitário Adventista de São Paulo – UNASP, onde graduou-se em Matemática,  e  especializou-se  em  Administração  de  Redes  Linux  e  em Didática. Mestre pela  Universidade Metodista  de  Piracicaba-  UNIMEP,  é  ainda  especialista em  sistemas  operacionais  em software  livre,  tendo  publicado artigos  para  revistas  especializadas. Atuou como consultor de Linux e  participou  como  palestrante convidado em várias edições do Congresso  Internacional de Software  Livre  realizado  em  Porto Alegre – RS. Coordena  o  Grupo  de  Pesquisa  Free-Soft  e  o Núcleo de  Informática  em  Software  Livre Aplicado no Ensino à Distância – NISLED (www.nisled.org). Autor dos livros:  Projetos de Segurança em Software Livre e OpenLDAP – Uma abordagem Integrada.

INSCREVA-SE AGORA



GOsa-2.6.x – Gerenciador de Sistemas OpenLDAP (Centralizador)

25 de Maio de 2009, 0:00, por Software Livre Brasil - 66 comentários

Como já falei em outros artigos, o GOsa é uma ótima ferramenta para administração de contas de usuários no LDAP. Além de ter uma interface agradável, os recursos presente na ferramenta auxiliam os administradores de rede. Neste artigo pretendo mostrar a instalação completa do GOsa-2.6.x (combined).

Antes de instalar o GOsa, vamos instalar o pré-requisitos necessários do sistema. Como ponto de partida, será utilizado um Linux Ubuntu 9.04 pré-instalado.

  1. Instalando o Apache2 e PHP5
    Como o GOsa funciona via WEB, vamos primeiramente instalar o apache e o PHP5.


    Após a instalação teste em um browser de internet se o apache está funcionando. O próximo passo é instalar o OpenLDAP.

  2. Instalando o LDAP
    Vamos utilizar o pacote do ubuntu para instalar o LDAP. Portanto instale o slapd e ldap-utils.



    Não fique preocupado com as informações que são requeridas durante a instalação do slapd. Todas essas informações serão rescritas nas configurações que faremos. Para configurar o LDAP vamos precisar dos schemas do GOsa. Portanto faça o download do pacote no site http://oss.gonicus.de/pub/gosa/ ou você também pode pegar as últimas atualizações através do subversion.

    É recomendável fazer o download do GOsa pelo subversion porque pega as últimas atualizações.

     

    Se você optar fazer o download do pacote "tar.gz", utilize a versão 2.6.x da versão combined. Após fazer o download descompacte o GOsa dentro do diretório /usr/share/. E crie um link simbólico para /usr/share/gosa. O mesmo procedimento deve ser feito tanto para quem fez o download do GOsa pelo subversion ou pelo download do "tar.gz".

    Segue abaixo o código que realiza essas tarefas:  

     

    Copie os arquivos de schema que estão dentro do diretório /usr/share/gosa/contrib/openldap para dentro do /etc/ldap/schema.  

     

    Com os schemas copiados vamos configurar o arquivo slapd.conf.  

  • /etc/ldap/slapd.conf

    Por padrão o Ubuntu trás o slapd com a configuração online. Para tirar essa opção e fazer a configuração manual utilizando o arquivo slapd.conf, teremos primeiramente que parar o slapd, apagar o diretório /etc/ldap/slapd.d e editar o arquivo /etc/default/slapd acrescentando ao path do arquivo de configuração dentro da variável SLAPD_CONF.

    Configure o slapd.conf conforme abaixo altere o domínio e as senhas.

     

    include         /etc/ldap/schema/core.schema
    include         /etc/ldap/schema/cosine.schema
    include         /etc/ldap/schema/inetorgperson.schema
    include         /etc/ldap/schema/openldap.schema
    include         /etc/ldap/schema/nis.schema
    include         /etc/ldap/schema/misc.schema
    include         /etc/ldap/schema/samba3.schema
    include         /etc/ldap/schema/gosystem.schema
    include         /etc/ldap/schema/gofon.schema
    include         /etc/ldap/schema/goto.schema
    include         /etc/ldap/schema/goserver.schema
    include         /etc/ldap/schema/gosa-samba3.schema
    include         /etc/ldap/schema/trust.schema
    password-hash           {CRYPT}
    defaultsearchbase       dc=trigo
    pidfile  /var/run/slapd/slapd.pid
    argsfile /var/run/slapd/slapd.args
    loglevel        1024
    modulepath      /usr/lib/ldap
    moduleload      back_hdb
    moduleload      back_monitor
    access to dn.base=&quot;"
            by * read
    access to dn.subtree=cn=Monitor
            by * read
    access to attrs=userPassword,sambaPwdLastSet,sambaPwdMustChange,sambaPwdCanChange \
                   ,shadowMax,shadowExpire
            by dn.regex=&quot;uid=[^/]+/admin\+(realm=TRIGO)?&quot; write
            by anonymous auth
            by self write
            by * none
    access to attrs=goImapPassword
            by dn.regex=&quot;uid=[^/]+/admin\+(realm=TRIGO)?&quot; write
            by * none
    access to attrs=goKrbPassword
            by dn.regex=&quot;uid=[^/]+/admin\+(realm=TRIGO)?&quot; write
            by * none
    access to attrs=goFaxPassword
            by dn.regex=&quot;uid=[^/]+/admin\+(realm=TRIGO)?&quot; write
            by * none
    access to attrs=gotoLastUser
            by * write
    access to attrs=sambaLmPassword,sambaNtPassword
            by dn.regex=&quot;uid=[^/]+/admin\+(realm=TRIGO)?&quot; write
            by anonymous auth
            by self write
            by * none
    access to *
            by dn.regex=&quot;uid=[^/]+/admin\+(realm=TRIGO)?&quot; =wrscx
            by * readdatabase        monitor
    database        hdb
    cachesize		5000
    mode            0600
    suffix          &quot;dc=trigo&quot;
    checkpoint      512 720
    rootdn  &quot;cn=manager,dc=trigo&quot;
    rootpw  x
    index   default                                      		 sub
    index   uid,mail                                          	 eq
    index   gosaSnapshotDN                                   	 eq
    index   gosaSnapshotTimestamp                           	 eq,sub
    index   gosaMailAlternateAddress,gosaMailForwardingAddress 	 eq
    index   cn,sn,givenName,ou                               	 pres,eq,sub
    index   objectClass                                        	 pres,eq
    index   uidNumber,gidNumber,memberuid                      	 eq
    index   gosaSubtreeACL,gosaObject,gosaUser            		 pres,eq
    index   member                                           	 pres,eq
    index   sambaSID                                       		 eq
    index   sambaPrimaryGroupSID                              	 eq
    index   sambaDomainName                              		 eq
    directory       &quot;/var/lib/ldap&quot;
    lastmod on

     

Para testar inicie o servidor LDAP em modo debug. Se existir algum erro a linha que contém o erro será mostrada.

Se nenhum erro for apresentado, você já pode iniciar o LDAP da forma tradicional

  1. Gosa

Após a instalação do OpenLDAP vamos começar a instalar o GOsa. Lembrando que descompactamos toda a ferramenta dentro do diretório /usr/share/gosa. Crie os seguintes diretórios:

  • /var/spool/gosa (Coloque o usuário do apache como dono deste diretório)
  • /etc/gosa

Instale os seguintes módulos do PHP:

  • Suporte ao LDAP (php5-ldap)
  • Suporte ao Mshash (php5-mhash)
  • Suporte ao IMAP (php5-imap)
  • Suporte ao Mysql(php5-mysql)
  • fping
  • libcrypt-smbhash-perl
  • Imagick (php5-imagick)

A configuração que temos que fazer no apache é criar um alias do gosa apontando no /usr/share/gosa/html.

Alias /gosa /usr/share/gosa/html

Acrescente a linha acima no arquivo "/etc/apache2/sites-enabled/000-default". Também é necessário alterar alguns parâmetros do php.ini, para isso altere o arquivo /etc/php5/apache2/php.ini, conforme o exemplo abaixo.

 

register_globals = Off
session.gc_maxlifetime = 86400
session.auto_start = Off
memory_limit = 32 M
implicit_flush = Off
max_execution_time = 30
expose_php = Off
magic_quotes_gpc = On
zend.ze1_compatibility_mode = Off

 

Após as configurações reinicie o apache  

 

Antes de acessar o site pelo browser, temos que rodar o comando "update-gosa" para o gosa fazer os devidos updates. Dentro do diretório "/usr/share/gosa", execute o seguinte comando

  1. Instalação pelo browser

    Acesse o browser e termine a instalação; utilize as telas abaixo para se guiar. Ao iniciar o browser chame o endereço do servidor apache (http://ip-do-servidor/gosa). A primeira tela que deverá aparecer é a tela1. Nesta tela podemos destacar como característica a preocupação dos criadores do GOsa com a segurança. Para continuarmos a instalação é necessário copiar a chave especifica e colocar no /tmp.

Tela1 – Inicio da instalação

Na segunda tela o usuário terá a opção de escolher o idioma que desejar usar. Não existe em português. A Seguinte expressa à licença de uso do software. A tela 4, é uma checagem dos pré-requisitos. Todas as opções requeridas devem ser atendidas. Nos pré-requisitos que descrevi anteriormente, estes itens já são instalados.

Tela4 – Checagem de pré-requisitos

A tela seguinte (tela5) também é um método de checagem de arquivos schema. Caso apareça algum erro, deve ser resolvido antes de continuar a instalação.

Tela 5 – Checagem de schemas

Na tela 6, o usuário tem que configurar a conexão com o servidor LDAP. Defina um usuário que tenha permissão de administrador na base LDAP. De acordo a configuração feita, este usuário é o cn=manager

Tela 6 – Administrador da base LDAP

Nas telas seguintes, são definidas o timezone e os aditivos de serviços que o GOsa vai suportar, tais como DNS, DHCP, entre outros. Nas telas seguintes é necessário definir as entradas de usuário e grupos, além da criptografia utiliza. Também é necessário configurar as principais funcionalidades do GOsa tais como, sessão, debug e gid, como mostra a Tela 7.

Tela 7 – Funcionalidades do GOsa

A tela seguinte é muito importante. O GOsa reorganiza todas os objetos cadastrados na base LDAP. É também cadastra o usuário  administrador do GOsa. Não confunda com o administrador da base LDAP, a Tela 8 e 9 mostra essa tela.

Tela 8 – Cadastro da Estrutura do Gosa

O erro acima aconteceu porque a estrutura não existe. Para criar a estrutura clicando no "Try to create root object". Deve ficar como a tela 9. Também na tela 8 é necessário definir a senha do administrador do GOsa.

Tela 9 – Criação da estrutura

As últimas telas estão relacionadas ao arquivo de configuração. Este arquivo deve ser copiado para o diretório /etc/gosa e as permissões devem ser configuradas conforme solicitado na instalação. As telas seguintes mostram a tela de login e o gerenciamento da base LDAP.

Ambiente de gerenciamento dos usuários.

Tela 10 – Ambiente do GOsa

Tela 11- Gerenciamento de contas

Pronto, você tem um poderoso gerenciador de usuário e grupos.



Servidor de OpenFire (Jabber) – Integração Perfeita com o Gosa

7 de Maio de 2009, 0:00, por Software Livre Brasil - 0sem comentários ainda

Para instalar o servidor de mensagem instantânea e integrar com o LDAP é necessário os seguintes pré-requisitos estejam instalados.

Pré-requisito:

 A seguir a figura 1 mostra uma tela do Gosa com a base de usuário cadastrado. As informações que o Jabber utiliza são os campos uid,password,cn,mail,displayName. Esses campos são cadastrados automaticamente quando um usuário é criado. Os outros serviços cadastrados para o usuário, tais como e-mail, samba não interferem no jabber.

Figura 1 – Tela do Gosa

O Jabber é um protocolo para mensagem instantânea que pode ser implementado em uma rede. Muitas empresas necessitam de um mecanismo de comunicação interna através de software de mensagem instantânea, mas não quer utilizar os softwares disponibilizados na Internet como ICQ, MSM, por questão de produtividade, para estes casos existe o jabber. Existe na Internet vários clientes que suportam este protocolo, neste material vamos utilizar o Gajim.

 

  1. OpenFire  

OpenFire é um servidor de mensagem instantânea que implementa o protocolo Jabber. A grande vantagem do OpenFire são os recursos de gerenciamento de conexões e os vários plugins. Também é possível disponibilizar áudio conferencia.

Antes de instalar o OpenFile é necessário instalar as dependência do Java. Os códigos seguintes mostram como fazer isso.

 

Com a dependência do Java instalada, vamos instalar o OpenFire.Para isso faça download do pacote no site www.igniterealtime.org. Neste documento vamos utilizar a versão para debian e ubuntu.

Após a instalação, o servidor do OpenFire é iniciado automaticamente na porta 9090 e toda a configuração e feita via web. Portanto acesse o servidor por um browser na porta 9090.

http://ip_do_servidor:9090

A figura 2 mostra a tela de configuração que define a porta de acesso da área administrativa. A variável domínio é utiliza para conexão dos clientes.

Figura 2 – Configuração do Dominio

Na tela de configuração do banco de dados, defina como banco de dados interno. E na tela seguinte define que os usuários estarão na base de dados do LDAP. A próxima tela é importante porque define a conexão com o servidor LDAP. A figura 3 mostra um exemplo de configuração, o importante é testar a conexão antes de seguir para a próxima tela.

Figura 3 – Tela de conexão com o servidor LDAP

Na tela seguinte, certifique que o campo nome do usuário esteja definido com o valor "uid". Todos os outros campos que estão entre {} serão buscando na base LDAP e caso você queria, pode mudar por outros valores. Na última tela é preciso definir o usuário que está na base LDAP que vai ser o administrador do OpenFire. Normalmente colocamos o "admin" que é o mesmo administrador do Gosa.

Ao entrar no OpenFile é possível ver a lista de usuário que deve ser a mesma da base LDAP, como mostra a figura 4.

Figura 4 – Lista de usuários

Outro recurso interessante são as estatísticas de conexões que a ferramenta oferece como mostra a figura 5.

Figura 5 – Estatística

  1. Cliente

Existem vários clientes jabber para todos os sistemas operacionais. Como teste, utilize o Gajim que é multiplataforma. Um cuidado que deve ter na hora de acrescentar o usuário, é colocar o domínio (figura 2) do jabber. Portanto a composição do usuário fica nome@dominio. A figura 6 e 7 mostra o Gajim em funcionamento.

Figura 6 – Cliente Gajim no XP

Figura 7 – Gajim no Windows 7



Servidor de OpenFire (Jabber) – Integração Perfeita com o Gosa (LDAP)

7 de Maio de 2009, 0:00, por Software Livre Brasil - 0sem comentários ainda

Para instalar o servidor de mensagem instantânea e integrar com o LDAP é necessário os seguintes pré-requisitos estejam instalados.

Pré-requisito:

 A seguir a figura 1 mostra uma tela do Gosa com a base de usuário cadastrado. As informações que o Jabber utiliza são os campos uid,password,cn,mail,displayName. Esses campos são cadastrados automaticamente quando um usuário é criado. Os outros serviços cadastrados para o usuário, tais como e-mail, samba não interferem no jabber.

 

Figura 1 – Tela do Gosa

O Jabber é um protocolo para mensagem instantânea que pode ser implementado em uma rede. Muitas empresas necessitam de um mecanismo de comunicação interna através de software de mensagem instantânea, mas não quer utilizar os softwares disponibilizados na Internet como ICQ, MSM, por questão de produtividade, para estes casos existe o jabber. Existe na Internet vários clientes que suportam este protocolo, neste material vamos utilizar o Gajim.  

  1. OpenFire  

OpenFire é um servidor de mensagem instantânea que implementa o protocolo Jabber. A grande vantagem do OpenFire são os recursos de gerenciamento de conexões e os vários plugins. Também é possível disponibilizar áudio conferencia. Antes de instalar o OpenFile é necessário instalar as dependência do Java. Os códigos seguintes mostram como fazer isso.

 

 Com a dependência do Java instalada, vamos instalar o OpenFire.Para isso faça download do pacote no site www.igniterealtime.org. Neste documento vamos utilizar a versão para debian e ubuntu.

 

 Após a instalação, o servidor do OpenFire é iniciado automaticamente na porta 9090 e toda a configuração e feita via web. Portanto acesse o servidor por um browser na porta 9090.

http://ip_do_servidor:9090

A figura 2 mostra a tela de configuração que define a porta de acesso da área administrativa. A variável domínio é utiliza para conexão dos clientes.

openfire

Figura 2 – Configuração do Dominio

Na tela de configuração do banco de dados, defina como banco de dados interno. E na tela seguinte define que os usuários estarão na base de dados do LDAP. A próxima tela é importante porque define a conexão com o servidor LDAP. A figura 3 mostra um exemplo de configuração, o importante é testar a conexão antes de seguir para a próxima tela.

Figura 3 – Tela de conexão com o servidor LDAP

Na tela seguinte, certifique que o campo nome do usuário esteja definido com o valor "uid". Todos os outros campos que estão entre {} serão buscando na base LDAP e caso você queria, pode mudar por outros valores. Na última tela é preciso definir o usuário que está na base LDAP que vai ser o administrador do OpenFire. Normalmente colocamos o "admin" que é o mesmo administrador do Gosa.

Ao entrar no OpenFile é possível ver a lista de usuário que deve ser a mesma da base LDAP, como mostra a figura 4.

Figura 4 – Lista de usuários

Outro recurso interessante são as estatísticas de conexões que a ferramenta oferece como mostra a figura 5.

Figura 5 – Estatística

  1. Cliente

Existem vários clientes jabber para todos os sistemas operacionais. Como teste, utilize o Gajim que é multiplataforma. Um cuidado que deve ter na hora de acrescentar o usuário, é colocar o domínio (figura 2) do jabber. Portanto a composição do usuário fica nome@dominio. A figura 6 e 7 mostra o Gajim em funcionamento.

Figura 6 – Cliente Gajim no XP

Figura 7 – Gajim no Windows 7