NFS сервер с Kerberos авторизацией: различия между версиями

Материал из ALT Linux Wiki
(NFS для samba dc)
Строка 8: Строка 8:
* NFS клиент (Альт Рабочая станция 10.1, nfs-client.test.alt) - включен в домен
* NFS клиент (Альт Рабочая станция 10.1, nfs-client.test.alt) - включен в домен


=== Важные условия ===
{{Внимание|
* Обязательная синхронизация времени на всех хостах.
*обязательна синхронизация времени на всех хостах;
* Обязательное наличие прямой (А) и обратной (PTR) записей для хостов (nfs сервера и клиента) - по-умолчанию, samba не создает обратную зону!
*обязательно наличие прямой (А) и обратной (PTR) записей для nfs сервера и клиента — samba по умолчанию не создает обратную зону.}}
 
==== Конфигурация nfs-сервера ====
==== Конфигурация nfs-сервера ====
Установить пакет
Установить пакет: {{cmd|# apt-get install nfs-server}}
 
  # apt-get install nfs-server  
 
Добавим сервис в автозапуск:
 
  # systemctl enable --now nfs-server


В файле /etc/idmapd.conf определить realm и GSS-Methods
Добавить сервис в автозапуск: {{cmd|# systemctl enable --now nfs-server}}


  [General]
В файле /etc/idmapd.conf определить домен (realm) и методы (GSS-Methods):
  Domain = test.alt
<source lang=ini>
  Local-Realms = TEST.ALT
[General]
 
Domain = test.alt
  [Translation]
Local-Realms = TEST.ALT
  Method = nsswitch,static
  GSS-Methods = nsswitch,static


[Translation]
Method = nsswitch,static
GSS-Methods = nsswitch,static
</source>
В /etc/nfs.conf можно запретить все версии кроме 4ой
В /etc/nfs.conf можно запретить все версии кроме 4ой
 
<source lang=ini>
  [nfsd]
[nfsd]
  vers2=n
vers2=n
  vers3=n
vers3=n
  vers4=y
vers4=y
  vers4.0=y
vers4.0=y
  vers4.1=y
vers4.1=y
  vers4.2=y
vers4.2=y
 
</source>
Создать шару, которую будем раздавать, опишем ее в /etc/exports и экспортируем
Создать шару для раздачи:
 
   # mkdir -p /exports/test_share/testdir
   # mkdir -p /exports/test_share/testdir
   # chgrp 'Domain Users' /exports/test_share/
   # chgrp 'Domain Users' /exports/test_share/
   # chmod g+w /exports/test_share/
   # chmod g+w /exports/test_share/
 
Описать ее в /etc/exports:
   # cat /etc/exports
   # cat /etc/exports
   /exports/test_share *(rw,sync,no_subtree_check,sec=krb5:krb5i:krb5p)
   /exports/test_share *(rw,sync,no_subtree_check,sec=krb5:krb5i:krb5p)
 
И экспортировать:
   # exportfs -vra
   # exportfs -vra
   exporting *:/exports/test_share
   exporting *:/exports/test_share


Создадим сервисную запись и запустим nfs сервер
Создать сервисную запись и запустить nfs сервер:
   # kinit administrator@TEST.ALT
   # kinit administrator@TEST.ALT
   # adcli update --service-name=nfs
   # adcli update --service-name=nfs
   # systemctl restart nfs-server
   # systemctl restart nfs-server
==== Настройка клиента ====
==== Настройка клиента ====


Строка 70: Строка 62:
   domainuser1@alt-p10-wks / $ ll /mnt/nfs/testdir/myfile
   domainuser1@alt-p10-wks / $ ll /mnt/nfs/testdir/myfile
   -rw-r--r-- 1 domainuser1 domain users 0 сен 15 17:26 /mnt/nfs/testdir/myfile
   -rw-r--r-- 1 domainuser1 domain users 0 сен 15 17:26 /mnt/nfs/testdir/myfile


== Домен на базе FreeIPA ==
== Домен на базе FreeIPA ==

Версия от 06:32, 1 октября 2023

Домен на базе Samba DC

Исходные данные стенда

  • Домен test.alt (АльтСервер 10.1, dc.test.alt)
  • NFS сервер (Альт Сервер 10.1, nfs-server.test.alt) - включен в домен
  • NFS клиент (Альт Рабочая станция 10.1, nfs-client.test.alt) - включен в домен


Внимание:
  • обязательна синхронизация времени на всех хостах;
  • обязательно наличие прямой (А) и обратной (PTR) записей для nfs сервера и клиента — samba по умолчанию не создает обратную зону.

Конфигурация nfs-сервера

Установить пакет: # apt-get install nfs-server

Добавить сервис в автозапуск: # systemctl enable --now nfs-server

В файле /etc/idmapd.conf определить домен (realm) и методы (GSS-Methods):

[General]
Domain = test.alt
Local-Realms = TEST.ALT

[Translation]
Method = nsswitch,static
GSS-Methods = nsswitch,static

В /etc/nfs.conf можно запретить все версии кроме 4ой

[nfsd]
vers2=n
vers3=n
vers4=y
vers4.0=y
vers4.1=y
vers4.2=y

Создать шару для раздачи:

 # mkdir -p /exports/test_share/testdir
 # chgrp 'Domain Users' /exports/test_share/
 # chmod g+w /exports/test_share/

Описать ее в /etc/exports:

 # cat /etc/exports
 /exports/test_share *(rw,sync,no_subtree_check,sec=krb5:krb5i:krb5p)

И экспортировать:

 # exportfs -vra
 exporting *:/exports/test_share

Создать сервисную запись и запустить nfs сервер:

 # kinit administrator@TEST.ALT
 # adcli update --service-name=nfs
 # systemctl restart nfs-server

Настройка клиента

 # systemctl enable --now nfs-client.target
 # mkdir /mnt/nfs
 # mount.nfs4 -vvv -o sec=krb5:krb5i:krb5p,rw nfs-server.test.alt://exports/test_share /mnt/nfs/

И проверяем, от доменного пользователя

 domainuser1@alt-p10-wks / $ touch /mnt/nfs/testdir/myfile
 domainuser1@alt-p10-wks / $ ll /mnt/nfs/testdir/myfile
 -rw-r--r-- 1 domainuser1 domain users 0 сен 15 17:26 /mnt/nfs/testdir/myfile

Домен на базе FreeIPA

На сервере, введенном в домен FreeIPA, установим nfs-server:

   # apt-get install nfs-server 

Включим SECURE_NFS:

   # echo 'SECURE_NFS=yes' >> /etc/sysconfig/nfs

Добавим сервис в автозапуск:

   # systemctl enable --now nfs-server

На DC FreeIPA сервере добавить сервис где nfs.example.test наш nfs сервер:

   # kinit admin
   # ipa service-add nfs/nfs.example.test
   

На DC FreeIPA сервере создадим пользователя и группу для доступа на nfs:

   # echo 1 | ipa user-add test01 --first test --last 01 --password
   # ipa group-add nfs_users --desc="NFS users"
   # ipa group-add-member nfs_users --users=test01
       

На NFS сервере сгенерируем таблицу ключей службы NFS для сервера и сохраним в keytab:

   # kinit admin
   # ipa-getkeytab -s ipaserver.example.test -p nfs/nfs.example.test -k /etc/krb5.keytab
   # klist -ket /etc/krb5.keytab

На NFS создадим каталог, дадим права на запись группе, добавим список экспорта и применим изменения:

   # mkdir -p /exports/test_share/testdir
   # chgrp nfs_users /exports/test_share/testdir
   # chmod 774 /exports/test_share/testdir
   # echo '/exports/test_share *(rw,no_subtree_check,sec=krb5:krb5i:krb5p)' >> /etc/exports
   # exportfs -vra
   # systemctl restart nfs-server
   

На клиенте, введенном в домен FreeIPA, добавим в автозагрузку nfs-client и проверим доступность ресурса:

   # systemctl enable --now nfs-client.target
   # showmount -e nfs.example.test
   

Создадим каталог и смонтируем nfs, добавим запись в fstab:

   # mkdir /mnt/test_share
   # mount -o sec=krb5:krb5i:krb5p,rw nfs.example.test://exports/test_share /mnt/test_share
   # cat >> /etc/fstab << EOF
   nfs.example.test:/exports/test_share /mnt/test_share nfs rw,sec=krb5:krb5i:krb5p,nolock 1 0
   EOF

Зайти доменным пользователем в систему и проверить возможность чтения/записи в каталог testdir.