• Nenhum resultado encontrado

Configuração LDAP + SAMBA (PDC)

N/A
N/A
Protected

Academic year: 2021

Share "Configuração LDAP + SAMBA (PDC)"

Copied!
10
0
0

Texto

(1)

Autor: Camila Coelho - Data: 27 de janeiro, 2005

Sumário

1 Objetivos 2

2 Configuração do Sistema Operacional 2

3 Instalação dos serviços 2

3.1 OpenLDAP 2.2.13 . . . 3

3.2 SAMBA 3.0.10 . . . 3

4 Configurando OpenLDAP 4 4.1 Configuração do “slapd” . . . 4

4.2 LDAP como um NIS . . . 6

5 Gerando a base LDAP 6 5.1 Conceitos básicos . . . 6

5.2 Incluindo registros . . . 7

6 Configurando o Samba 7 6.1 Samba como PDC . . . 7

6.2 Samba com LDAP . . . 8

6.2.1 Pacote smbldap-tools . . . 8

6.2.2 Gerenciamento de usuários. . . 9

7 Ferramentas de gerenciamento de usuários LDAP 10

(2)

1

Objetivos

• Configurar um servidor de dados e PDC (Personal Domain Controller )

Centralizar a base de usuários Windows e Linux em um único no servidor. Privilegiar soluções open-source, sem custo adicional de conexões e/ou licenças. • Ferramentas utilizadas: Samba 3.0.10 + OpenLDAP 2.2.13

2

Configuração do Sistema Operacional

Por razões de estabilidade, segurança e custo, o sistema operacional Linux 2.6.10 foi instalado no servidor em questão. Para manter a configuração mínima, sem recursos adicionais e desnecessários, a distribuição Linux escolhida foi o Slackware 10.1, que oferece, além da simplicidade de configuração e manutenção, a flexibilidade de manter-se apenas o mínimo necessário no sistema.

Entretanto, os passos a seguir poderão ser efetuados em qualquer distribuição linux recente, que apresente suporte às versões dos programas que serão necessários para atender aos requisitos determinados acima.

Os seguintes aplicativos foram instalados no sistema: • ferramentas GNU e core (série A)

• ambiente de desenvolvimento e bibliotecas compartilhadas C/C++ (série D e L) • ambiente de rede tcp/ip e openSSL (série N)

• aplicativos adicionais: db4 (Berkeley DB4) A configuração do ambiente consistiu em:

• Compilação da versão do Linux atual (2.6.10) adequada ao hardware detectado no servidor

• Configuração de uma rotina simples de controle de acesso via firewall e monitoramento de logs (TODO) • Criação de usuários/grupos:

– ldap/ldap: Serviço LDAP

3

Instalação dos serviços

As versões pré-compiladas dos programas, em geral, não atendem a todos os requisitos da aplicação. Por exemplo, o serviço LDAP necessita do suporte ao algoritmo “crypt”, ao backend “bdb” e à autenticação TLS/SSL. O Samba, por sua vez, necessita de suporte ao backend LDAP. Além disso, utilizar pacotes de terceiros pode prejudicar a integridade e performance do sistema.

Sendo assim, prosseguiremos com a instalação dos aplicativos através dos fontes obtidos nos sites oficiais destas aplicações:

• OpenLDAP:www.openldap.org • Samba 3:www.samba.org

Além destes programas, utilizaremos alguns aplicativos adicionais que serão mencionados no decorrer do texto.

(3)

3.1

OpenLDAP 2.2.13

Após descompactar a versão atual do OpenLDAP, prossiga com a instalação da seguinte forma: # CPPFLAGS="-I/usr/include/db4" ./configure --enable-crypt

# make depend && make # checkinstall

Neste caso, o OpenLDAP 2.2.23 foi instalado no diretório /usr/local, com suas configurações em /usr/local/etc. As bases serão instaladas em /usr/local/var. Altere as permissões desses diretórios para o usuário e grupo LDAP criado inicialmente.

O diretório /usr/etc/openldap será referenciado como $LDAPCONF de agora em diante. Vamos rodar nosso serviço de diretório através do seguinte script de inicialização:

# ! / b i n / sh # S c r i p t para i n i c i a r o LDAP CONFIG= " / u s r / l o c a l / e t c / openldap / s l a p d . c o n f " PID= " / u s r / l o c a l / v a r / run " DB= " / u s r / l o c a l / v a r / openldap−data " ARGS= "−4 −u l d a p −g l d a p " case " $1 " i n s t a r t ) / u s r / l o c a l / l i b e x e c / s l a p d $ARGS−h " l d a p : / / / l d a p s : / / / " & / u s r / s b i n / nscd & ; ; s t o p ) k i l l ‘ cat $PID / s l a p d . p i d ‘ ; ; s t a t s ) echo ‘ l s −l $DB / | grep t o t a l ‘ echo " p i d o f slapd ’ ’ ; ; * ) echo " Usage : $0 < s t a r t | s t o p | s t a t s > " ; ; esac Listing 1: rc.ldap

Nesse exemplo, utilizo onscdpara caching de nomes, o que requer a existência do diretório /var/run/nscd no filesystem.

3.2

SAMBA 3.0.10

Da mesma forma, prosseguimos com a instalação do Samba (3.0.10).

O diretório /var/log/samba deve ser criado para armazenar os logs. O seguinte suporte foi adicionado na compilação: --with-ldap --with-ldapsam --with-smbmount --enable-cups --with-syslog --with-logfilebase=/var/log/samba --with-quotas --with-acl-support

(4)

Para tanto, foi utilizado o “slackbuild” original do samba. Desta forma, o samba foi instalado em /usr (– prefix=/usr) e seus arquivos de configuração encontram-se em /etc/samba.

O script criado para iniciar/finalizar o samba é bastante simples:

# ! / b i n / sh # S c r i p t para i n i c i a r o Samba case $1 i n s t a r t ) / u s r / s b i n / smbd −D / u s r / s b i n / nmbd −D ; ; s t o p ) k i l l a l l smbd nmbd ; ;

* ) echo " Usage : $0 < s t a r t | stop > " ; ; esac

Listing 2: rc.samba

4

Configurando OpenLDAP

Primeiramente, definimos a seguinte estrutura inicial para nosso diretório LDAP:

Nossa árvore neste caso inicia com um domínio (“dc”), mas poderia ser uma organização, etc. Utilizaremos dominio.comneste exemplo. Altere de acordo com a sua configuração.

4.1

Configuração do “slapd”

Copie osamba.schema (encontrado em/usr/doc/samba-VERSION) para $LDAPCONF/schema/. Iniciamos a configuração do $LDAPCONF/slapd.conf:

# slapd.conf

# A ordem dos esquemas é relevante

include /usr/local/etc/openldap/schema/core.schema include /usr/local/etc/openldap/schema/cosine.schema include /usr/local/etc/openldap/schema/inetorgperson.schema include /usr/local/etc/openldap/schema/nis.schema include /usr/local/etc/openldap/schema/samba.schema # ACLs

access to attrs=sambaLMPassword,sambaNTPassword,userPassword by * read by self write access to * by * read

(5)

TLSCACertificateFile /usr/local/etc/openldap/ca/cacert.pem

TLSCertificateFile /usr/local/etc/openldap/ca/servercrt.pem

TLSCertificateKeyFile /usr/local/etc/openldap/ca/serverkey.pem

# Banco de dados LDAP

database bdb

suffix "dc=dominio,dc=com"

# Definimos a conta administradora como "Manager" rootdn "cn=Manager,dc=dominio,dc=com" # A senha deve ser gerada com o slappaswd

rootpw {SSHA}...

# Caminho para a base de dados LDAP

directory /usr/local/var/openldap-data

# índices para otimizar acesso

index objectClass eq

index uid eq

index gidNumber eq

index uidNumber eq

Precisamos gerar os certificados, conforme indicados nas cláusulas “TLS” (Transport Layer Security ), para permitir a conexão segura ao LDAP.

Para gerar os certificados, utilizamos o script CA.sh que acompanha o openSSL (/etc/ssl/misc), conforme os passos abaixo:

# mkdir $LDAPCONF/ca/ # CA.sh -newca

(Programa interativo. 'Common Name' deve ser igual ao hostname) (A seguir geramos o certificado do servidor)

# openssl req -new -nodes -keyout newreq.pem -out newreq.pem # CA.sh -sign

(Fonte: OpenLDAP FAQ)

Mova o cacert que foi gerado para nosso diretório de certificados no LDAP, e delete o diretório demoCA/. Renomeamos os certificados gerados para seguir o padrão sugerido (newcert.pem -> servercrt.pem, newreq -> serverkey.pem), e removemos a permissão de leitura:

# chmod 600 /usr/etc/openldap/ca/serverkey.pem

Voltando à configuração do LDAP, vamos indicar nosso certificado e base padrão em $LDAPCONF/ldap.conf: HOST 127.0.0.1

BASE dc=dominio,dc=com

TLS_CACERT /usr/local/etc/openldap/ca/cacert.pem

Isso encerra a configuração do daemon. Inicie-o. Verifique as respostas do servidor no log/var/log/debug. Caso ocorra algum problema, adicione o parâmetro “-d” seguido de um nível de debug aos argumentos passados aoslapdno script de inicialização.

Para prosseguirmos, o servidor LDAP deve estar no ar e aguardando conexões nas portas 389 (padrão) e 686 (SSL).

(6)

4.2

LDAP como um NIS

O programa de login de sistemas unix-like utilizam arquivos de “name service” (libnss_files e nsswitch.conf) para acessar a base de usuários (/etc/passwd) e proceder com a autenticação. Para configurar o LDAP como a base padrão de usuários/grupos, utilizaremos a libnss_ldap.

Pacotes utilizados (obtidos emwww.padl.com): NSS_ldap e MigrationTools. Após a instalação dos pacotes, modificamos o /etc/ldap.conf (não confundir com a configuração do openldap, em $LDAPCONF/ldap.conf) para indicar nossa base LDAP:

host 127.0.0.1

base dc=dominio,dc=com

rootbinddn cn=Manager,dc=dominio,dc=com Em seguinda, alteramos nosso nsswitch.conf: passwd files compat ldap

group files compat ldap shadow files compat ldap

Dessa forma, sempre que um usuário logar no sistema, ele será buscado tanto em “files” quanto em “ldap”. A partir de agora, todo o gerenciamento de usuários Unix de nossa rede será gerenciado pelo LDAP, ficando a cargo do “files” apenas os usuários padrão do sistema (ie, root).

PS: Inicie o LDAP antes dos processos que consultam a base de usuários, do contrário levará um tempo até o timeout da consulta. No Slackware, a chamada foi incluída no rc.M (multi-user runlevel). Na versão 10.1, há uma alteração de permissões do “utmp” no rc.S (modo single-user), o que causava lentidão no boot, sendo assim, essa alteração foi transferida após a inicialização do LDAP.

5

Gerando a base LDAP

5.1

Conceitos básicos

As operações de adição, remoção e busca de registros na base LDAP serão apresentadas nesta seção. Para adicionar “nós” ao LDAP, utiliza-se o padrão de arquivos LDIF. Uma forma de se entender este formato é através de um exemplo: # base.ldif dn: dc=dominio, dc=com dc: dominio objectClass: top objectClass: domain

O atributo “dn” (Distinguished Name) possui um significado especial, semelhante a um OID, sendo o respon-sável por distinguir cada elemento da árvore. Os atributos “objectClass” definem a situação do registro na hierar-quia.

O LDAP apresenta alguns atributos comuns, como “cn” (canonical name), “dc” (domain), “ou” (organization unit), etc, para representar seus elementos. No exemplo acima, definimos o “nó” inicial com um “dc” (domínio) no topo da hierarquia.

Para inserir o registro, podemos invocar o “slapd” diretamente para efetuar a inclusão: # slapadd -l base.ldif

Porém, este comando não faz verificações de autorização, etc (ver manpage). Vamos utilizar para isso o comando ldapadd:

(7)

# ldapadd -D cn=Manager,dc=dominio,dc=com -W -x -f

Os parâmetros -D e -W definem os critérios de autenticação para a inclusão do registro, o -x que utilizaremos conexão simples (sem Kerberos ou algo semelhante), e o -f indica o arquivo .LDIF. Após autenticado, o comando efetuará a inclusão do elemento em questão.

Para remover o registro, utilizamos o ldapdelete, que também não é interativo. Após efetuar a conexão, não haverá nenhuma saída, exceto se ocorrer um erro (por exemplo, Invalid credentials). No prompt indicamos o “dn” que desejamos excluir, e para sair, CTRL+D. Para mais informações, consulte a manpage.

Para buscar um registro, podemos listar toda a árvore (com slapcat ou ldapsearch -x), ou utilizar filtros. # ldapsearch -x -LLL "dc=dominio"

Não autenticamos para fazer a busca pois nossa ACL permite a busca por qualquer usuário. Altere isso de forma apropriada aos seus requisitos.

Ao incluir usuários com senhas, as senhas podem ser geradas pelo “slappasswd”, sendo que o algoritmo utilizado pelo Unix em geral é o CRYPT. As senhas do Windows, por sua vez, utilizam um esquema de dois “hashes” gerados por DES e MD4, e são em resumo, incompatíveis.

As bases do “bdb” são armazenadas no diretórioopenldap-data. Basta apagar este diretório para reiniciar a base do zero, sendo importante incluí-lo em procedimentos de backup.

Isso resume o funcionamento básico do LDAP.

5.2

Incluindo registros

O pacote “migration tools” é um conjunto de scripts para a exportação dos usuários/grupos originais do sistema (/etc/passwd, etc) no formato LDIF para a inclusão na base LDAP.

Podemos indicar alguns dados no arquivomigrate_common.phpara iniciar a geração dos LDIFs com alguns elementos pré-definidos, como o $DEFAULT_BASE (dc=dominio,dc=com). Depois disso executamos os seguintes scripts:

./migrate_base.pl > base.ldif

./migrate_passwd.pl /etc/passwd passwd.ldif ./migrate_group.pl /etc/group group.ldif

Conforme definido inicialmente, nossa “árvore” LDAP apresentará 2 nós: People (usuários) e Group (grupos). Edite obase.ldifde forma que apresente somente estes grupos. Da mesma forma, verifique o passwd.ldif e o group.ldif para migrar apenas o que considerar necessário nessa primeira fase (ie, o grupo “users” e algum usuário de teste).

Após gerados os arquivos LDIF, inclua-os com o “ldapadd” em nossa base. PS: “ou” representa nossos grupos, e “uid” nossas pessoas no diretório LDAP.

6

Configurando o Samba

6.1

Samba como PDC

O Samba 3.x opera como um PDC (Primary Domain Controller ) para redes Windows. Para isso, basta alterar a configuração do samba conforme exemplo que segue (/etc/samba/smb.conf):

netbios name = serverlx # NOME NETBIOS

workgroup = linuxpdc # NOME DOMINIO

server string = Samba PDC Server security = user

(8)

domain master = yes # aqui ativamos o PDC domain logons = yes

time server = yes logon drive = S:

hosts allow = 192.168.0. 127.

log file = /var/log/samba/\%m.log # separar o log unix charset = iso8859-1

display charset = cp850

veto files = /*.mp3/*.wmv/*.wma/*.avi/*.mpg/

Descomente também as linhas referentes ao netlogon, referindo-se ao local onde os scripts de logon serão armazenados.

O controle de acesso é feito através do cadastro do nome das máquinas e da admissão do usuário pelo “root”. O Domain Admin por padrão é o usuário root, cadastrado com smbpasswd root, porém, utilizaremos outros comandos compatíveis com o LDAP para gerenciar nossa base de usuários.

Teste a configuração com o comandotestparm. Ele deverá retornar: Server role: ROLE_DOMAIN_PDC.

6.2

Samba com LDAP

Por padrão, o Samba utiliza uma base flat-file para armazenar os dados das contas, além de necessitar que a mesma conta exista no Unix. Para centralizar a base de usuários Unix e Windows, utilizaremos nossa configuração LDAP. Altere o “smb.conf”, incluindo:

passdb backend = ldapsam:ldaps://127.0.0.1/ ldap admin dn = cn=Manager,dc=dominio,dc=com ldap suffix = dc=dominio,dc=com

ldap group suffix = ou=Group ldap user suffix = ou=People ldap machine suffix = ou=Machine

Para fins de legibilidade, as máquinas serão adicionadas em uma organization unit separada. Depois de adicionadas as entradas referentes ao LDAP, reinicie o serviço:

killall -HUP nmbd

Nosso Samba está pronto para comunicar-se com o OpenLDAP. Finalmente, configure a senha do Manager no Samba:

smbpasswd -w NOVASENHA

Associe também uma senha Samba ao nosso usuário “root”, que será o Domain Admin do PDC, através do comando:

# smbpasswd -a root

Observe que o único arquivo encontrado no diretório de bases do samba (/etc/samba/private) é o secrets.tdb, que deverá apresentar permissões restritivas. Isso demonstra que a base de usuários do samba realmente será obtida do LDAP.

6.2.1 Pacote smbldap-tools

(9)

A instalação dos scripts deve ser feita da seguinte forma. Copie os scripts (smbldap-*) para o /usr/local/s-bin. Crie um diretório /etc/smbldap-tools/ para armazenar os arquivos de configuração (smbldap.conf e sm-bldap_bind.conf). Altere a permissão (600) para este último. Copie também o “.pm” para o diretório de módulos Perl, e edite os caminhos para os arquivos de configuração que constam nas variáveis globais deste arquivo.

Osmbldap.confdeve ser configurado de acordo com nossas definições anteriores: SID (obtido com ``net getlocalsid'')

suffix="dc=dominio,dc=com" usersdn="ou=People,\${suffix}" computersdn="ou=Machine,\${suffix}" groupsdn="ou=Group,\${suffix}" hash-encrypt="CRYPT" userSmbHome="" userProfile=""

O comando net, que acompanha o Samba 3, é uma versão do comando “net” encontrado no Windows. O “getlocalsid” deverá criar uma entrada no LDAP referente ao sambaDomainName, lembrando que SIDs no Windows são equivalentes aos UIDs (salvo o fato de serem muito mais complexos de se gerar e gerenciar).

Observe também que o arquivo smbldap.conf menciona um “cn” chamado NextFreeUnixId, responsável pela geração de IDs sequenciais. Ele deverá ser gerado pelo smbldap-populate, que executaremos a seguir. Configure também o smbldap_bind.conf com os “dn”s corretos, e como a senha utilizada pelo smbldap-tools deverá ser definida nesse arquivo, configure persmissões restritivas.

Como os scripts smbldap-tools dependem de diversos módulos Perl, configure o acesso ao CPAN: # FTP_PASSIVE=1 perl -MCPAN -e shell

O script cpan2tgz, encontrado emsoftware.jaos.org pode auxiliar na manutenção dos módulos Perl. No caso, foi detectada a ausência dos seguintes módulos no sistema, e o cpan2tgz responsabilizou-se por gerar os pacotes de cada um deles:

# cpan2tgz Net::LDAP # cpan2tgz Crypt::SmbHash # cpan2tgz Digest::SHA1

Os pacotes serão gerados em /usr/src. Utilize os comandos “show” do smbldap-tools para certificar-se de que os scripts estão corretamente instalados, caso contrário, podem ocorrer erros inesperados.

A seguir, vamos popular a base com o comando smbldap-populate: # smbldap-populate

Como esse script gera a base do zero, e já possuimos os nós “dc” e “ou”, serão apresentadas mensagens informando deste fato. Basicamente, ele adicionará os usuários e grupos globais do Windows no LDAP.

Antes de efetuarmos os testes, reinicie o servidor LDAP.

Com o comandoslapcat | grep -i idmap, verifique se o grupo Idmap foi incluído. Verificamos a existência de uma conta “Administrator” com o comandogetent group | grep Administrator. O UID deve ser 0. Verifique também os grupos de domínio (getent group | grep Domain). Verifique os IDs destes grupos. Usuários com GID 512 serão administradores em suas máquinas.

Se tudo ocorrer ok, e os módulos perl estiverem instalados ok, podemos iniciar a criação de usuários do Samba.

6.2.2 Gerenciamento de usuários

(10)

# smbldap-useradd -w MACHINENAME A seguir, adicione um usuário: # smbldap-useradd -m -a USERPDC # smbldap-passwd USERPDC

Com isto, já temos um usuário válido no domínio. Também é possível adicionar grupos ao Samba para, posteriormente, associá-los a grupos do Windows através do comando:

# smbldap-groupadd -a MYGROUP

Com o comando net groupmap list, verifique a associação de um SID ao nosso grupo. Dessa forma, ele será visível às máquinas Windows.

Nas máquinas Windows, altere o domínio para LINUXPDC (definido em nosso smb.conf), e digite a senha de “root” associada ao Domain Admin, para permitir o ingresso da máquina previamente cadastrada no LDAP. Naturalmente, será preciso reiniciar o Windows, o que possibilitará o logon no domínio em questão com o usuário “USERPDC”, criado acima.

Isso encerra a configuração básica de nosso serviço. Nesse momento, nossas máquinas Windows, prévia-mente cadastradas no samba, já deverão autenticar normalprévia-mente em nosso domínio “PDC”. A partir daí podemos definir as políticas de acesso desses usuários, seus perfis, etc, o que está fora do escopo deste documento.

7

Ferramentas de gerenciamento de usuários LDAP

Nesse artigo, apresentamos a criação de usuários Unix através de templates LDIF, gerados pelo script Migrate-Tools. Para a criação de usuários Samba, a ferramenta smbldap-useradd demonstrou-se bastante eficiente. Com esse conjunto de ferramentas em modo texto, podemos criar/alterar/deletar e buscar usuários na base LDAP.

Para facilitar a administração de nosso servidor LDAP, existem algumas ferramentas de gerenciamento amigáveis (e gratuitas) em modo gráfico, destacando-se:

• phpldapadmin: ferramenta Web, obtida emsourceforge.net.

• LDAP Browser / Editor: ferramenta Java com suporte a conexão segura, obtida emhttp://snipurl.com/ ldapbrowser.

Para a utilização da primeira, é preciso que o PHP suporte conexões LDAP. O phpldapadmin apresenta uma interface amigável e completa, além de suporte total ao gerenciamento de usuários no Samba 3.

O LDAP Browser, por sua vez, não precisa de nenhuma configuração adicional. O LDAP Browser demostrou-se simples e funcional, e apesar de não possuir as facilidades do primeiro, suporta conexões demostrou-seguras e a impor-tação/exportação de arquivos LDIF.

8

Referências

• Documentação do sitewww.ldap.org.brLDAP-Brasil

• Using an LDAP Directory for Samba Authentication (fonte: IBM developerworks) • Smbldap-tools User Manual (fonte: idealx.org)

• SlackwareZine (.com.br)

Referências

Documentos relacionados

Por vezes, o localizador necessita de alterar não só o texto como também possíveis imagens ou a forma como estas são apresentadas, sendo o exemplo mais óbvio o caso de

Em 1981 esse grupo de enfermeiros elaborou um documento com atribuições do enfermeiro, oficializado pela direção da Secretaria (Porto Alegre, 1981) que definia aos chefes de

A seqüência analítica • Definição do problema • Escolha do método • Amostragem • Pré-tratamento da amostra • Medida • Calibração • Avaliação •

Após retirar, da maré observada, o valor da maré teórica, aplicou-se uma linha de tendência aos dados resultantes, a qual representa a variação do nível médio das águas no

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

Não houve diferença significativa para as variáveis comprimento de raízes comerciais e diâmetro de raízes comerciais; os clones 06 e 14 e a cultivar sergipana apresentaram

Em cada pico do diagrama, faz-se a divisão em igual número de barras de aço correspondentes aquele ponto, proporcionalmente à área de cada barra, definindo-se nos pontos gerados pelos

A requisição encontra-se pendente há mais de 24h, ou seja, a ARS/ ULS está em falta para com a unidade de diálise, uma vez que existe o compromisso de responder a