Archive for the 'GOsa' Category

Pure-ftp integrando com o LDAP (GOsa)

clodonil October 28th, 2009

Um amigo estava com dificuldade em fazer a integração do Pure-FTP com o GOsa. Nunca tinha testado esse pequeno FTP, mas já implementei várias vezes o Proftpd. Por esse motivo aceitei o desafio de implementar esse FTP com o LDAP.

No primeiro contato foi bem fácil a configuração com o LDAP. Antes de mostrar os arquivos que alterei para fazer o Pure-FTP funcionar, vou mostrar a criação do usuário no GOsa.

A figura 1 e figura 2 mostram a criação do usuário utilizando o GOsa. A criação é normal não tem nada de especial, perceba que a criptografia utilizada foi a crypt.

Na figura 2 colocamos o atributos Unix.

Nessa tela definimos o "Home directory" do usuário. Teremos que criar esse diretório.

 Após a criação do usuário no GOsa temos que habilitar o linux para reconhecer os usuários que estão na base LDAP para poder dar a permissão na pasta do usuário.

Para fazer o Linux reconhecer os usuários da base LDAP, olhe este artigo [reconhecendo usuário da base LDAP] até a parte do getent.

O passo seguinte foi criar a pasta do usuário e dar a permissão certa.

[root@servidor]# mkdir  -p /home/ldap/julia

[root@servidor]# chown julia:julia /home/ldap/julia

Até esse ponto estavamos criando a base para a instalação do Pure-FTP.

Instalação do Pure-FTP no ubuntu Server

Para instalar o Pure-FTP vamos utilizar o apt-get.

[root@servidor]# apt-get install pure-ftp-ldap

Após a instalação vamos editar o arquivo /etc/pure-ftp/db/ldap.conf.

LDAPServer localhost
LDAPPort   389
LDAPBaseDN ou=people,dc=curso,dc=ldap
LDAPBindDN cn=Manager,dc=curso,dc=ldap
LDAPBindPW pedra
LDAPFilter (&(objectClass=posixAccount)(uid=\L))
LDAPHomeDir homeDirectory
LDAPVersion 3

Ao termino da configuração é necessário reinicar o Pure-FTP

[root@servidor]#/etc/init.d/pure-ftp-ldap restart

Agora já podemos testar com um programa ftp. A figura 3 mostra o teste com ftp.

Então temos o Pure-FTP funcionando corretamente.

Autenticação Linux Ubuntu com LDAP

clodonil August 10th, 2009

(Autenticação de sistema Linux usando LDAP e mapeamento do home do usuário com o SAMBA em substituição ao NFS)

Pré-requisitos:

1 Introdução

Nesse artigo será mostrado como habilitar autenticação em sistema Linux, mas especificamente os sistemas baseados em Debian, tais como Ubuntu. Autenticação um sistema Linux em um servidor de autenticação com o LDAP é algo necessário e fundamental para o bom funcionamento de uma rede.

A autenticação do sistema Linux dá ao usuário o acesso a uma shell, por meio da qual ele pode interagir com o sistema. Autenticação só é possível devido ao módulo de autenticação que o Linux utiliza que é o PAM. Quando instalamos o pacote libnss-ldap, todos os ajustes no módulo PAM são feitos automaticamente.

# apt-get install libnss-ldap

Durante a instalação, alguns passos devem ser preenchidos. O primeiro passo é definir o ip do servidor LDAP, como mostra a figura 1.


Figura 1 – Configuração do ip do servidor LDAP

Na tela seguinte é solicitado o suffix do servidor LDAP, como motra a figura 02.


Figura 02 – Configuração do suffix

Na próxima tela é solicitada a versão do LDAP. Normalmente estamos trabalhando com a versão 3 do LDAP.

A próxima tela é muito importante, porque permite o armazenamento da semana do administrador do LDAP e possibilita a utilização desses dados por outras aplicações como NFS. A senha do administrador será armazenada em outro arquivo. Portanto escolha a opção "YES" como mostra a figura 03.


Figura 03 – Armazenamento do administrador do LDAP

A próxima tela define que o sistema vai utilizar o login do database.


Figura 04 – definição do login

Na telas seguintes é definido o administrador da base LDAP e a sua senha.

Após a instalação do pacote libnss-ldap todos os ajustes no PAM foram feitas pelo instalador. Dentro do diretório /etc/pam.d/, temos os arquivos common-account, common-auth, common-password contém as linhas de integração do PAM com LDAP.

Configuração dos arquivos

O arquivo nsswitch.conf define os locais onde o sistema operacional pesquisará para realizar autenticação. Na maioria dos casos é definido mais de um local, como, por exemplo, "passwd: files ldap", sendo que, neste caso, o sistema irá procurar primeiro nos arquivos (files) e em seguida no LDAP.

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

Neste ponto, o sistema estará buscando as senhas na base de dados LDAP. Para verificar se isso está realmente acontecendo, use o comando getent:

# getent passwd

Ele deverá retornar todos os usuários que estão no LDAP.

Compartilhamento do HOME

Com o libnss-ldap instalado e o arquivo nsswitch.conf configurado, podemos fazer o teste para verificar se o sistema está autenticando os usuários do LDAP.

Discher login: clodonil

Password: * * * *

No directory, logginf in with HOME=/

[clodonil@Discher] /$

No exemplo acima, não existe o diretório /home/clodonil no sistema. O diretório é definido na base LDAP. Por isso que o sistema não encontrou o HOME do usuário, porque não existe. Para resolver, podemos configurar para ser montando o HOME do usuário que deve estar no servidor de arquivo, através do SAMBA ou NFS.

Neste artigo vamos utilizar o SAMBA devido aos problemas e "fama" do NFS. O SAMBA deve estar configurado e o mesmo usuário deve estar cadastrado no servidor SAMBA.

Vamos instalar os pacotes para montar o smbfs durante o login, os dois pacotes são libpam-mount e smbfs.

# apt-get install libpam-mount smbfs

Após a instalação vamos fazer um teste no shell para termos a certeza que o SAMBA está funcionando corretamente. Para isso vamos montar o HOME do usuário no /mnt.

# mount –t smbfs –o username=clodonil,password=senha //servidor_samba/clodonil /mnt

Se o mapeamento funcionar corretamente, vamos passar para a configuração do arquivo pam_mount.conf.xml que é o arquivo que faz o mapeamento automático do usuário após o login.

Vamos editar o arquivo /etc/security/pam_mount.conf.xml, adicionando a seguinte linha.

 

<volume fstype="smbfs" server="ip_do_servidor_samba" path="%(USER)" mountpoint="/home/%(USER)" options="iocharset=utf8,file_mode=0700,dir_mode=0700" />

 

Essa linha adicionada define que será utilizado o protocolo "smbfs", e também deve ser definido o ip do servidor do SAMBA no campo server. Os outros campos como %(USER) será substituído automaticamente pelo sistema na hora do login pelo usuário em questão.

Segue o arquivo /etc/security/pam_mount.conf.xml completo.

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
<pam_mount>
<volume fstype="smbfs" server="ip_do_servidor_samba" path="%(USER)" mountpoint="/home/%(USER)" options="iocharset=utf8,file_mode=0700,dir_mode=0700" />
<debug enable="0" />

<mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other" />
<mntoptions require="nosuid,nodev" />
<path>/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin</path>
<logout wait="0" hup="0" term="0" kill="0" />
<mkmountpoint enable="1" remove="true" />
</pam_mount>

Feito isso, será montado no sistema de arquivo o HOME do usuário na hora do login.

 

Servidor DNS (BIND9) – Integração Perfeita com o GOsa

clodonil August 9th, 2009

1. Introdução

O servidor DNS é utilizado para resolver nomes de computadores, ou seja, toda vez que chega uma requisição com um nome (ex: www.nisled.org), ele o transforma em um endereço IP. O servidor DNS é a base da Internet. Para uma compreensão mais ampla, imagine a Internet sem o servidor DNS: tudo funcionaria sem problemas; no entanto, imagine que, ao invés de acessar os sites pelos nomes (www.uol.com.br, www.estadao.com.br, www.nisled.org, etc.), você teria que decorar o endereço IP dos servidores para poder acessá-los!

Se decorar número de telefone já é difícil, imagine decorar IPs.

Normalmente, o DNS mantém suas informações numa lista gravada num arquivo de texto simples. No entanto, ao estudar a sua estrutura, descobrimos que ele trabalha em forma de árvore. Portanto, é possível diminuir as despesas gerais de administração (gerenciamento dos domínios) guardando os dados do DNS em forma de árvore; a estrutura geral do OpenLDAP já contribui para isso.

Outro fator que contribui para o uso do OpenLDAP é o fato dos servidores DNS necessitarem de uma replicação de dados para o DNS secundário. Como esse serviço já vem implementado no OpenLDAP, torna-se muito mais fácil a sua implementação. Os requisitos de segurança para a replicação são satisfeitos pelo OpenLDAP, o que nem sempre acontece com os servidores DNS.

Vamos começar esse artigo, descrevendo como criar a estrutura do DNS dentro do LDAP com ajuda do GOsa. Neste artigo vamos utilizar como exemplo o domínio "curso.ldap" e o ip do servidor 192.168.0.1.

2. GOsa

O ambiente GOsa é uma poderosa ferramenta de gerenciamento de recursos de rede no LDAP, e como não poderia ser diferente, ele tem suporte para gerenciar as entradas para o servidor BIND.

Para começar a criar as entredas para o BIND, entre no ambiente GOsa e logo em seguida click no ícone "Systems" como mostra a figura 1.

 

Figura 1 – Ambiente central do GOsa

Ao entrar no "Systems" será mostrada todos os componentes cadastrados, caso existão. Na parte superior da tela temos as lista de sistemas que podem ser cadastrados. Escolha criar um novo servidor como mostra a figura 2.

 

Figura 2 – Lista de Sistemas

Ao entrar na tela para criar um novo servidor, automaticamente abrirá a aba "Generic". Nela devem ser preenchidos os campos "Server name" ,endereço de IP e MAC. Esses dados não são utilizados pelo DNS, apenas para cadastrar o servidor. A figura 3 mostra o cadastro desta tela.

 

Figura 3 – Cadastro do servidor

Após o cadastro dos dados na primeira aba, click na aba "DNS" para criar uma nova zona de DNS. Para isso click no botão "Add", como mostra a figura 4.

 

Figura 4 – Criação de uma zona de DNS

Para adicionar uma nova zona, preencha os dados de acordo com o domínio desejado. O campo "zone name" define o domínio que será criado. Também defina o endereço da rede e a mascara. Os campo da área "SOA record" definem o cabeçalho do servidor dns, por isso preencha os campos "Primary dns Server for this zone" com o nome do servidor dns, como mostra a figura 5. Lembre-se de cadastrar essa servidor no registro de nome e também resolver esse nome no arquivo /etc/hosts do servidor dns. Também preencha os campos de email. Na área "MxRecords" registre os servidores de email deste domínio, lembre-se que o nome do servidor neste caso deve terminar com ponto (mail.curso.ldap.). Para editar os computadores deste domínio é necessário primeiramente salvar a zone para o botão "Zone records" habilitar.

 

Figura 5 – Criação da zona

Após salvar o registro da zona, aba novamente que o botão "Edit" estará habilitado e com ele podemos cadastrar os computadores do domínio, como mostra a figura 6.

 

Figura 6 – Criação das maquinas domínio

3. BIND9

Com a criação do domínio no GOsa, vamos passar para a instalação do servidor dns. Será utilizado o pacote pré-compilado para o servidor Ubuntu.

# apt-get install bind9

O próximo passo é a configuração da zona no bind9. Para isso altere o arquivo /etc/bind/named.conf acrescentando as seguintes linhas.

zone "curso.ldap" {
type master;
file "/etc/bind/db.curso.ldap";
};

zone "0.168.192.in-addr.arpa" {
type master;
file "/etc/bind/rev.curso.ldap";
};

O próximo passo é criar os arquivos db.curso.ldap e o arquivo rev.curso.ldap. Esses arquivos são criados através de um script que exporta as informações do LDAP (GOsa).

4. ldap2zone

Utilizaremos o script ldap2zone para exportar os registros da base LDAP. Esse script foi escrito com a linguagem de C, portanto é preciso compilá-lo. Para realizar essa tarefa entre no diretório /usr/local/src, e faça download do script.

# cd /usr/local/src
# wget
www.venaas.no/dns/ldap2zone/ldap2zone.c

Antes de começar a compilar os fontes do script, instale os pré-requisitos que são as bibliotecas do LDAP e os compiladores.

# apt-get install libc6-dev gcc libldap2-dev

A compilação do script de exportação é bem simples. Segue o passo para a compilação.

# gcc -o ldap2zone -lldap -llber ldap2zone.c

Após a compilação mova o arquivo binário compilado para o diretório /usr/local/bin.

# mv ldap2zone /usr/local/bin

Agora com o script compilado, vamos realizar alguns testes para verificar se exportação está sendo realizada.

Primeiro vamos exportar o db.

# ldap2zone curso.ldap. ldap://192.168.0.10 604800
$TTL 604800
@ IN SOA ns1.curso.ldap. clodonil.nisled.org. (
                  2009080904 ; Serialnumber
                        3600 ; Refresh
                        1800 ; Retry
                      720000 ; Expire
                      6400 ) ; Minimum TTL

                  NS ns1.curso.ldap.
                  MX 0 mail.curso.ldap.
                  MX 1 server.curso.ldap.
www     7440      A    192.168.0.1
mail    7440      A    192.168.0.1
server  7440      A    192.168.0.1
ns1     7440      A    192.168.0.1

Como pode ver a exportação foi feita corretamente, também vamos testar a exportação do reverso.

# ldap2zone 0.168.192.in-addr.arpa ldap://192.168.0.10 604800
$TTL 604800
@ IN SOA ns1.curso.ldap. clodonil.nisled.org. (
                   2009080904 ; Serialnumber
                         3600 ; Refresh
                         1800 ; Retry
                       720000 ; Expire
                       6400 ) ; Minimum TTL
                   NS ns1.curso.ldap.
                   MX 0 mail.curso.ldap.
                   MX 1 server.curso.ldap.
1       7440 PTR www.curso.ldap.
        7440 PTR mail.curso.ldap.
        7440 PTR server.curso.ldap.
        7440 PTR ns1.curso.ldap
.

Para tornar a tarefa de exportação mais automatizada, vamos criar um script para exportar as entradas do LDAP e criar os respectivos arquivos. Segue o script.

#!/bin/bash

ldap2zone 0.168.192.in-addr.arpa ldap://192.168.0.10 604800 > /etc/bind/rev.curso.ldap
ldap2zone curso.ldap. ldap://192.168.0.10 604800 > /etc/bind/db.curso.ldap

Para não precisar ficar executando o script toda vez que fizer uma alteração pelo GOsa, vamos colocar o script no crontab e pedir para executar em 5 em 5 minutos.

*/5 * * * * /usr/local/bin/dns.sh

5. Teste

Para realizar os testes que precisamos, vamos primeiramente reiniciar o servidor DNS.

# /etc/init.d/bind9 restart

O próximo passo é alterar o arquivo /etc/resolv.conf, e "apontar" para o servidor DNS que acabamos de configurar.

nameserver 192.168.0.1

Em seguida utilize o comando ping para verificar se o servidor tá "resolvendo" o nome pesquisa.

# ping www.curso.ldap
PING www.curso.ldap (192.168.0.1) 56(84) bytes of data.
64 bytes from nucleo.local (192.168.0.1): icmp_seq=1 ttl=64 time=0.037 ms
64 bytes from nucleo.local (192.168.0.1): icmp_seq=2 ttl=64 time=0.054 ms
64 bytes from nucleo.local (192.168.0.1): icmp_seq=3 ttl=64 time=0.056 ms

Conforme o resultado apresentado pelo comando ping, o servidor DNS tá funcionando corretamente.

6.  Troubleshooting

  • Verifique se os arquivos db e rev estão sendo gerados pelos scripts;
  • Verifique os logs do bind9 (tail –f /var/log/daemon)
  • No GOsa verifique se colocou ponto (.) no final dos nomes definidos como servidor de e-mail.

 

Next »