Archive for September, 2008

GOsa 2.5.x – Administração do LDAP

clodonil September 16th, 2008

GOsa é um fabuloso administrador de contas LDAP. Com ele é possível administrar usuários, grupos e serviços. Algumas das características do GOsa:

  • Interface simples;
  • Criação de grupos
  • Criação de Usuários para vários ambientes;
  • Backup;
  • Criação de templates;
  • Configuração de vários serviços (DNS,FTP,etc)

Nas próximos linhas estarei mostrando como instalar essa ferramenta no Linux Ubuntu-Server. A utilização é por sua conta.

Como pré-requisito instale o servidor apache e o php5.

 

[root@cabeca]# apt-get install apache2 php5

 

A primeira parte é instalar e configuração o OpenLDAP; o comando a seguir faz a instalação do LDAP.

 

[root@cabeca]# apt-get install slapd ldap-utils

 

Após a instação vamos partir para configuração.Em algumas distribuições, o LDAP está utilizando a configuração online, e por isso não existe o arquivo slapd.conf. Para utilizar o arquivo slapd.conf, delete a pasta slapd.d que encontra-se dentro do diretório /etc/ldap e altere a diretiva do SLAPD_CONF do arquivo /etc/default/slapd para SLAPD_CONF=/etc/ldap/slapd.conf.

Feito isso, o próximo passo é criar o arquivo slapd.conf dentro do diretório /etc/ldap. A segui tem um exemplo de configuração, os arquivos de schema estão no pacote do Gosa dentro do diretório contrib/openldap. Altere de acordo com as suas necessidades.

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/samba.schema
include         /etc/ldap/schema/pureftpd.schema
include         /etc/ldap/schema/gofon.schema
include         /etc/ldap/schema/gosystem.schema
include         /etc/ldap/schema/goto.schema
include         /etc/ldap/schema/samba3.schema
include         /etc/ldap/schema/gosa+samba3.schema
include         /etc/ldap/schema/gofax.schema
include         /etc/ldap/schema/goserver.schema
include         /etc/ldap/schema/goto-mime.schema
include         /etc/ldap/schema/dhcp.schema
include         /etc/ldap/schema/dnszone.schema
 
password-hash           {CRYPT}
defaultsearchbase       dc=trigo
 
pidfile  /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
 
 
loglevel        1024
 
#Cara os modulos
modulepath      /usr/lib/ldap
moduleload      back_hdb
moduleload      back_monitor
access to dn.base=
        by * read
 
access to dn.subtree=cn=Monitor
        by * read
 
access to attrs=userPassword,sambaPwdLastSet,sambaPwdMustChange,\
                sambaPwdCanChange,shadowMax,shadowExpire
        by dn.regex=uid=[^/]+/admin\+(realm=TRIGO) write
        by anonymous auth
        by self write
        by * none
 
access to attrs=goImapPassword
        by dn.regex=uid=[^/]+/admin\+(realm=TRIGO) write
        by * none
access to attrs=goKrbPassword
        by dn.regex=uid=[^/]+/admin\+(realm=TRIGO) write
        by * none
access to attrs=goFaxPassword
        by dn.regex=uid=[^/]+/admin\+(realm=TRIGO) write
        by * none
 
access to attrs=gotoLastUser
        by * write
 
access to attrs=sambaLmPassword,sambaNtPassword
        by dn.regex=uid=[^/]+/admin\+(realm=TRIGO)write
        by anonymous auth
        by self write
        by * none
 
access to *
        by dn.regex=uid=[^/]+/admin\+(realm=TRIGO)=wrscx
        by * read
 
# Monitor backend
database        monitor
database        hdb
cachesize 5000
mode              0600
 
suffix          dc=trigo
checkpoint      512 720
 
rootdn  cn=manager,dc=trigo
rootpw  x
 
# Indexing
index   default                                                 sub
index   uid,mail                                                eq
index   gosaMailAlternateAddress,gosaMailForwardingAddress      eq
index   cn,sn,givenName,ou                                      pres,eq,sub
index   objectClass                                             pres,eq
index   uidNumber,gidNumber,memberuid,macAddress                eq
index   gosaSubtreeACL,gosaObject,gosaUser                      pres,eq
 
# Indexing for Samba 3
index   sambaSID                                                eq
index   sambaPrimaryGroupSID                                    eq
index   sambaDomainName                                         eq
 
# Indexing for DNS/DHCP
index  zoneName                                                eq
index  relativeDomainName                                      eq
index   dhcpHWAddress                                          eq
index   dhcpClassData                                          eq
index   dhcpPrimaryDN                                          eq
index   dhcpSecondaryDN                                        eq
 
directory       /var/lib/ldap
lastmod on
Inicie o servidor LDAP em modo debug para verificar se existe algum erro, se existir, o erro e a linha que contém o erro será mostrado.
[root@localhost]# slapd -d 123 -u openldap
Se nenhum erro for apresentado, inicio o servidor LDAP normalmente.
 
[root@localhost]# slapd -d 123 -u openldap
 
O Próximo passo é criar a estrutura base do LDAP. Para isso crie um arquivo chamado base.ldif. O conteúdo deste arquivo está logo a seguir. Altere de acordo com as suas configurações.
dn: dc=trigo
objectClass: top
objectClass: dcObject
objectClass: organization
dc: trigo
o: Clodonil Trigo
Ao terminar de editar o arquivo, é preciso enviar essas informações do arquivo LDIF para a base LDAP. O comando ldapadd faz isso, altere o comando abaixo de acordo com as suas configurações.
 
[root@cabeca]# ldapadd -f base.ldif -x -D cn=manager,dc=trigo -W
 
Com a base LDAP pronta, vamos para a configuração do GOsa. Primeiramente é preciso fazer o download do pacote, que pode ser feito através do site http://oss.gonicus.de/pub/gosa/.

 2. Crie os seguintes diretórios:

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

3.  Descompacte dentro do diretório /usr/share/gosa

 

[root@cabeca]# tar -xzvf gosa-2.5.17.tar.gz -C /usr/share/gosa

 

4.  Adicione as seguintes linhas no apache configurado.

#Crie um Alias
Alias /gosa /usr/share/gosa/html

5. Instale os 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

Altere as seguintes linhas no php.ini, deixando conforme o exemplo abaixo:

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

5. Acesse o browser e termine a instalação;utilize as telas abaixo para se guiar (não esqueça de reiniciar o apache). 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 dar prosseguimento na instalação é necessário copiar a chave especifica e colocar no /tmp.

 

Figura 1 – 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 a licença de uso do software. A tela seguinte,é uma checagem dos pré-requisitos, como mostra a figura 2. Todas as opções requeridas devem ser atendidas. Nos pré-requisitos que descrevi anteriormente, estes itens já são instalados. Na figura está dando erro no kerberos, SNMP e CUPS. São três pacotes que não estarão disponível no GOsa.

Figura 2 – Pré-requísitos

A tela seguinte também é um método de checagem de arquivos schema. Caso apareça algum erro, deve ser resolvido antes de continuar a instalação. Na seguinte, 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, como mostra a figura 3. Coloque a base definido no slapd.conf como o suffix e o administrador definido no rootdn do mesmo arquivo. No exemplo que coloquei no slapd.conf, ficaria BASE=dc=trigo e Admin DN  cn=manager,dc=trigo.

Figura 3 – Configuração do 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 figura 3. A estrutura de armazenamento de usuários e grupos são definido nesta tela, na opção "People store subtree" se colocar "ou=users", significa que todos os usuários serão cadastrados dentro desta unidade. O mais comum é colocar "ou=people", mas é só questão de nomenclatura. Grave a opção deste parâmetro, porque vai ser requirido nas configurações dos outros serviços. 

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.

As últimas estão relacionada 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 duas telas seguintes mostram a tela de login e o gerenciamento da base LDAP.

Ambiente de gerenciamento dos usuário.

Pronto, você tem um poderoso gerenciador de usuário e grupos. Começe a criar os usuários.

OpenLDAP com smbldap-tools

clodonil September 1st, 2008

 

O Smbldap-tools é uma ferramenta de gerenciamento do servidor LDAP. Com ele é possível criar usuário, grupos e popular a base LDAP. O smb (smbldap) dá a dica que essa é uma ferramenta para criação de contas de usuário para o SAMBA.

Essa ferramenta vem substituir o uso dos comandos do SAMBA para a criação do usuário. Quem já configurou um servidor SAMBA sabe que os usuários criados com o comando smbpasswd obrigatóriamente deve estar criado na conta do sistema Linux. A criação desta conta do usuário no sistema não faz sentido já que estamos querendo que todos os usuários fiquem centralizados no LDAP. Portanto o smbldap-tools é um conjunto descript em perl que permite a criação de contas diretamente na base LDAP, sem precisar criar a conta no sistema.

Algumas das caractéristicas do smbldap-tools:

  • Cria a estrutura do LDAP, tais como: usuário, grupos e computadores;
  • Controla o  id e gid do usuário;
  • Definições de particularidades do sistema, tais como criptografia.

Para o funcionamento do smbldap-tools, é necessário o arquivo smb.conf. Portanto é aconselhavem a instalação do SAMBA.

A instalação do smbldap-tools é bem simples. Essa ferramenta encontra-se em todos (que conheço) as distribuições Linux.

No Ubuntu-Server podemos fazer a instalação utilizando o comando apt-get:

[root@cabeca]#apt-get install smbldap-tools

Antes de entrar na configuração, é necessário encontrar o SID do samba. SID é o ID do sistema para localizar usuários, grupos e computadores. Para encontrar o SID do samba execute net getlocalsid. Com essa informação vamos configurar o smbldap-tools.

Normalmente os arquivos de configuração não estão presentes no arquivo /etc/smbldap-tools após a instalação. É necessário copia-lós do diretório de exemplos que estão em /usr/share/doc/smbldap-tools/examples/ para o diretório /etc/smbldap-tools/.

 

 

  • /etc/smbldap-tools/smbldap.conf

# Coloque aqui o SID do SAMBA
SID=S-1-5-21-3427200827-1333373418-835043165
# Dominio do servidor SAMBA
sambaDomain=DOMINIO.SAMBA
# Servidor de Backup (LDAP)
slaveLDAP=x.x.x.x
slavePort=389
# Servidor Principal (LDAP)
masterLDAP=x.x.x.x
masterPort=389
# Se o servidor LDAP tiver suporte a TLS, mude o valor para 1
ldapTLS=0
verify=require
# Dominio LDAP
suffix=dc=dominio,dc=ldap
#A estrutura do LDAP
# Conta dos usuarios
usersdn=ou=People,${suffix}
# Conta dos Computadores
computersdn=ou=Computers,${suffix}
#Conta de grupos
groupsdn=ou=Groups,${suffix}
#Conta de idmap
idmapdn=ou=Idmap,${suffix}
# Armazena o proximo ID
sambaUnixIdPooldn=sambaDomainName=${sambaDomain},${suffix}
# Define o escopo da busca
scope=sub
#Define o tipo de criptografia que serao utiliza nas contas
# Unix(CRYPT, MD5, SMD5, SSHA, SHA, CLEARTEXT)
hash_encrypt=CRYPT
crypt_salt_format=%s
# Define se o usuario vai ter shell
userLoginShell=/bin/bash
# Define o home do usuario (SAMBA)
userHome=/home/%U
# Define as permissoes de acesso ao home
userHomeDirectoryMode=700;
# Gecos
userGecos=System User
# define um grupo padrão
defaultUserGid=513
# Define um grupo padrao para as contas dos computadores
defaultComputerGid=515
# Define o diretorio de shell
skeletonDir=/etc/skel
#Define o tempo da validade da senha
defaultMaxPasswordAge=45
# Configuracao do SAMBA
userSmbHome=\\dominio.samba\%U
userProfile=\\dominio.samba\dominio.samba\%U
userHomeDrive=L:
userScript=logon.bat
mailDomain=dominio.samba
with_smbpasswd=0
smbpasswd=/usr/bin/smbpasswd
slappasswd=/usr/sbin/slappasswd 
 

Também é necessário configurar o arquivo smbldap_bind.conf. Neste arquivo é configurado as senhas do servidores LDAP.

  • /etc/smbldap-tools/smbldap_bind.conf
masterDN=cn=Manager,dc=dominio,dc=ldap
masterPw=senha
slaveDN=cn=Manager,dc=dominio,dc=ldap
slavePw=senha

Com a figuração do smbldap-tools temos todos os pré-requisitos necessários para rodar o comando smbldap-populate. Esse comado vai criar as seguintes estrutura na base LDAP:

  • ou=Users
  • ou=grupo
  • ou=Computers
  • ou=idmap
  • cn=root
  • sambaUnixIdPooldn

gq

 Figura 1 – GQ

A fígura 1 mostra a estrutura do LDAP após rodar o smbldap-populate.

Já que vamos utilizar o Gosa para fazer o gerenciamento da base LDAP, para que instalar o smbldap-tools? Utilizamos o smbldap-tools básicamente para duas tarefas:

  • Cadastrar as contas de máquinas automaticamente;
  • Alteração da senha do usuário pelo Windows;

Nas duas situações o procedimento é automatizado, não precisando da interação do  admistrador.

Quando um computador é colocado no domínio, é preciso alterar ou cadastrar a conta do computador na base LDAP, acrescentar informações referente ao domínio. Neste processo também utilizamos o smbldap-tools.

O próximo passo é a configuração do Gosa para gerenciar a base LDAP. Com ele o procedimento para criação de usuário e grupo passa a ser um procedimento simples. 

 

OpenLDAP – Simples e Rápido

clodonil September 1st, 2008

Como deveria ser, o primeiro artigo que estou escrevendo é sobre OpenLDAP. A ideia não é escrever um tutorial e nem passo a passo, mas sim discutir os pontos importantes da instalação e configuração do OpenLDAP, seguinte uma seqüência logica de implantação.

O OpenLDAP é um serviço bem interessante e simples. Devido a sua simplicidade, muitos tem encontrado dificuldade no seu entendimento. O OpenLDAP é uma implementação do protocolo LDAP ( desenvolvida pela Universidade de Michigan), que nada mais é que um conjunto de regras que defini a forma que os serviços de diretórios comunica-se com os clientes.

O OpenLDAP é organizado em estrutura hierárquica que favorece a flexibilidade no armazenamento e busca das informações.

A estrutura da arvore pode ser representada por duas formas. A primeira é ao estilo X.500 que é o precursor do OpenLDAP que utiliza objetos baseados em países e departamentos. A segunda é baseado em domínios, seguindo a ideia do servidor DNS. A Figura 1, mostra a estrutura no modelo de domínio.

Figura 1 – Estrutura do LDAP

O OpenLDAP foi desenvolvida para um número muito grande de Sistemas Operacionais. Alguns desses são: Apple MacsOS X, IBM zOS, Microsoft Windows e Linux/FreeBSd.

Nos meus testes, utilize o Linux/Ubuntu-server que é baseado no Debian. A instalação é um processo rápido; basta instalar o programa slapd e ldap-utils.

# apt-get install slapd ldap-utils

As configurações do OpenLDAP resume-se no arquivo slapd.conf que normalmente fica dentro do diretório /etc/ldap/.

Podemos separar o arquivos slapd.conf em 2 partes:

  • Arquivos de schemas: O servidor não traz nenhum objeto em sua base. Todas os objetos são importados de arquivos. Portanto para utilizar um objeto é necessário que algum arquivo de schema tenha sido criado. Normalmente as aplicações enviam o arquivo de schema junto. Esse é o caso do Samba, PostFix, GOsa, DNS, entre outros. Para a nossa implementação, é necessário copiar os arquivos de schema do Gosa para /etc/ldap/schema.

  • Criação do Domínio: Outra parte importante do arquivos slapd.conf é a criação do domínio LDAP. A criação do domínio consiste em especificar o sufix que será utilizado e o administrador da base.

Segue um exemplo de arquivo slapd.conf.

# Arquivos de Schema do Gosa.
include       /etc/ldap/schema/core.schema
include       /etc/ldap/schema/cosine.schema
include       /etc/ldap/schema/nis.schema
include       /etc/ldap/schema/inetorgperson.schema
include       /etc/ldap/schema/openldap.schema
include       /etc/ldap/schema/trust.schema
include       /etc/ldap/schema/samba.schema
include       /etc/ldap/schema/samba3.schema
include       /etc/ldap/schema/gofon.schema
include       /etc/ldap/schema/gosystem.schema
include       /etc/ldap/schema/goto.schema
include       /etc/ldap/schema/gosa+samba3.schema
include       /etc/ldap/schema/goserver.schema
include       /etc/ldap/schema/goto-mime.schema
include       /etc/ldap/schema/dnszone.schema
include       /etc/ldap/schema/gofax.schema
include       /etc/ldap/schema/qmail.schema
 
pidfile         /var/run/openldap/slapd.pid
argsfile        /var/run/openldap/slapd.args
 
#Definição do domínio.
database        bdb
suffix          dc=dominio,dc=ldap
#Usuário manager é o administrador do domínio LDAP.
rootdn          cn=Manager,dc=dominio,dc=ldap
rootpw          senha
directory       /var/db/openldap-data
 
index           objectClass                     eq
index           uid                             pres,eq,sub
index           displayName                     pres,sub,eq
index           gosaMailDeliveryMode            pres,eq,sub
index           sambaSID,sambaGroupType,sambaSIDList eq,pres
index           sambaDomainName,uniqueMember     eq,pres
index           zoneName                         eq
index           relativeDomainName               eq
index           ou,cn,sn,mail,givenname          eq,pres,sub
index           uidNumber,gidNumber,memberUid    eq,pres
index           loginShell                       eq,pres
index           nisMapName,nisMapEntry           eq,pres,sub
index           sambaPrimaryGroupSID             eq
index           default                          sub

Criação da Estrutura

A estrutura que normalmente crio para a construção da arvore LDAP é apenas o root (raiz). O arquivos ldif a seguir faz isso. As outras estrutura normalmente são criados com o comandos smbldap-tools.

 

dn: dc=dominio,dc=ldap
objectClass: top
objectClass: organization
objectClass: dcObject
dc: ldap
o: Ldap Profissional

Salve esses comandos em um arquivo com extensão ldif e exporte para a base LDAP (exportar: ldapadd -f arquivo -x -D "cn=Manager,dc=dominio,dc=ldap" -w senha).

Finalizamos esta parte com o LDAP funcionando e com a estrutura raiz criada.

Os próximos artigos são: