Fedora 26 NFS + Kerberos “Falha na pré-autenticação” (montar lead sem permissão)

5

Estou com dificuldades tentando configurar nfs + kerberos no Fedora 26.

Eu segui este tutorial:

RHEL7: use o Kerberos para controlar o acesso a compartilhamentos de rede NFS | CertDepot

No momento, o NFS puro funciona bem, kinit sozinho funciona bem, mas eu ainda consigo  sem permissão ao tentar montar e esses erros em /var/log/krb5kdc.log .

krb5kdc[12560](info): AS_REQ (8 etypes {18 17 16 23 25 26 20 19}) 192.168.0.13: NEEDED_PREAUTH: nfs/rbenedettin.local@LOCAL for krbtgt/LOCAL@LOCAL, Additional pre-authentication required                        
krb5kdc[12560](info): preauth (encrypted_timestamp) verify failure: Preauthentication failed                                                                                                                      
krb5kdc[12560](info): AS_REQ (8 etypes {18 17 16 23 25 26 20 19}) 192.168.0.13: PREAUTH_FAILED: nfs/rbenedettin.local@LOCAL for krbtgt/LOCAL@LOCAL, Preauthentication failed

Eu quero usar zero-config , eu tentei sem ele (editando /etc/hosts ), mas o problema persiste, alguns outros tutoriais apontam para authconfig-gui ou authconfig-tui mas o Fedora 26 não tem mais. Não há quase nenhuma informação na web sobre versões recentes do Fedora e nfs + kerberos, então eu realmente aprecio qualquer luz sobre isso.

    
por RomuloPBenedetti 09.10.2017 / 09:00

1 resposta

3

What Appears To Be The Problem

The tutorial completely ignored many needed elements in fact (sssd, pam, etc), probably it is not the point of it as the focus appears to be RHEL exams. I'm still a little lost on all tools involved in this task as I'm not a sysadmin (a lot of question for another moment), but I've managed to get it working. Thanks to freeIPA most.

I will try to put what I did here. I expect it gives some light on how to get a kerberized NFS environment in Fedora 26 and maybe 25 plus. please, anyone that finds any inadequate procedure please, correct it. It only touches a zero-conf without SELinux environment, so anywone that can close the gaps is welcome to correct it.

If You Already Did A Lot Of Mess

If you were brave enough to try a ton of things, even put an OpenLDAP server up without results, remove it all, remove both Kerberos and OpenLDAP, delete configurations files and caches in /etc and /var/lib/, you can maintain your NFS server if you already got it working without Kerberos. If you played with sssd delete /etc/sssd and reinstall the package.

Como obter o NFS + Kerberos no fedora 26

Em uma breve descrição, você precisará:

  1. Nome do host ( ler observações )
  2. servidor NFS funcionando.
  3. Instale o freeIPA
  4. Configurar o IPA + Kerberos + NFS
  5. Observações

Nome do host

Before continuing please read observations at the end of the answer, related with hostname.

Como afirmado, eu queria um zero-conf setup. Eu nomeei minhas máquinas e habilitei / desmasquei avahi service. Se você tem uma instalação do Fedora, o Avahi deve estar ligado.

Você pode obter ou alterar o nome do host com hostnamectl .

$ hostnamectl set-hostname "myhostname"

Graças a avahi , toda a sua rede local estará acima do domínio local , você terá suas máquinas endereçadas como yourhostname.local . Continuaremos a configuração com duas máquinas:

server.local - > o servidor

client.local - > o cliente

Kerberos (servidor freeIPA) pode estar em uma terceira máquina, mas, por simplicidade, freeIPA e NFS serão atendidos por uma máquina.

servidor NFS

  • Lado do servidor

Vou tomar como se você pretendesse usar o NFSv4, então só precisa disso:

$ dnf install  nfs-utils

$ systemctl enable nfs-server
$ systemctl start nfs-server

$ firewall-cmd --permanent --add-service=nfs
$ firewall-cmd --reload

Editar exportações em /etc/exports :

# if using "sec=krb5p" your will need Kerberos, remove it for tests
/path/to/exported/dir client.local(rw,sync,sec=krb5p)

Exportar o diretório:

$ exportfs -avr
$ systemctl restart nfs-server
  • Lado do cliente

Instalar o pacote necessário:

$ dnf install nfs-utils

Você pode testá-lo com:

$ mount -t nfs server.local:/path/to/exported/dir /path/to/local/dir

Instale o FreeIPA

  • Lado do servidor

Instale freeipa-server e dê respostas pontuais:

$ dnf install freeipa-server
$ ipa-server-install
...
Do you want to configure integrated DNS (BIND)? [no]: **no**
...
Server host name [server.local]: **press enter**    
...
Please confirm the domain name [local]: **press enter**
...
Please provide a realm name [LOCAL]: **press enter**
...
Directory Manager password: *******
Password (confirm): *******
...
IPA admin password: *******
Password (confirm): *******
...
Continue to configure the system with these values? [no]: **yes**

abra as portas de firewall necessárias:

$ firewall-cmd --add-service={freeipa-ldap,freeipa-ldaps} --permanent 
$ firewall-cmd --reload 
  • Lado do cliente

Instale freeipa-client e dê respostas pontuais:

$ dnf install freeipa-client
$ ipa-client-install --server=serve.local --domain LOCAL
... 
Proceed with fixed values and no DNS discovery? [no]: **yes**
...
Continue to configure the system with these values? [no]: **yes**
...
User authorized to enroll computers: **admin**
...
Password for [email protected]: ******

Configurar o IPA + Kerberos + NFS

Neste ponto, você terá um servidor e cliente kerberos operacionais, fingirei que tem apenas um usuário chamado usuário no servidor e no cliente.

  • Lado do servidor

Precisamos autenticar como administrador principal:

$ kinit admin
Password for [email protected]: *****

Você pode confirmar que está autenticado com klist :

$ klist
Ticket cache: KEYRING:persistent:1000:krb_ccache_######       
Default principal: admin@LOCAL                            

Valid starting       Expires              Service principal    
17-10-2017 20:41:20  18-10-2017 20:41:17  krbtgt/LOCAL@LOCAL       

Agora podemos adicionar o principal do usuário, eu aconselho você a usar o mesmo nome e senha do seu usuário Unix:

$ ipa user-add user [email protected] --first=User --last="Foo" --password
password: ******

Adicione o principal de serviço para NFS :

# --force is needed otherwise will complain about DNS record missing
$ ipa service-add nfs/server.local --force

obter chaves de host e serviço:

$ ipa-getkeytab -s server.local -p host/server.local -k /etc/krb5.keytab
Keytab successfully retrieved and stored in: /etc/krb5.keytab

$ ipa-getkeytab -s server.local -p nfs/server.local -k /etc/krb5.keytab
Keytab successfully retrieved and stored in: /etc/krb5.keytab
  • Lado do cliente

    Como no lado do servidor, autentique-se como admin e adicione o host do cliente:

    Administrador do $ kinit Senha para [email protected]: *****

    $ ipa-getkeytab -s server.local -p host / client.local -k /etc/krb5.keytab Keytab recuperado e armazenado com sucesso em: /etc/krb5.keytab

Não se esqueça de adicionar sec=krb5p a /etc/export no servidor depois de configurar o freeIPA e todo o resto. Reinicie o servidor e o cliente ou reinicie NFS e IPA services. Neste ponto, você poderá montar a pasta remota no cliente.

$ mount -v -t nfs -o sec=krb5p server.local:/path/to/exported/dir /path/to/local/dir

Observações

Configuração zero-config não está funcionando bem ...

infelizmente, o FreeIPA parece ser strongmente dependente do BIND , um servidor DNS, uma pena, pois é muito para uso doméstico e pode impor sobrecarga de desempenho em dispositivos de baixo custo. A solução simples não está usando dhcp , configurando IPs estáticos em todas as máquinas e definindo alias em '/ etc / hosts´:

x.x.x.x server.local server      
y.y.y.y client.local client 

Por que não configurar o pam para obter a Autenticação do Kerberos no login?

pelo que podemos ver aqui freeipa, se usar sssd não precisa de authconfig --enablekrb5 --update .

Partição Montada, Mas ao acessar o diretório, não há "permissão" e uma pasta vazia

Seu usuário provavelmente precisará acessar sua chave principal (somente o root tem acesso a /etc/krb5.keytab ), de acordo com krb5.conf man page, sssd local padrão para usuários keytab is /var/kerberos/krb5/user/%{UID}/client.keytab onde% {UID} é o ID do usuário.

$ ipa-getkeytab -s server.local -p user -k /var/kerberos/krb5/user/%{UID}/client.keytab --password
password: ******
Keytab successfully retrieved and stored in: /var/kerberos/krb5/user/%{UID}/client.keytab 

Use a mesma senha do usuário unix, poderíamos ter usado -r, mas não é recomendado e realmente precisamos de comandos extras para podermos recuperar as chaves existentes (de quando adicionamos o usuário) do servidor.

Chrony ou NTP ???

Não tenho certeza se o freeIPA pode funcionar bem com chrony , as versões mais novas podem precisar de --force-ntpd para suplantar chrony com NTP

    
por 18.10.2017 / 01:25