Pesquisa de site

Configurando o Servidor NFS com Autenticação Baseada em Kerberos para Clientes Linux - Parte 7


No último artigo desta série, revisamos como configurar um compartilhamento Samba em uma rede que pode consistir em vários tipos de sistemas operacionais. Agora, se você precisar configurar o compartilhamento de arquivos para um grupo de clientes do tipo Unix, você pensará automaticamente no Sistema de Arquivos de Rede, ou NFS, para abreviar.

Neste artigo, orientaremos você no processo de uso da autenticação baseada em Kerberos para compartilhamentos NFS. Supõe-se que você já tenha configurado um servidor NFS e um cliente. Caso contrário, consulte instalar e configurar o servidor NFS – que listará os pacotes necessários que precisam ser instalados e explicará como realizar as configurações iniciais no servidor antes de prosseguir.

Além disso, você desejará configurar o SELinux e o firewalld para permitir o compartilhamento de arquivos através do NFS.

O exemplo a seguir pressupõe que seu compartilhamento NFS esteja localizado em /nfs na box2:

semanage fcontext -a -t public_content_rw_t "/nfs(/.*)?"
restorecon -R /nfs
setsebool -P nfs_export_all_rw on
setsebool -P nfs_export_all_ro on

(onde o sinalizador -P indica persistência entre reinicializações).

Finalmente, não se esqueça de:

Criar grupo NFS e configurar diretório de compartilhamento NFS

1. Crie um grupo chamado nfs e adicione o usuário nfsnobody a ele, depois altere as permissões de /nfs diretório para 0770 e seu proprietário de grupo para nfs. Assim, nfsnobody (que é mapeado para as solicitações do cliente) terá permissões de gravação no compartilhamento) e você não precisará usar no_root_squash no /etc /exportações arquivo.

groupadd nfs
usermod -a -G nfs nfsnobody
chmod 0770 /nfs
chgrp nfs /nfs

2. Modifique o arquivo de exportação (/etc/exports) da seguinte forma para permitir acesso somente a partir de box1 usando Kerberos segurança (sec=krb5).

Observação: o valor de anongid foi definido como o GID do nfs grupo que criamos anteriormente:

/nfs box1(rw,sec=krb5,anongid=1004)

3. Reexporte (-r) todos os (-a) compartilhamentos NFS. Adicionar detalhamento à saída (-v) é uma boa ideia, pois fornecerá informações úteis para solucionar problemas do servidor se algo der errado:

exportfs -arv

4. Reinicie e ative o servidor NFS e os serviços relacionados. Observe que você não precisa ativar nfs-lock e nfs-idmapd porque eles serão iniciados automaticamente pelos outros serviços na inicialização:

systemctl restart rpcbind nfs-server nfs-lock nfs-idmap
systemctl enable rpcbind nfs-server

Ambiente de teste e outros pré-requisitos

Neste guia usaremos o seguinte ambiente de teste:

  1. Máquina cliente [box1: 192.168.0.18]
  2. Servidor NFS/Kerberos [box2: 192.168.0.20] (também conhecido como Centro de distribuição de chaves ou KDC, abreviadamente).

Nota: que o serviço Kerberos é crucial para o esquema de autenticação.

Como você pode ver, o servidor NFS e o KDC estão hospedados na mesma máquina para simplificar, embora você possa configurá-los em máquinas separadas se tiver mais disponíveis. Ambas as máquinas são membros do domínio mydomain.com.

Por último, mas não menos importante, Kerberos requer pelo menos um esquema básico de resolução de nomes e que o serviço Network Time Protocol esteja presente tanto no cliente quanto no servidor, uma vez que a segurança da autenticação Kerberos é em parte baseada nos carimbos de data e hora do ingressos.

Para configurar a resolução de nomes, usaremos o arquivo /etc/hosts no cliente e no servidor:

192.168.0.18    box1.mydomain.com    box1
192.168.0.20    box2.mydomain.com    box2

No RHEL 7, chrony é o software padrão usado para sincronização NTP:

yum install chrony
systemctl start chronyd
systemctl enable chronyd

Para ter certeza de que chrony está realmente sincronizando a hora do seu sistema com os servidores de horário, você pode querer emitir o seguinte comando duas ou três vezes e certificar-se de que o deslocamento está chegando perto de zero:

chronyc tracking

Instalando e configurando Kerberos

Para configurar o KDC, instale os seguintes pacotes no servidor e no cliente (omita o pacote do servidor no cliente):

yum update && yum install krb5-server krb5-workstation pam_krb5

Depois de instalado, edite os arquivos de configuração (/etc/krb5.conf e /var/kerberos/krb5kdc/kadm5.acl) e substitua todas as instâncias de example.com (minúsculas e maiúsculas) com mydomain.com como segue.

Agora crie o banco de dados Kerberos (observe que isso pode demorar um pouco, pois requer algum nível de entropia em seu sistema. Para acelerar as coisas, abri outro terminal e executei ping -f localhost por 30 a 45 segundos):

kdb5_util create -s

Em seguida, habilite o Kerberos através do firewall e inicie/habilite os serviços relacionados.

Importante: nfs-secure também deve ser iniciado e ativado no cliente:

firewall-cmd --permanent --add-service=kerberos
systemctl start krb5kdc kadmin nfs-secure   
systemctl enable krb5kdc kadmin nfs-secure       

Em seguida, usando a ferramenta kadmin.local, crie um administrador principal para root:

kadmin.local
addprinc root/admin

E adicione o servidor Kerberos ao banco de dados:

addprinc -randkey host/box2.mydomain.com

O mesmo acontece com o serviço NFS para cliente (box1) e servidor (box2). Observe que na captura de tela abaixo esqueci de fazer isso para box1 antes de sair:

addprinc -randkey nfs/box2.mydomain.com
addprinc -randkey nfs/box1.mydomain.com

E saia digitando quit e pressionando Enter:

Em seguida, obtenha e armazene em cache o ticket de concessão de tíquete Kerberos para root/admin:

kinit root/admin
klist

A última etapa antes de realmente usar o Kerberos é armazenar em um arquivo keytab (no servidor) os principais que estão autorizados a usar a autenticação Kerberos:

kadmin.local
ktadd host/box2.mydomain.com
ktadd nfs/box2.mydomain.com
ktadd nfs/box1.mydomain.com

Por fim, monte o compartilhamento e execute um teste de gravação:

mount -t nfs4 -o sec=krb5 box2:/nfs /mnt
echo "Hello from linux-console.net" > /mnt/greeting.txt

Vamos agora desmontar o compartilhamento, renomear o arquivo keytab no cliente (para simular que ele não está presente) e tentar montar o compartilhamento novamente:

umount /mnt
mv /etc/krb5.keytab /etc/krb5.keytab.orig

Agora você pode usar o compartilhamento NFS com autenticação baseada em Kerberos.

Resumo

Neste artigo explicamos como configurar o NFS com autenticação Kerberos. Como há muito mais sobre o assunto do que podemos cobrir em um único guia, sinta-se à vontade para verificar a documentação on-line do Kerberos e como o Kerberos é um pouco complicado, para dizer o mínimo, não hesite em nos enviar uma mensagem usando o formulário abaixo se você tiver algum problema ou precisar de ajuda com seus testes ou implementação.