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 tofreeIPA
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
andOpenLDAP
, 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 withsssd
delete /etc/sssd and reinstall the package.
Como obter o NFS + Kerberos no fedora 26
Em uma breve descrição, você precisará:
- Nome do host ( ler observações )
- servidor NFS funcionando.
- Instale o freeIPA
- Configurar o IPA + Kerberos + NFS
- 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