As aventuras com SAMBA4

clodonil October 27th, 2008

Em janeiro de 2006 foi lançando a primeira versão beta do samba4. Mesmo antes desta data várias informações já eram dadas sobre as características do novo “servidor de arquivo”. Uma das informações que mais chama a nossa atenção era sobre a integração do SAMBA com o AD.

Agora com a versão ALPHA 6 já podemos testar e verificar as principais características do SAMBA4. Estarei descrevendo a implementação do servidor e a integração com o AD.

O processo de instalação não mudou muito, apenas o diretório padrão ao ser compilado é gerado dentro do diretório /usr/local/samba.

 Para fazer download da última versão do SAMBA4, realizei o seguinte procedimento. É necessário ter instalado o git-core .

#git clone git://git.samba.org/samba.git samba-master; cd samba-master; git checkout -b master 
origin/master; cd

Após fazer o download, foi criado um diretório chamando samba-master. Os fontes do SAMBA4 ficaram dentro do diretório source4.

# cd samba-master/source4

Para começar a compilar o SAMBA4 foi necessário instalar as seguintes dependências:

  • gcc
  • libc6-dev
  • make
  • libattr1-dev
  • libblkid-dev
  • libgnutls-dev
  • libreadline5-dev
  • python-dev

#./autogen.sh
#./configure && make && make install

Após a instalação rodei o comando provision para definir a senha do usuário “administrator” do SAMBA. Este comando foi executado dentro do diretório source4.

#./setup/provision --realm=TRIGO --domain=TRIGO --admin=teste --server-role=’domain controller’

O parâmetro “–realm” é para definir o domínio do servidor kerberos e o “–domain” para o domínio SAMBA.

O SAMBA4 trás embutido os protocolos LDAP, KERBEROS que são responsáveis pela integração com o AD.

O diretório /usr/local/samba é gerado pela compilação do SAMBA e tem os seguintes subdiretórios:

  • bin:  Programas para gerenciamento do samba, tais como smbstatus, net, etc.
  • sbin: Programa responsável por inicializar o samba.
  • etc:  Neste diretório fica o arquivo de configuração smb.conf
  • include: Todas as bibliotecas de desenvolvimento
  • lib: Todas as libs compiladas do samba
  • modules: Módulos do Samba
  • private: Exemplos de arquivos de configuração
  • share: Neste diretório estão os arquivos de configuração do LDAP, KERBEROS, programas para criar usuário.

Após a instalação, configurei o servidor DNS para fazer o SAMBA trabalhar juntamente com o KERBEROS. Instalei o BIND9, e utilize os arquivos exemplos gerados pelo próprio SAMBA que estão dentro do diretório private. Copie os arquivos para o diretório /etc/bind e fiz pequenos ajustes.

Também copie o arquivo krb5.conf para o diretório /etc. Por utilizar o KERBEROS, é necessário que todas as máquinas envolvidas estejam com os mesmo horário (segundos).

Acerte o sistema de arquivo para trabalhar com o xattr alterando o arquivo /etc/fstab.

/dev/sda1            ext3    defaults,user_xattr    0    1

Remonte o sistema para ativar as alterações.

# mount -o remount,rw /</span>

Para teste, crie um compartilhamento chamado documentos. Para isso editei o arquivo smb.conf que está dentro do diretório /usr/local/samba/etc.

[documetos]
     path =/v01/documentos
     read only =yes

Para o compartilhamento funcionar corretamente, criei o diretório e atribui permissões. Após fazer isso inicialize o SAMBA.

#samba -i -M single

No Windows fiz as seguintes configurações:

  • Acertei a data e hora com a do servidor;
  • Alterei DNS apontando para o servidor;

Antes de colocar o Windows XP no domínio, instalei o AD. Segue o Link:

Chegou a hora de colocar o Windows XP no domínio e testar a integração com o AD. A minha grata surpresa foi à facilidade de colocar o computador no domínio. A figura 1 mostra o computador entrando no domínio.

Windows entrando no domínio

Figura 1 - Windows entrando no domínio

Ao entrar com o usuário administrator no Windows XP, chamei diretamente o AD através do comando “dsa.mscque coloquei no executar programas. A outra surpresa foi que o SAMBA já estava integrado com o AD. As figuras 2 e 3 mostra a integração.

Figura 2 - AD com SAMBA4

Figura 2 - AD com SAMBA4

Figura 3 - AD com SAMBA4

Figura 3 - AD com SAMBA4

Outra curiosidade era com relação à estrutura que o SAMBA4 utilizava dentro do LDAP. A figura 4 mostra a estrutura do LDAP utilizada pelo SAMBA4.

LDAP do SAMBA4

Figura 4 - LDAP do SAMBA4

Também testei se o Windows estava pegando os ticket corretamente do KERBEROS implementado pelo SAMBA. Também estava funcionando corretamente como mostra a figura 5.

KERBEROS do SAMBA4

Figura 5 - KERBEROS do SAMBA4

Estou fazendo novos testes e em breve postarei novidades.

GOsa - Administração 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. A utilização é por sua conta.

1. A configuração da base LDAP deve estar pronta de acordo com os artigos “OpenLDAP – Simples e Rápido” e OpenLDAP com smbldap-tools”.

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. Faça o download do GOsa e descompacte dentro do diretório /usr/share/gosa

4. Instale e configure o APACHE e o PHP. 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
  • libscrypt-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 = 32
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.

Tela1

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 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.

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 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.

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.

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.

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 de script 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.

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.

# Coloque aqui o SID do SAMBA
SID="S-1-5-21-3427200827-1333373418-835043165"
# Domínio 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 usuários
usersdn="ou=Users,${suffix}"
# Conta dos Computadores
computersdn="ou=Computers,${suffix}"
#Conta de grupos
groupsdn="ou=Groups,${suffix}"
#Conta de idmap
idmapdn="ou=Idmap,${suffix}"
# Armazena o próximo ID
sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"
# Define o escopo da busca
scope="sub"
#Define o tipo de criptografia que será utiliza nas contas
# Unix(CRYPT, MD5, SMD5, SSHA, SHA, CLEARTEXT)
hash_encrypt="CRYPT"
crypt_salt_format="%s"
# Define se o usuário vai ter shell
userLoginShell="/bin/bash"
# Define o home do usuário (SAMBA)
userHome="/home/%U"
# Define as permissões de acesso ao home
userHomeDirectoryMode="700"
# Gecos
userGecos="System User"
# define um grupo padrão
defaultUserGid="513"
# Define um grupo padrão para as contas dos computadores
defaultComputerGid="515"
# Define o diretório de shell
skeletonDir="/etc/skel"
#Define o tempo da validade da senha
defaultMaxPasswordAge="45"
# Configurações 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.

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

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

gq

gq

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

omo 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 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 - www.openldap.org

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.

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 3 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:

Bem Vindos

clodonil August 25th, 2008

Olá amigos, estou inaugurando este blog escrevendo um conjunto de 4 artigos mostrando as minhas experiencias em integração de serviços através do openLDAP. Esses 4 artigos intitulei de “Integração Profissional de Serviços de Rede

Quando falo em integração profissional, estou falando em relação ao serviço entregue ao cliente. Geralmente quando esses serviços são feitos, o cliente fica com um conjunto de scripts para gerenciar o servidor. Normalmente esses scripts são complicados para o usuário e isso tira brilho do serviço e deixa um ar de amadorismo na área de implantação de serviços em linux (Software Livre).

Portanto esses 4 artigo que estarei escrevendo, pretendo mostrar como implementar um servidor OpenLDAP e gerenciar as contas dos usuários através de uma fantástica ferramenta, chamado Gosa.

  • O Primeiro artigo vai falar sobre a instalação do Openldap e as principais configurações;
  • O segundo estarei escrevendo sobre a utilização da ferramenta GOsa;
  • O terceiro sobre a integração com o servidor Samba;
  • O quarto sobre a integração com o servidor de email postfix.

Espero que vocês gostem.