Как настроить сервер NFS4, который использует проверку подлинности Kerberos из Active Directory KDC с использованием CentOS Linux версии 7.6.1810 (Core)

Как настроить сервер 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 Открытая и ручная настройка Kerberos.

Практически все приводит к «доступу отказано», что, по-видимому, происходит из-за кода ошибки -13 от RPC. Все билеты Kerberos, которые я проверил, выглядели правильно.

Какие именно шаги необходимо предпринять, чтобы настроить сервер NFS4 в CentOS Linux версии 7.6.1810 (Core) для использования Kerberos из Active Directory?

2
задан 20 December 2018 в 12:32
1 ответ

Я использую этот метод как в 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"

Надеюсь, это поможет!

1
ответ дан 3 December 2019 в 12:31

Теги

Похожие вопросы