Поиск по сайту:

Настройка сервера NFS с аутентификацией на основе Kerberos для клиентов Linux - Часть 7


В предыдущей статье этой серии мы рассмотрели, как настроить общий ресурс Samba в сети, которая может состоять из нескольких типов операционных систем. Теперь, если вам нужно настроить общий доступ к файлам для группы Unix-подобных клиентов, вы автоматически подумаете о сетевой файловой системе, или сокращенно NFS.

В этой статье мы познакомим вас с процессом использования аутентификации на основе Kerberos для общих папок NFS. Предполагается, что вы уже настроили сервер NFS и клиент. Если нет, обратитесь к разделу Установка и настройка сервера NFS, в котором будут перечислены необходимые пакеты, которые необходимо установить, и объяснено, как выполнить первоначальные настройки на сервере, прежде чем продолжить.

Кроме того, вы захотите настроить SELinux и firewalld для обеспечения общего доступа к файлам через NFS.

В следующем примере предполагается, что общая папка NFS находится в /nfs в поле 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

(где флаг -P указывает на стойкость при перезагрузках).

Наконец, не забудьте:

Создание группы NFS и настройка каталога NFS Share

1. Создайте группу с именем nfs и добавьте в нее пользователя nfsnono, затем измените права доступа каталога /nfs на 0770, а владельца группы — на nfs. Таким образом, nfsnone (который отображается на клиентские запросы) будет иметь права на запись в общую папку), и вам не нужно будет использовать no_root_squash в файле /etc/exports.

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

2. Измените файл exports (/etc/exports) следующим образом, чтобы разрешить доступ только с box1 с использованием безопасности Kerberos (sec=krb5).

style="color: red;">Обратите внимание: что значение anongid было установлено на GID группы nfs, которую мы создали ранее:

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

3. Реэкспорт (-r) всех (-a) акций NFS. Добавление детализации в вывод (-v) является хорошей идеей, так как это предоставит полезную информацию для устранения неполадок на сервере, если что-то пойдет не так:

# exportfs -arv

4. Перезапустите и включите сервер NFS и связанные с ним службы. Обратите внимание, что вам не нужно включать nfs-lock и nfs-idmapd, потому что они будут автоматически запускаться другими службами при загрузке:

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

Тестовая среда и другие предварительные требования

В этом руководстве мы будем использовать следующую тестовую среду:

  1. Клиентская машина [box1: 192.168.0.18]
  2. Сервер NFS/Kerberos [box2: 192.168.0.20] (также известный как Key Distribution Center, или сокращенно KDC).

style="color: red;">Обратите внимание: служба Kerberos имеет решающее значение для схемы аутентификации.

Как вы можете видеть, сервер NFS и KDC размещены на одной машине для простоты, хотя вы можете настроить их на разных машинах, если у вас есть больше доступных. Обе машины являются членами домена mydomain.com.

И последнее, но не менее важное: Kerberos требует, по крайней мере, базовой схемы разрешения имен и наличия службы Network Time Protocol как на клиенте, так и на сервере, поскольку безопасность аутентификации Kerberos частично основана на временных метках билетов.

Чтобы настроить разрешение имен, мы будем использовать файл /etc/hosts как на клиенте, так и на сервере:

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

В RHEL 7 chrony является программным обеспечением по умолчанию, которое используется для синхронизации NTP:

# yum install chrony
systemctl start chronyd
systemctl enable chronyd

Чтобы убедиться, что chrony действительно синхронизирует время вашей системы с серверами времени, вы можете выполнить следующую команду два или три раза и убедиться, что смещение приближается к нулю:

# chronyc tracking

Установка и настройка Kerberos

Чтобы настроить KDC, установите следующие пакеты как на сервере, так и на клиенте (опустите серверный пакет в клиенте):

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

После установки отредактируйте конфигурационные файлы (/etc/krb5.conf и /var/kerberos/krb5kdc/kadm5.acl) и замените все экземпляры example.com (строчные и прописные) на mydomain.com следующим образом.

Теперь создайте базу данных Kerberos (обратите внимание, что это может занять некоторое время, так как требует некоторого уровня энтропии в вашей системе. Чтобы ускорить процесс, я открыл другой терминал и запустил ping -f localhost на 30-45 секунд):

# kdb5_util create -s

Далее включите Kerberos через брандмауэр и запустите/включите связанные службы.

style="color: red;">Важно: nfs-secure также должен быть запущен и включен на клиенте:

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

Далее, используя инструмент kadmin.local, создайте участника-администратора для root:

# kadmin.local
addprinc root/admin

И добавляем сервер Kerberos в базу данных:

# addprinc -randkey host/box2.mydomain.com

То же самое с сервисом NFS как для клиента (box1), так и для сервера (box2). Обратите внимание, что на скриншоте ниже я забыл сделать это для box1 перед выходом:

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

И выйдите, набрав quit и нажав Enter:

Затем получите и кэшируйте билет Kerberos для root/admin:

# kinit root/admin
klist

Последним шагом перед фактическим использованием Kerberos является сохранение в файле keytab (на сервере) участников, которым разрешено использовать аутентификацию Kerberos:

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

Наконец, подключите общий ресурс и выполните тест записи:

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

Теперь давайте отключим общую папку, переименуем файл keytab в клиенте (чтобы имитировать его отсутствие) и попробуем смонтировать общую папку снова:

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

Теперь вы можете использовать общий ресурс NFS с аутентификацией на основе Kerberos.

Сводка

В этой статье мы объяснили, как настроить NFS с аутентификацией Kerberos. Поскольку эта тема включает в себя гораздо больше, чем мы можем охватить в одном руководстве, не стесняйтесь проверять онлайн-документацию Kerberos, и поскольку Kerberos немного сложен, мягко говоря, не стесняйтесь написать нам, используя форму ниже, если у вас возникнут какие-либо проблемы или вам понадобится помощь в тестировании или внедрении.

Статьи по данной тематике: