Как настроить сервер NFS4 с Kerberos из Active Directory?
Я могу установить и настроить сервер NFS4 и подключиться к нему, но я не могу заставить Kerberos работать ни при каких обстоятельствах, когда Active Directory контролирует KDC. Даже с недавно установленным Windows Server, на котором я сам настраиваю Active Directory.
Я много отлаживал на сервере, который настроил для Active Directory моей компании, многие из них описаны здесь: Как работает реализация setclientid в Linux NFS-сервере? Результаты были такими же, как и на новом сервере Windows с Active Directory, но, что удивительно (ну, может быть, это не так уж удивительно), он работает, если я установлю какой-нибудь другой тип KDC.
У меня есть рабочий сервер (как в NFS4 и Kerberos из Active Directory), который был установлен около 8 месяцев назад, он также работает под управлением CentOS 7.6.1810, но даже когда я реплицирую все, что я сделал, на этот сервер, я не могу его получить работать.
Я использовал SSSD, PBIS Open и ручную настройку Kerberos.
Практически все приводит к «в разрешении отказано», что, по-видимому, связано с кодом ошибки -13 от RPC. Все билеты Kerberos, которые я проверил, выглядели правильно.
Какие точные шаги необходимо предпринять для настройки сервера NFS4 в CentOS Linux версии 7.6.1810 (Core) для использования Kerberos из Active Directory?
Я использую этот метод как в Linux (ubuntu), так и во FreeBSD, поэтому я почти уверен, что они являются общими для UN * X-подобных систем.
Прежде всего, вам необходимо убедиться, что DNS работает правильно и что имя хоста правильное. Убедитесь, что нет указателей на 127.0.1.1 на hostname.domain.name
Также убедитесь, что ваша система настроена на использование nfs4 с sec = krb5 (или krb5i или krb5p).
Вам необходимо установить SPN для использования nfs. Есть unix-команда msktutil, которая может с этим справиться. Вероятно, он доступен в centos. Я знаю, что он доступен в стандартных репозиториях Ubuntu. Видеть https://github.com/msktutil/msktutil
У меня есть сценарий, который справится со всем этим.
Убедитесь, что вы вошли в домен и все работает как надо. (кроме керберизованного nfs4, конечно.) Обычно я делаю следующее:
kinit Administrator
(enter password)
klist должен показать ваш билет администратора.
Сделайте резервную копию /etc/krb5.keytab перед запуском сценария.
После этого я запускаю этот сценарий: (Вы дважды присоединитесь к домену, чтобы ваш /etc/krb5.keytab обновился должным образом. Я не уверен, что это строго необходимо.)
#!/bin/bash
HOST_NAME=`hostname -s`
DOMAIN_NAME=`hostname -d`
FULL_NAME=`hostname -A`
DC=your-dc.your.domain
kinit Administrator;
rm -f /etc/krb5.keytab
msktutil \
--delegation --dont-expire-password --no-pac --computer-name $HOST_NAME \
--enctypes 0x1F -b "OU=Services" -k /etc/krb5.keytab \
-h $HOST_NAME -s nfs/$FULL_NAME --upn nfs/$FULL_NAME --verbose
net ads join -k
После этого вы должны быть готовы к работе! (Предполагая, что ваш nfs-сервер настроен правильно. И kerberos, и все остальное. Например, в ubuntu 18.04 / etc / default / nfs-kernel-server в моей системе выглядит так.
# Number of servers to start up
RPCNFSDCOUNT=8
# Runtime priority of server (see nice(1))
RPCNFSDPRIORITY=0
# Options for rpc.mountd.
# If you have a port-based firewall, you might want to set up
# a fixed port here using the --port option. For more information,
# see rpc.mountd(8) or http://wiki.debian.org/SecuringNFS
# To disable NFSv4 on the server, specify '--no-nfs-version 4' here
RPCMOUNTDOPTS="--manage-gids"
# Do you want to start the svcgssd daemon? It is only required for Kerberos
# exports. Valid alternatives are "yes" and "no"; the default is "no".
NEED_SVCGSSD="yes"
# Options for rpc.svcgssd.
#RPCSVCGSSDOPTS=""
# Options for rpc.nfsd.
RPCNFSDOPTS=""
RPCSVCGSSDOPTS="-k /etc/krb5.keytab"
А мой /etc/idmapd.conf выглядит так:
[General]
Verbosity = 1
Pipefs-Directory = /run/rpc_pipefs
# set your own domain here, if id differs from FQDN minus hostname.
# Domain = localdomain
Domain = my.domain
Local-Realms = MY.DOMAIN
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup
[Translation]
Method = nsswitch
А / etc / default / nfs-common выглядит так: (Возможно, что-то подобное есть для centos)
# If you do not set values for the NEED_ options, they will be attempted
# autodetected; this should be sufficient for most people. Valid alternatives
# for the NEED_ options are "yes" and "no".
# Options for rpc.statd.
# Should rpc.statd listen on a specific port? This is especially useful
# when you have a port-based firewall. To use a fixed port, set this
# this variable to a statd argument like: "--port 4000 --outgoing-port 4001".
# For more information, see rpc.statd(8)
STATDOPTS=
NEED_IDMAPD=yes
# Do you want to start the gssd daemon? It is required for Kerberos mounts.
NEED_GSSD=yes
RPCSVCGSSDOPTS="-k /etc/krb5.keytab"
Надеюсь это поможет!