Avançar para a área de conteúdo

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Todas as informações enviadas são seguras.

  • Fechar [x]

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Todas as informações enviadas são seguras.

  • Fechar [x]

Configurar OpenAFS com suporte a Kerberos 5

Avinesh Kumar, Staff Software Engineer, IBM
Photo of Avinesh Kumar
Avinesh Kumar é líder técnico da Andrew File System Team nos IBM Software Labs em Pune, Índia. Ele trabalha para a IBM há cinco anos. Seus projetos atuais incluem aprimorar o IBM AFS® para novas versões e portar o IBM AFS para versões mais recentes do RedHat Enterprise Linux. Ele trabalha com dumps e travamentos de depuração em nível de kernel e de usuário, bem como erros relatados nas plataformas Linux, AIX e Solaris. Avinesh é formado em computação pelo Departamento de Ciências da Computação da Universidade de Pune. Ele é entusiasta de Linux e passa seu tempo livre explorando o kernel Linux em sua máquina com Maverick Ubuntu.
(Um autor Contribuidor do IBM developerWorks)

Resumo:  Com as vulnerabilidades identificadas no protocolo Kerberos 4, os usuários em todo o mundo são aconselhados a migrar para o Kerberos 5 para autenticação. O Kaserver, o componente do Andrew File System que lida com solicitações de autenticação, é um aplicativo baseado em Kerberos 4. Os usuários de IBM AFS® e OpenAFS (a versão terceirizada do IBM AFS, mantida pela comunidade OpenAFS) foram aconselhados a começar a usar o Kerberos 5. Este artigo fornece instruções passo a passo para a configuração de uma célula AFS usando o Kerberos 5 para autenticação.

Data:  04/Jul/2011
Nível:  Intermediário Também disponível em :   Inglês
Atividade:  1000 visualizações
Comentários:  


Visão geral

Começamos com uma introdução básica a AFS e Kerberos. Depois, configuraremos uma célula AFS usando a versão estável de OpenAFS 1.4.14 em RedHat Enterprise Linux 6. As etapas, porém, devem funcionar com pouca ou nenhuma diferença em outras distribuições de Linux e em outras versões de OpenAFS. Primeiro, configuraremos os serviços de Kerberos 5 e, em seguida, o OpenAFS.


Introdução breve ao AFS

O IBM AFS, ou OpenAFS, é um sistema de arquivos distribuído e baseado em rede em arquitetura cliente-servidor na qual hosts que cooperam compartilham seus recursos de sistema de arquivos a serem usados por clientes em redes local e de longa distância. Ele foi desenvolvido originalmente no Information Technology Center da Universidade Carnegie-Mellon, em Pittsburgh, Pensilvânia. Os principais pontos fortes do AFS são:

  • Namespace global
  • Transparência de local
  • Recurso de armazenamento em cache
  • Escalabilidade
  • Recursos de segurança e
  • Protocolo de comunicação robusto

Esses recursos permitem que o AFS seja conhecido como o avô dos sistemas de arquivos distribuídos, mesmo depois de tantos anos de desenvolvimento. O AFS está disponível em todas as principais plataformas em uso hoje.

Arquitetonicamente, o AFS tem dois componentes: um servidor e um cliente. A seguir, uma breve descrição da arquitetura do AFS.

  • Componente servidor (Vice) —Os servidores AFS são monitorados por um superservidor chamado de Basic OverSeer Server (BOS Server). Ele monitora o funcionamento dos processos AFS na máquina e pode ser utilizado para iniciar, parar, suspender ou continuar esses processos, ou para atualizar novos binários de servidor. O restante dos servidores se divide em duas categorias, a saber, de banco de dados e de arquivos.
    • Servidores de banco de dados — Os seguintes servidores pertencem à categoria de servidores de banco de dados:
      • Servidor de backup (buserver) — Mantém o banco de dados de backup para administrar todas as operações de backup nos servidores de banco de dados.
      • Servidor de local de volume (vlserver) — Mantém o banco de dados de local do volume (VLDB) para acompanhar todas as informações sobre os volumes e sua localização em um servidor de arquivos. O volume AFS é explicado abaixo. Vlserver suporta operações como consultas de local e status do volume, gerenciamento de ID de volume, criação, exclusão e modificação de entradas de VLDB.
      • Servidor de proteção (ptserver) — Mantém o banco de dados de proteção (PDB) que faz o mapeamento entre o nome do usuário ou do grupo e seus identificadores numéricos internos de AFS. Também é usado para criar, destruir, modificar e consultar a propriedade e associação.
      • Servidor de autenticação (kaserver) — Mantém o banco de dados de autenticação que usa para autenticar os usuários e responde com êxito a clientes com chamados de autenticação.
    • Servidores de arquivos
      • Servidor de arquivos (fileserver) — Manipula arquivos e diretórios que residem em volumes AFS, fornecendo acesso a uma solicitação do cliente devidamente autenticada. Fornece serviço de arquivo simples.
      • Servidor de salvamento (salvager) — Fornece o melhor esforço para recuperar dados armazenados em volumes AFS em um servidor de arquivos.
      • Servidor de volume (volser) — Permite a execução de tarefas administrativas relacionadas a volumes AFS, como criação, relocação, exclusão, replicação, etc.
  • Componente cliente (Venus) — O gerenciamento de cache AFS é cuidado por um cliente AFS (afsd), com a ajuda de um conjunto de daemons. Ele suporta armazenamento em cache em disco local e também na memória.

Os servidores AFS são aplicativos de nível de usuário, mas o AFS tem um módulo do kernel que intercepta as chamadas ao espaço AFS.


Conceitos básicos de AFS

Um conjunto de máquinas de servidor e cliente gerenciado e administrado por uma entidade administrativamente independente é chamado de uma célula AFS. Em uma célula AFS, pelo menos uma das máquinas deve estar executando processos do servidor de banco de dados e do servidor de arquivos. O restante das máquinas pode executar apenas o componente cliente.

O AFS armazena seus arquivos em volumes que usam espaço de armazenamento em máquinas que executam o componente de servidor de arquivos do AFS. Um volume AFS pode ser considerado um contêiner que guarda arquivos e diretórios. Esses volumes são projetados para que os administradores do sistema possam mover esses volumes para balanceamento de carga, etc., de uma máquina que executa o processo de servidor de arquivos para outra que executa o processo de servidor de arquivos, dentro da mesma célula AFS. Há um conjunto de operações que podem ser realizadas nesses volumes AFS, como replicação, dump de dados, backup, restauração, etc. Existem muitos outros conceitos relacionados a volumes que estão fora do escopo deste artigo.

Os processos de servidor de banco de dados executados em máquinas diferentes em uma célula AFS usam o protocolo Ubik para manter seus bancos de dados em sincronia. O protocolo Ubik ajuda a replicar bancos de dados, como VLDB, ADB e PDB, de forma consistente entre várias máquinas de servidor para melhorar sua disponibilidade e compartilhar as cargas de acesso entre os sites de replicação. Ele usa um algoritmo de complementação de quorum para sincronizar as informações dos bancos de dados.

Outro conceito importante é o mecanismo de comunicação usado por um servidor AFS, bem como por processos do cliente dentro ou entre células AFS, que é chamado de Rx. É um mecanismo de Chamada de Procedimento Remoto (RPC) que fornece um mecanismo de alto desempenho, multiencadeado e seguro para comunicação entre processos executados na mesma máquina, em uma rede local (LAN), bem como em uma rede de longa distância (WAN). A biblioteca Rx foi devidamente projetada para ser usada no kernel, bem como em aplicativos de espaço do usuário com interfaces de API semelhantes.


Breve introdução ao Kerberos

O Kerberos é um protocolo de autenticação de rede, desenvolvido no MIT, que utiliza uma chave simétrica compartilhada para estabelecer autenticação mútua. Chaves criptográficas similares podem ser usadas para criptografar e decriptografar as mensagens, portanto, ambos os lados têm garantia de que estão interagindo com o lado correto.

Conceitos básicos de Kerberos

Esta seção define os conceitos básicos de Kerberos utilizados neste artigo. A seguir, configuraremos uma região do Kerberos. Uma região representa um domínio administrativo de autenticação. Ela liga a autoridade de um servidor de autenticação ou AS (um componente da infraestrutura do Kerberos) dessa região para fornecer autenticação aos principais que pertencem à região. Os principais de Kerberos são entidades, como usuários, máquinas ou serviços, que precisam de serviço de autenticação. Os principais compartilham sua chave criptográfica com o servidor de autenticação da região a que pertencem.

Dois conceitos importantes relacionados a um principal são as chaves e os chamados.

  • Chave — Uma chave são os dados de criptografia normalmente derivados de uma senha de usuário que usa algoritmos de criptografia específicos. Para principais que não são usuários, uma chave é gerada aleatoriamente. Um Número de Versão de Chave (kvno) é usado para marcar as chaves.
  • Chamado — Um chamado constitui em dados de autenticação que um cliente apresenta para se autenticar em um servidor para um serviço. Um chamado é fornecido por um servidor de autenticação ao cliente usando uma chave criptográfica do servidor pretendido. Portanto, um cliente é incapaz de adivinhar o conteúdo do chamado.

Em uma infraestrutura do Kerberos, temos algo chamado de centro de distribuição de chaves, ou KDC, que fornece a funcionalidade de distribuição de chamados. Logicamente, ele fornece três serviços: manutenção de banco de dados de principais, servidor de autenticação (AS) e servidor de concessão de chamado (TGS). O KDC executa dois daemons importantes:

  • kadmind
    Esse é um daemon administrativo que gerencia um banco de dados de principais, suas chaves secretas e as configurações de política. kadmin.local e kadmin são comandos que permitem o acesso a essa funcionalidade em máquinas locais ou em máquinas remotas que executam o KDC, respectivamente.
  • krb5kdc
    Esse é um daemon significativo que lida com as solicitações de autenticação. Quando um usuário solicita um chamado de autenticação, ele vem para esse daemon.

Configuração do Kerberos 5

Antes de continuar, precisamos nos certificar de que os binários relacionados ao Kerberos 5 estão instalados na máquina. A seguir, os RPMs que devem ser instalados para a compilação e o uso de OpenAFS com suporte a Kerberos 5.

  1. krb5-workstation
  2. krb5-server
  3. krb5-libs
  4. krb5-devel

A Listagem 1 mostra os RPMs instalados na minha máquina de teste. Ela tem RPMs adicionais instalados além dos mencionados acima. A listagem também mostra uma breve descrição de cada um.


Listagem 1. RPMs relacionados a Kerberos 5

root@rhel6vm1 ~ # rpm -qa | grep krb5
krb5-workstation-1.8.2-3.el6.i686  <-- Basic Kerberos 5 related programs like kinit etc
krb5-auth-dialog-0.13-3.el6.i686   <-- For getting dialog box for Krb5 Tickets
krb5-appl-servers-1.0.1-1.el6.i686 <-- Kerberized application servers
krb5-server-1.8.2-3.el6.i686  <-- KDC and related programs for Kerberos 5
krb5-libs-1.8.2-3.el6.i686  <-- Shared libraries used by Kerberos 5
krb5-pkinit-openssl-1.8.2-3.el6.i686 <-- PKINIT plugin for Kerberos 5
krb5-appl-clients-1.0.1-1.el6.i686   <-- Kerberized clients for application servers
pam_krb5-2.3.11-1.el6.i686   <-- Pluggable Authentication Module for Kerberos 5
krb5-devel-1.8.2-3.el6.i686 <-- For developing Kerberos 5 based applications
root@rhel6vm1 ~ #

Vamos configurar uma região do Kerberos chamada VMKRB5. O nome de host da máquina que estamos usando é rhel6vm1.in.ibm.com. O principal arquivo de configuração do Kerberos 5 é /etc/krb5.conf. Esse arquivo de configuração é composto de seções para especificar opções de log, servidor de administração e informações instância de servidor KDC para determinada região, e valores de opções para Kerberos, etc.

A seguir, são fornecidas as informações sobre o KDC e o servidor de administração para a região VMKRB5 do Kerberos, na seção de região. As informações sobre outras regiões podem ser especificadas na mesma seção. São especificadas regiões para domínios diferentes na seção domain_realm. Para obter mais informações sobre esse arquivo, consulte as páginas de manual de krb5.conf.

A Listagem 2 fornece uma amostra de /etc/krb5.conf. Será preciso modificar:

  • valor de default_realm
  • valor de domain_realm
  • valores de kdc e
  • admin_server

da sua região do Kerberos.


Listagem 2. Amostra de listagem de /etc/krb5.conf

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = VMKRB5
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 allow_weak_crypto = true

[realms]

VMKRB5 = {
  kdc = rhel6vm1.in.ibm.com:88
  admin_server = rhel6vm1.in.ibm.com:749
 }

[domain_realm]
 .in.ibm.com = VMKRB5
 in.ibm.com = VMKRB5

[kdc]
 profile = /var/kerberos/krb5kdc/kdc.conf

[appdefaults]

 pam = {
   debug = false
   ticket_lifetime = 36000
   renew_lifetime = 36000
   forwardable = true
   krb4_convert = false
 }



O comportamento do servidor KDC é regido pelo arquivo de configuração /var/kerberos/krb5kdc/kdc.conf. Especificaremos o arquivo ACL (Access Control List), os tipos de criptografia suportados pelo KDC, etc., entre outras opções de regiões do Kerberos necessárias para o KDC. Na Listagem 3, é mostrado um arquivo de configuração de amostra do KDC. O nome da região precisa ser mudado adequadamente na seção de regiões de acordo com sua configuração.


Listagem 3. Amostra de listagem de /var/kerberos/krb5kdc/kdc.conf

[kdcdefaults]
 v4_mode = nopreauth
 kdc_tcp_ports = 88

[realms]
VMKRB5 = {
  master_key_type = des-cbc-crc
  acl_file = /var/kerberos/krb5kdc/kadm5.acl
  dict_file = /usr/share/dict/words
  admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
  supported_enctypes = des-cbc-crc:normal des-cbc-crc:v4 des-cbc-crc:afs3
 }

Note que o KDC é configurado para suportar tipos de criptografia que são variantes de des-cbc-crc, visto que este funciona bem com OpenAFS. O Kerberos 5 também suporta muitos outros tipos de criptografia. Para obter mais informações sobre o arquivo de configuração kdc.conf, consulte as páginas de manual de kdc.conf.

A Listagem 4 é um arquivo de configuração de amostra que define ACLs. Os administradores podem decidir definir ACLs de acordo com seus requisitos. O arquivo da lista de controle de acesso abaixo permite que todos os principais com instância de administração para nossa região VMKRB5 em todos os acessos


Listagem 4. Amostra de listagem de /var/kerberos/krb5kdc/kadm5.acl

*/admin@VMKRB5     *

Inicializando o banco de dados de Kerberos 5

Primeiro, inicializaremos o banco de dados do Kerberos 5 para a região VMKRB5 usando o Kerberos Database Maintenance Utility kdb5_util. A inicialização do banco de dados de Kerberos usando o kdb5_util é mostrada na Listagem 5.


Listagem 5. Inicializando o banco de dados do Kerberos 5

root@rhel6vm1 ~ # kdb5_util create -r VMKRB5 -s
Loading random data
Initializing database '/var/kerberos/krb5kdc/principal' for realm 'VMKRB5',
master key name 'K/M@VMKRB5.' You will be prompted for the database Master Password.
    It is important that you NOT FORGET this password.
Enter KDC database master key: <vmkrb5>
Re-enter KDC database master key to verify: <vmkrb5>

A opção -s diz ao kdb5_util para criar um arquivo stash (um arquivo que contém um conjunto de chaves secretas) para se autenticar. Se houver várias regiões definidas em /etc/krb5.conf, deve-se usar a opção -r para especificar a região na qual vai ser criado o banco de dados.

Iniciando os serviços do Kerberos 5

A Listagem 6 mostra os comandos para iniciar os serviços do Kerberos 5. Pode-se usar a ferramenta chkconfig para programar esse serviço para execução em níveis de execução específicos.


Listagem 6. Iniciando os serviços de Kerberos 5

root@rhel6vm1 ~ # service kadmin start
Starting Kerberos 5 Admin Server:                          [  OK  ]
root@rhel6vm1 ~ # service krb5kdc start
Starting Kerberos 5 KDC:                                   [  OK  ]

Definindo políticas básicas e contas de usuário

kadmin.local é um conjunto de comandos que pode ser usado em máquinas que executam o KDC. listprincs é um subcomando que é um alias para list_principals que lista os principais existentes no banco de dados.

O subcomando add_policy ou addpol nos permite definir políticas. Aqui, definimos políticas chamadas admin e service. Essas políticas indicam o comprimento mínimo da senha e o número mínimo de classes (como em caracteres alfabéticos, numerais e caracteres especiais, etc).

listpol lista todas as políticas definidas. getpol fornece informações detalhadas sobre a política especificada.

A Listagem 7 mostra o uso básico desses comandos.


Listagem 7. Políticas definidas
root@rhel6vm1 ~ # kadmin.local
Authenticating as principal avinesh/admin@VMKRB5 with password.
kadmin.local:  listprincs
K/M@VMKRB5 <-- Kerberos Master Key Principal
kadmin/admin@VMKRB5
kadmin/changepw@VMKRB5
kadmin/history@VMKRB5
kadmin/rhel6vm1.in.ibm.com@VMKRB5
krbtgt/VMKRB5@VMKRB5
kadmin.local:  add_policy -minlength 8 -minclasses 3 admin
kadmin.local:  addpol -minlength 8 -minclasses 4 service
kadmin.local:  listpols
admin
service
kadmin.local:  getpol admin
Policy: admin
Maximum password life: 0
Minimum password life: 0
Minimum password length: 8
Minimum number of password character classes: 3
Number of old keys kept: 1
Reference count: 0
Maximum password failures before lockout: 0
Password failure count reset interval: 0
Password lockout duration: 0

Todos os principais kadmin/*, como mostrado na listagem acima, como saída de listprocs, servem para várias tarefas de administração. krbtgt/VMKRB5@VMKRB5 é um principal para o Serviço de Concessão de Chamados.

Também estamos criando um principal chamado root/admin para nossa região VMKRB5, que atende à política de administração que acabamos de definir. Usaremos esse principal com kadmin, como mostrado na Listagem 8, para necessidades administrativas a partir de qualquer máquina na região.


Listagem 8. Incluindo o principal root/admin
kadmin.local:  addprinc -policy admin root/admin
Enter password for principal "root/admin@VMKRB5": <r00t123$>
Re-enter password for principal "root/admin@VMKRB5": <r00t123$>
Principal "root/admin@VMKRB5" created.
kadmin.local:  q

Criação do principal AFS e de chaves de serviço

O fragmento abaixo na Listagem 9 mostra o uso do conjunto de comandos kadmin para criar os principais afs/krb5afs.in.ibm.com, admin e avinesh. Ktadd acrescenta a chave para o principal especificado no arquivo determinado da Tabela de Chaves de Kerberos (keytab). Devemos ter certeza de que o arquivo keytab não existe, antes de emitir ktadd visto que queremos apenas uma entrada de chave para afs/krb5afs.in.ibm.com. O Número de Versão de Chave (kvno) 2 é de importância especial aqui porque precisamos especificar o mesmo kvno ao importar a chave no KeyFile a ser usada por AFS.


Listagem 9. Uso do conjunto de comandos kadmin para criar os principais

root@rhel6vm1 ~ # rm -f /etc/krb5.keytab.afs
root@rhel6vm1 ~ # kadmin -p root/admin
Authenticating as principal root/admin with password.
Password for root/admin@VMKRB5:
kadmin:  addprinc -policy service -randkey -e des-cbc-crc:normal afs/krb5afs.in.ibm.com
Principal "afs/krb5afs.in.ibm.com@VMKRB5" created.
kadmin:  ktadd -e des-cbc-crc:normal -k /etc/krb5.keytab.afs afs/krb5afs.in.ibm.com
Entry for principal afs/krb5afs.in.ibm.com with kvno 2, encryption type DES cbc mode with 
CRC-32 added to keytab WRFILE:/etc/krb5.keytab.afs.
kadmin:  addprinc -policy admin admin
Enter password for principal "admin@VMKRB5": <admin123$>
Re-enter password for principal "admin@VMKRB5": <admin123$>
Principal "admin@VMKRB5" created.
kadmin:  addprinc -policy admin avinesh
Enter password for principal "avinesh@VMKRB5": <avinesh123$>
Re-enter password for principal "avinesh@VMKRB5": <avinesh123$>
Principal "avinesh@VMKRB5" created.
kadmin:  q

klist lê o arquivo keytab e fornece informações detalhadas sobre todas as chaves do arquivo.

root@rhel6vm1 ~ # klist -kte /etc/krb5.keytab.afs
Keytab name: WRFILE:/etc/krb5.keytab.afs
KVNO Timestamp         Principal
---- ----------------- --------------------------------------------------------
   2 01/26/11 23:14:27 afs/krb5afs.in.ibm.com@VMKRB5 (DES cbc mode with CRC-32)


Obtendo a origem de OpenAFS e fazendo uma compilação de OpenAFS

Precisamos fazer o download da origem de OpenAFS do seu Web site usando wget, a ferramenta para downloads das máquinas Linux, para fazer o download de um arquivo tar compactado a partir da origem de OpenAFS.


Listagem 10. Fazendo o download de OpenAFS Source Stable Release 1.4.14

root@rhel6vm1 ~ # wget http://openafs.org/dl/openafs/1.4.14/openafs-1.4.14-src.tar.bz2
--2011-01-17 12:22:29-- http://openafs.org/dl/openafs/1.4.14/openafs-1.4.14-src.tar.bz2
Resolving openafs.org... 128.2.200.90
Connecting to openafs.org|128.2.200.90|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://dl.openafs.org/dl/openafs/1.4.14/openafs-1.4.14-src.tar.bz2 [following]
--2011-01-17 12:22:30-- http://dl.openafs.org/dl/openafs/1.4.14/openafs-1.4.14-src.tar.bz2
Resolving dl.openafs.org... 128.2.201.26
Connecting to dl.openafs.org|128.2.201.26|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11813993 (11M) [application/x-tar]
Saving to: `openafs-1.4.14-src.tar.bz2'

82% [========================================>         ] 9,709,310   22.4K/s  eta 57s

Configurando a origem de OpenAFS para executar uma compilação

Vale a pena ler a saída de ./configure --help para ver as opções de configuração disponíveis em OpenAFS.

A listagem a seguir mostra os comandos para configurar a origem de OpenAFS com o suporte a Kerberos 5. make é para a compilação e make dest cria uma estrutura de diretório de estilo Transarc com binários.


Listagem 11. Configurando a origem de OpenAFS com suporte a Kerberos 5

root@rhel6vm1 openafs-1.4.14 # which krb5-config
/usr/bin/krb5-config
root@rhel6vm1 openafs-1.4.14 # ./configure --with-afs-sysname=i386_linux26 
                                --enable-transarc-paths \
                                --with-krb5-conf=/usr/bin/krb5-config
root@rhel6vm1 openafs-1.4.14 # make
root@rhel6vm1 openafs-1.4.14 # make dest

Criação de diretórios específicos de AFS

O OpenAFS suporta armazenamento em cache baseado em disco e em memória. Quando um cliente OpenAFS é configurado para fazer armazenamento em cache no disco local, convencionalmente ele armazena os dados relacionados ao cache em um diretório chamado /usr/vice/cache. Recomenda-se que uma partição separada seja utilizada para armazenar os dados em cache. Normalmente, um usuário criaria uma partição, faria um sistema de arquivos (geralmente o ext3 no Linux) e montaria o sistema de arquivos no diretório /usr/vice/cache. Se os administradores de AFS escolherem usar um diretório diferente para isso, deverão especificá-lo no arquivo /usr/vice/etc/cacheinfo. A mais explicações sobre /usr/vice/etc/cacheinfo na seção Configuração de cache em disco do cliente AFS abaixo.

Uma máquina que executa o servidor de arquivos AFS precisa ter pelo menos uma partição ou volume lógico para armazenar volumes AFS. Cada partição é montada em um diretório chamado /vicepxx, no qual xx significa uma ou duas letras do alfabeto, em minúsculas. Os administradores em geral têm partições como /vicepa a /vicepz, e depois /vicepaa a /vicepaz. Se forem necessárias mais partições vice, são usadas /vicepba a /vicepbz, e assim por diante. O OpenAFS permite que os usuários utilizem o diretório regular /vicepxx para armazenar volumes de AFS, se este contiver um arquivo chamado AlwaysAttach. Aconselhamos, porém, que haja partições separadas para o servidor AFS, em vez do diretório regular.


Listagem 12. Criando diretórios para armazenar binários AFS e arquivos de configuração
root@rhel6vm1 openafs-1.4.14 # mkdir /afs
root@rhel6vm1 openafs-1.4.14 # chmod 777 /afs
root@rhel6vm1 openafs-1.4.14 # mkdir -p /usr/vice/etc
root@rhel6vm1 openafs-1.4.14 # mkdir -p /usr/afs
root@rhel6vm1 openafs-1.4.14 # mkdir -p /usr/afsws


Listagem 13. Copiando binários OpenAFS

root@rhel6vm1 openafs-1.4.14 # cd i386_linux26/dest
root@rhel6vm1 dest # cp -rp root.client/usr/vice/etc/* /usr/vice/etc
root@rhel6vm1 dest # cp -p  root.client/usr/vice/etc/afs.rc /etc/rc.d/init.d/afs
root@rhel6vm1 dest # cp root.client/usr/vice/etc/afs.conf /etc/sysconfig/afs
root@rhel6vm1 dest # cp -rp root.server/usr/afs/* /usr/afs
root@rhel6vm1 dest # cp -rp bin/ etc/ include/ lib/ /usr/afsws
root@rhel6vm1 dest # ln -s /usr/afs/bin/bos /usr/bin/bos

O arquivo de configuração /etc/sysconfig/afs tem opções que precisam ser ajustadas para a execução do cliente AFS, do seu servidor e dos parâmetros do gerenciador de cache (como tipo de armazenamento em cache - em disco ou na memória, e outras variáveis importantes). Se o cliente e o servidor AFS estarão em execução ao mesmo tempo, o arquivo /etc/sysconfig/afs deve ter AFS_CLIENT e AFS_SERVER definidos como "on".


Configuração da célula AFS

Aqui, configuraremos uma célula AFS chamada krb5afs.in.ibm.com na nossa máquina rhel6vm1.in.ibm.com.

Para conveniência durante a instalação de OpenAFS, armazenaremos o nome da célula e da máquina (que executará os servidores de arquivos) nas variáveis de ambiente CELLNAME e SERVERNAME, respectivamente.

root@rhel6vm1 ~ # export CELLNAME=krb5afs.in.ibm.com
root@rhel6vm1 ~ # export SERVERNAME=rhel6vm1.in.ibm.com

Definindo o nome da célula AFS

Como mostrado na Listagem 14, iniciamos bosserver no modo noauth , de modo que ele não precise que tenhamos autorização.


Listagem 14. Iniciando bosserver
root@rhel6vm1 ~ # /usr/afs/bin/bosserver -noauth &
[1] 25631
root@rhel6vm1 ~ #
[1]+  Done                    /usr/afs/bin/bosserver -noauth
root@rhel6vm1 ~ # /usr/afs/bin/bos setcellname $SERVERNAME $CELLNAME -noauth
root@rhel6vm1 ~ # /usr/afs/bin/bos listhosts $SERVERNAME -noauth
Cell name is krb5afs.in.ibm.com
    Host 1 is rhel6vm1.in.ibm.com

bos setcellname permite a definição de um nome de célula e bos listhosts fornece informações sobre máquinas de servidor na célula AFS.

O fragmento de código na Listagem 15 mostra a criação de instâncias de servidor de proteção AFS (ptserver) e de servidor de localização de volume AFS (vlserver).


Configuração do servidor AFS


Listagem 15. Criando instâncias de servidor de banco de dados

root@rhel6vm1 ~ # /usr/afs/bin/bos create $SERVERNAME ptserver simple \
                               /usr/afs/bin/ptserver -cell $CELLNAME -noauth
root@rhel6vm1 ~ # /usr/afs/bin/bos create $SERVERNAME vlserver simple \
                               /usr/afs/bin/vlserver -cell $CELLNAME -noauth

Acrescentando chaves a ser usadas por AFS

Usaremos o comando asetkey para acrescentar as chaves que exportamos antes no arquivo keytab /etc/krb5.keytab.afs para o principal de serviço AFS afs/krb5afs.in.ibm.com , de modo que possa ser usado por AFS. Note que especificamos o mesmo valor de kvno de 2 aqui, como mencionamos acima.


Listagem 16. Incluindo chaves com asetkey
root@rhel6vm1 ~ # /usr/afs/bin/asetkey add 2 /etc/krb5.keytab.afs afs/krb5afs.in.ibm.com
root@rhel6vm1 ~ # /usr/afs/bin/bos listkeys $SERVERNAME -cell $CELLNAME
key 2 has cksum 4052960223
Keys last changed on Fri Jan 21 12:33:42 2011.
All done.

bos listkeys exibe as informações de criptografia do servidor AFS armazenadas no arquivo /usr/afs/etc/KeyFile.

Acrescentando usuários privilegiados

Os comandos na Listagem 17 definem um usuário privilegiado que seria autorizado a fazer trabalho administrativo para essa célula AFS. As informações sobre esses usuários administrativos são armazenadas no arquivo /usr/afs/etc/UserList na máquina do servidor de banco de dados.


Listagem 17. Definindo usuários administrativos na célula AFS
root@rhel6vm1 ~ # /usr/afs/bin/bos adduser $SERVERNAME admin \
                                             -cell $CELLNAME -noauth
root@rhel6vm1 ~ # /usr/afs/bin/bos adduser $SERVERNAME avinesh \
                                             -cell $CELLNAME -noauth
root@rhel6vm1 ~ # /usr/afs/bin/bos listusers -s $SERVERNAME \
                                             -cell $CELLNAME -noauth
SUsers are: admin avinesh

bos adduser acrescenta os usuários admin e avinesh à lista de usuários privilegiados. bos listusers lista todos esses usuários a partir do arquivo UserList .

Acrescentando usuários ao banco de dados do servidor de proteção AFS

A Listagem 18 mostra a criação dos usuários admin e avinesh usando a opção createuser da ferramenta pts. Acrescentamos esses usuários ao grupo predefinido de administradores de sis tema AFS system:administrators usando a opção adduser de pts.


Listagem 18. Criando usuários no banco de dados ptserver
root@rhel6vm1 ~ # /usr/afs/bin/pts createuser -name admin   -noauth
User admin has id 1
root@rhel6vm1 ~ # /usr/afs/bin/pts createuser -name avinesh   -noauth
User avinesh has id 2
root@rhel6vm1 ~ # /usr/afs/bin/pts adduser admin system:administrators -noauth
root@rhel6vm1 ~ # /usr/afs/bin/pts adduser avinesh system:administrators -noauth
root@rhel6vm1 ~ # /usr/afs/bin/pts membership admin -noauth
Groups admin (id: 1) is a member of:
  system:administrators
root@rhel6vm1 ~ # /usr/afs/bin/pts membership avinesh -noauth
Groups avinesh (id: 2) is a member of:
  system:administrators
root@rhel6vm1 ~ # /usr/afs/bin/pts listentries -c $CELLNAME -localauth
Name                          ID  Owner Creator
anonymous                  32766   -204    -204
admin                          1   -204   32766
avinesh                        2   -204   32766

A opção de associação mostra os detalhes de associação de determinado usuário. pts listentries lista todos os usuários do banco de dados do servidor de proteção juntamente com seus IDs.

Iniciando os processos do servidor de arquivos AFS

A Listagem 19 mostra os comandos para criar e iniciar os processos do servidor de arquivos. Usaremos o comando bos status para verificar se esses processos estão em execução.


Listagem 19. Criando e iniciando processos de servidor de arquivos
root@rhel6vm1 ~ # /usr/afs/bin/bos restart $SERVERNAME -all -cell $CELLNAME -noauth
root@rhel6vm1 ~ # /usr/afs/bin/bos create $SERVERNAME fs fs \
                                        /usr/afs/bin/fileserver \
                                        /usr/afs/bin/volserver  \
                                        /usr/afs/bin/salvager   \
                                        -cell $CELLNAME -noauth
root@rhel6vm1 ~ # /usr/afs/bin/bos status $SERVERNAME fs -long -noauth
Instance fs, (type is fs) currently running normally.
    Auxiliary status is: file server running.
    Process last started at Fri Jan 21 10:45:11 2011 (2 proc starts)
    Command 1 is '/usr/afs/bin/fileserver'
    Command 2 is '/usr/afs/bin/volserver'
    Command 3 is '/usr/afs/bin/salvager'

Criação de volumes AFS

Um único volume é escolhido como raiz do espaço no arquivo AFS para determinada organização. Por convenção, esse volume é chamado de root.afs. Cada cliente nessa organização executa um mount() de UNIX desse volume raiz em /afs, anexando assim o inteiro namespace de AFS nesse ponto.

O gerenciador de cache de AFS monta a raiz do sistema de arquivos AFS em geral em /afs ou conforme definido no arquivo de configuração /usr/vice/etc/cacheinfo. O gerenciador de cache de AFS monta internamente o volume root.afs no caminho /afs. O volume root.afs contém os pontos de montagem dos volumes raiz de todas as células, como descrito no banco de dados de todas as células conhecidas desse cliente, no arquivo /usr/vice/etc/CellServDB. Se um cliente precisa acessar uma célula estrangeira (isto é, uma célula que não seja a local), precisamos fornecer detalhes ao servidor sobre essa célula nesse arquivo.


Listagem 20. Criando volumes AFS com vos
root@rhel6vm1 ~ # /usr/afs/bin/vos create -s $SERVERNAME -pa a -name root.cell \
                                                    -maxq 30000 -c $CELLNAME -noauth
Volume 536870912 created on partition /vicepa of rhel6vm1.in.ibm.com
root@rhel6vm1 ~ # /usr/afs/bin/vos create -s $SERVERNAME -pa a -name root.afs \
                                                   -maxq 30000 -c $CELLNAME -noauth
Volume 536870915 created on partition /vicepa of rhel6vm1.in.ibm.com
root@rhel6vm1 ~ # /usr/afs/bin/vos listvol -s $SERVERNAME -c $CELLNAME -noauth
Total number of volumes on server rhel6vm1.in.ibm.com partition /vicepa: 2
root.afs                          536870915 RW          2 K On-line
root.cell                         536870912 RW          2 K On-line

Total volumes onLine 2 ; Total volumes offLine 0 ; Total busy 0


Configuração do cliente AFS

Configurando o cliente e o servidor AFS em determinada célula

Por padrão, o processo de instalação cria o arquivo de configuração /usr/vice/etc/ThisCell como link simbólico com /usr/afs/etc/ThisCell, com o nome de célula que acabamos de escolher como seu conteúdo. O arquivo /usr/vice/etc/ThisCell contém nomes de células locais para esse cliente AFS enquanto /usr/afs/etc/ThisCell contém nomes de células cujos servidores de banco de dados estarão em execução nessa máquina. Uma máquina pode executar cliente e servidores AFS para a mesma célula, bem como para células diferentes. Se você necessita do cliente AFS para uma célula AFS com servidores AFS em execução em uma célula AFS diferente, precisamos ter /usr/vice/etc/ThisCell como um arquivo separado, em vez de como link simbólico, com os nomes de célula desejados como conteúdo .

Com os comandos mostrados na Listagem 21, configuramos a máquina para executar o cliente e o servidor AFS na mesma célula, mas teremos o arquivo de configuração /usr/afs/etc/ThisCell e o /usr/vice/etc/ThisCell separadamente.


Listagem 21. Configurando cliente AFS e associação e servidor da máquina
root@rhel6vm1 ~ # ls -l /usr/vice/etc/ThisCell
lrwxrwxrwx. 1 root root 21 Jan 21 10:31 /usr/vice/etc/ThisCell -> /usr/afs/etc/ThisCell
root@rhel6vm1 ~ # cat /usr/afs/etc/ThisCell
krb5afs.in.ibm.com
root@rhel6vm1 ~ # rm -f /usr/vice/etc/ThisCell
root@rhel6vm1 ~ # cp /usr/afs/etc/ThisCell  /usr/vice/etc/ThisCell
root@rhel6vm1 ~ # cat /usr/vice/etc/ThisCell
krb5afs.in.ibm.comroot@rhel6vm1 ~ # cat /usr/afs/etc/ThisCell
krb5afs.in.ibm.com

Acesso a células AFS estrangeiras

Os arquivos de configuração /usr/vice/etc/CellServDB e /usr/afs/etc/CellServDB contêm informações de servidor de banco de dados para o cliente e para o servidor AFS, respectivamente. O arquivo /usr/afs/etc/CellServDB contém informações de servidor de banco de dados da célula AFS para a qual determinada máquina está executando o servidor AFS. Tem informações sobre uma das células AFS. O arquivo /usr/vice/etc/CellServDB, porém, contém detalhes sobre os servidores de banco de dados de toda a célula AFS que esse cliente AFS precisa acessar.

Novamente, o processo de instalação cria /usr/vice/etc/CellServDB como link simbólico para /usr/afs/etc/CellServDB. A seguir, manteremos esses dois arquivos separados em casos nos quais o cliente precisa acessar outras células AFS. Basta acrescentar as informações da célula ao arquivo /usr/vice/etc/CellServDB.


Listagem 22. Criando o arquivo CellServDB
root@rhel6vm1 ~ # cat /usr/afs/etc/CellServDB
>krb5afs.in.ibm.com     #Krb5 AFS Test Cell
192.168.110.129    #rhel6vm1.in.ibm.com
root@rhel6vm1 ~ # ls -l /usr/vice/etc/CellServDB
lrwxrwxrwx 1 root root 23 Jan 21 10:31 /usr/vice/etc/CellServDB -> /usr/afs/etc/CellServDB
root@rhel6vm1 ~ # rm -f /usr/vice/etc/CellServDB
root@rhel6vm1 ~ # cp /usr/afs/etc/CellServDB  /usr/vice/etc/CellServDB

Configuração de cache em disco do cliente AFS

AFS pode ser configurado para armazenar em cache localmente os dados em disco ou na memória. Isso pode ser especificado no arquivo de configuração de AFS /etc/sysconfig/afs. O arquivo de configuração /usr/vice/etc/cacheinfo tem informações sobre o ponto de montagem do sistema de arquivos AFS, o caminho onde o AFS armazenará os dados (no caso de cache em disco) e o número de blocos a usar para o tamanho de cache. Aqui, especificaremos um cache com tamanho de 8,15,000 KB:

root@rhel6vm1 ~ # cat /usr/vice/etc/cacheinfo
/afs:/usr/vice/cache:815000


Etapa final

Neste ponto, quase concluímos a configuração. Ainda precisamos parar os serviços AFS em execução no momento usando o comando service afs stop. O gerenciador de cache do AFS monta o volume root.afs em /afs (ou, como mencionado no arquivo /usr/vice/etc/cacheinfo). Agora, vamos montar o volume root.cell que criamos antes.

A convenção seguida é montá-lo em um diretório chamado pelo nome da célula em /afs. Portanto, montaremos o volume root.cell em /afs/krb5afs.in.ibm.com. É muito importante desativar a opção dynroot do cliente AFS (afsd). Para isso, precisamos modificar o arquivo/etc/sysconfig/afs e definir ENABLE_DYNROOT=off. Com dynroot, o diretório /afs é preenchido com subdiretórios com os nomes de célula AFS, conforme definido no arquivo /usr/vice/etc/CellServDB. Ele não carrega o volume root.afs a partir do servidor de arquivos e vai atrás do volume root.cell diretamente, e apenas quando um usuário tenta acessar o diretório no qual o volume root.cell está montado.

Precisamos ter também o nome da região no arquivo /usr/afs/etc/krb.conf, visto que nosso nome de região é diferente do nome de célula AFS. A Listagem 23 mostra os comandos com o nome de região em /usr/afs/etc/krb.conf, iniciando os serviços AFS, configurando ACL em /afs e montando o volume root.cell.


Listagem 23. Configuração de nome de região
root@rhel6vm1 ~ # service afs stop
Stopping AFS services.....
Stopping AFS bosserver
root@rhel6vm1 ~ #
root@rhel6vm1 / # echo "VMKRB5" > /usr/afs/etc/krb.conf
root@rhel6vm1 ~ # service afs start
Starting AFS services.....
afsd: All AFS daemons started.
root@rhel6vm1 / # /usr/afs/bin/fs setacl /afs system:anyuser rl
root@rhel6vm1 / # cd /afs
root@rhel6vm1 /afs # /usr/afs/bin/fs mkm krb5afs.in.ibm.com -vol root.cell \
                                                       -c krb5afs.in.ibm.com
root@rhel6vm1 /afs # ln -s krb5afs.in.ibm.com krb5afs


Pronto!

Agora terminamos a configuração de AFS, bem como de Kerberos 5. É bom reiniciar a máquina depois de fazer essas configurações. Depois que a máquina reiniciar, abriremos os serviços de Kerberos 5 e AFS. Nesse ponto, podemos ativar a opção dynroot para afsd, antes de iniciar os serviços de AFS.

Na Listagem 24, usamos kinit para obter um chamado do Kerberos 5 para o principal avinesh. klist mostra uma listagem de todos os chamados de Kerberos 5 em cache.


Listagem 24. Obtendo o chamado de Kerberos 5
root@rhel6vm1 ~ # kinit avinesh
Password for avinesh@VMKRB5:
root@rhel6vm1 ~ # klist -5f
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: avinesh@VMKRB5

Valid starting     Expires            Service principal
01/26/11 23:18:35  01/27/11 23:18:35  krbtgt/VMKRB5@VMKRB5
        renew until 01/26/11 23:18:35, Flags: FRI

aklog é usado para definir tokens AFS com base em chamados de Kerberos 5. A opção -d é opcional, visto que mostra informações detalhadas sobre seu funcionamento. tokens mostra os tokens AFS mantidos no gerenciador de cache do AFS, como mostrado na Listagem 25. Quando um cliente AFS tenta acessar o espaço AFS, ele talvez tenha de fornecer os dados de token para obter acesso aos dados que está solicitando.


Listagem 25. Tokens AFS
		
root@rhel6vm1 ~ # service afs start
Starting AFS services.....
afsd: All AFS daemons started.
root@rhel6vm1 ~ #
root@rhel6vm1 ~ # aklog -d
Authenticating to cell krb5afs.in.ibm.com (server rhel6vm1.in.ibm.com).
Trying to authenticate to user's realm VMKRB5.
Getting tickets: afs/krb5afs.in.ibm.com@VMKRB5
Using Kerberos V5 ticket natively
About to resolve name avinesh to id in cell krb5afs.in.ibm.com.
Id 2
Set username to AFS ID 2
Setting tokens. AFS ID 2 /  @ VMKRB5
root@rhel6vm1 ~ #
root@rhel6vm1 ~ # tokens

Tokens held by the Cache Manager (UID Based Tokens):

User's (AFS ID 1) tokens for afs@krb5afs1.in.ibm.com [Expires Feb  8 07:00]
   --End of list--
root@rhel6vm1 ~ #



Resumo

Este artigo explicou como entrar no amplo mundo do AFS usando OpenAFS e Kerberos 5 KDC para autenticação. Há muitos outros recursos do AFS que estão disponíveis aos administradores de sistemas há mais de 20 anos. Para obter mais informações sobre AFS e Kerberos 5, veja a seção Recursos, abaixo, e acesse os links da documentação.


Agradecimento

Gostaria de agradecer a Anthony Todd DeSantis do Suporte e Desenvolvimento IBM AFS por tirar o tempo de sua agenda apertada para fazer comentários e dar informações úteis que aprimoraram este artigo.


Recursos

Aprender

Obter produtos e tecnologias

  • versão de teste do software IBM: inove o seu próximo projeto de desenvolvimento de software livre usando software para teste, disponível para download ou em DVD.

Discutir

  • comunidade do developerWorks: Entre em contato com outros usuários do developerWorks e explore os blogs, fóruns, grupos e wikis voltados para desenvolvedores.

Sobre o autor

Photo of Avinesh Kumar nível de autor Contribuidor do developerWorks

Avinesh Kumar é líder técnico da Andrew File System Team nos IBM Software Labs em Pune, Índia. Ele trabalha para a IBM há cinco anos. Seus projetos atuais incluem aprimorar o IBM AFS® para novas versões e portar o IBM AFS para versões mais recentes do RedHat Enterprise Linux. Ele trabalha com dumps e travamentos de depuração em nível de kernel e de usuário, bem como erros relatados nas plataformas Linux, AIX e Solaris. Avinesh é formado em computação pelo Departamento de Ciências da Computação da Universidade de Pune. Ele é entusiasta de Linux e passa seu tempo livre explorando o kernel Linux em sua máquina com Maverick Ubuntu.

Ajuda para Relatar Abuso

Relatar abuso

Obrigado. Esta entrada foi sinalizada para atenção do moderador.


Ajuda para Relatar Abuso

Relatar abuso

Falha no envio do Relatório de abuso. Tente novamente mais tarde.


developerWorks: Registre-se


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Selecione seu nome de exibição

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

(Deve possuir de 3 a 31 caracteres.)


Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Classificar este artigo

Comentários

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Software livre
ArticleID=697133
ArticleTitle=Configurar OpenAFS com suporte a Kerberos 5
publish-date=07042011
author1-email=avineshkarn@in.ibm.com
author1-email-cc=

Conheça a IBM da sua cidade

Virtual Branch Office Brasil

A IBM está mais perto do que você imagina!


Tags

Help
Use o campo de pesquisa para encontrar todos os tipos de conteúdo no My developerWorks com essa tag.

Use a barra de rolagem para ver mais ou menos tags.

Tags populares mostra as principais tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Minhas tags mostra suas tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Use o campo de pesquisa para localizar todos os tipos de conteúdo no Meu developerWorks com essa tag. Tags populares mostra as tags principais para essa zona de conteúdo particular (por exemplo, tecnologia Java, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere). Minhas tags mostra as suas tags para essa zona de conteúdo em particular (por exemplo, tecnologia Java, Linux, WebSphere).