Настройка сервера 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
Тестовая среда и другие предварительные требования
В этом руководстве мы будем использовать следующую тестовую среду:
- Клиентская машина [box1: 192.168.0.18]
- Сервер 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 немного сложен, мягко говоря, не стесняйтесь написать нам, используя форму ниже, если у вас возникнут какие-либо проблемы или вам понадобится помощь в тестировании или внедрении.