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

Материал из ALT Linux Wiki
 
(не показано 16 промежуточных версий 1 участника)
Строка 1: Строка 1:
__TOC__
__TOC__
 
=Домен на базе Samba DC=
== Домен на базе Samba DC ==
 
Исходные данные стенда
Исходные данные стенда
* Домен test.alt (АльтСервер 10.1, dc.test.alt)
* Домен test.alt (АльтСервер 10.1, dc.test.alt)
* NFS сервер (Альт Сервер 10.1, nfs-server.test.alt) - включен в домен
* NFS сервер (Альт Сервер 10.1, nfs-server.test.alt) - включен в домен
* NFS клиент (Альт Рабочая станция 10.1, nfs-client.test.alt) - включен в домен
* NFS клиент (Альт Рабочая станция 10.1, nfs-client.test.alt) - включен в домен
{{Внимание|  
{{Внимание|  
*обязательна синхронизация времени на всех хостах;
*обязательна синхронизация времени на всех хостах;
*обязательно наличие прямой (А) и обратной (PTR) записей для nfs сервера и клиента — samba по умолчанию не создает обратную зону.}}
*обязательно наличие прямой (А) и обратной (PTR) записей для nfs-сервера и клиента — samba по умолчанию не создает обратную зону.}}
==== Конфигурация nfs-сервера ====
==Настройка сервера==
Установить пакет: {{cmd|# apt-get install nfs-server}}
===Установить пакет===
 
# apt-get install nfs-server
Добавить сервис в автозапуск: {{cmd|# systemctl enable --now nfs-server}}
===Включить автозапуск сервиса===
 
# systemctl enable --now nfs-server
В файле /etc/idmapd.conf определить домен (realm) и методы (GSS-Methods):
===В /etc/idmapd.conf определить домен (realm) и методы (GSS-Methods)===
<source lang=ini>
<source lang=ini>
[General]
[General]
Строка 26: Строка 23:
GSS-Methods = nsswitch,static
GSS-Methods = nsswitch,static
</source>
</source>
В /etc/nfs.conf можно запретить все версии кроме 4ой
===В /etc/nfs.conf можно запретить все версии кроме 4===
<source lang=ini>
<source lang=ini>
[nfsd]
[nfsd]
Строка 36: Строка 33:
vers4.2=y
vers4.2=y
</source>
</source>
Создать шару для раздачи:
===Создать шару для раздачи===
  # 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:
===Описать её в /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
===Создать сервисную запись===
 
# kinit administrator@TEST.ALT
Создать сервисную запись и запустить nfs сервер:
# adcli update --service-name=nfs
  # kinit administrator@TEST.ALT
===Перезапустить сервер nfs===
  # adcli update --service-name=nfs
# systemctl restart nfs-server
  # 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
===Включить автозапуск клиента NFS===
    # chmod 774 /exports/test_share/testdir
# systemctl enable --now nfs-client.target
    # echo '/exports/test_share *(rw,no_subtree_check,sec=krb5:krb5i:krb5p)' >> /etc/exports
===Создать точку монтирования и подключиться к шаре===
    # exportfs -vra
# mkdir /mnt/nfs
    # systemctl restart nfs-server
# mount.nfs4 -vvv -o sec=krb5:krb5i:krb5p,rw nfs-server.test.alt://exports/test_share /mnt/nfs/
   
===Проверить доступность от доменного пользователя===
На клиенте, введенном в домен FreeIPA, добавим в автозагрузку nfs-client и проверим доступность ресурса:
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


    # systemctl enable --now nfs-client.target
== Решение проблем ==
    # showmount -e nfs.example.test
Если замечено, что служба rpc-svcgssd.service зависает либо утилизирует весь CPU, есть смысл в УЗ сервера в домене в аттрибуте userAccountControl вместо значения 0x1000 (4096), вписать 0x2001000 (33558528) -
   
Создадим каталог и смонтируем 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.
=Домен на базе FreeIPA=
==На DC FreeIPA==
===Добавить сервис, где имя нашего nfs-сервера — nfs.example.test===
# kinit admin
# ipa service-add nfs/nfs.example.test
===Создать пользователя и группу для доступа к 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==
===Установить сервис===
# apt-get install nfs-server
===Включить SECURE_NFS===
# echo 'SECURE_NFS=yes' >>/etc/sysconfig/nfs
===Сгенерировать таблицу ключей службы и сохранить в keytab===
# kinit admin
# ipa-getkeytab -s ipaserver.example.test -p nfs/nfs.example.test -k /etc/krb5.keytab
# klist -ket /etc/krb5.keytab
===Создать каталог с групповыми правами на запись===
# install -g nfs_users -m 774 -d /exports/test_share/testdir
===Добавить список экспорта===
# echo '/exports/test_share *(rw,no_subtree_check,sec=krb5:krb5i:krb5p)' >>/etc/exports
# exportfs -vra
===Включить автозапуск сервиса===
# systemctl enable nfs-server
===Применить изменения===
# systemctl restart nfs-server
==На введённом в домен клиенте==
===Включить автозагрузку клиента nfs===
# systemctl enable --now nfs-client.target
===Проверить доступность ресурса===
# showmount -e nfs.example.test
===Создать и смонтировать каталог nfs===
# mkdir /mnt/test_share
# mount -o sec=krb5:krb5i:krb5p,rw nfs.example.test://exports/test_share /mnt/test_share
===Добавить его в fstab===
# cat >> /etc/fstab << EOF
nfs.example.test:/exports/test_share /mnt/test_share nfs rw,sec=krb5:krb5i:krb5p,nolock 1 0
EOF
===Проверить доступность от доменного пользователя.===
[[Категория:FileSystems]]
[[Категория:FileSystems]]
[[Категория:Домен]]
[[Категория:Домен]]

Текущая версия от 07:22, 23 августа 2024

Домен на базе 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 по умолчанию не создает обратную зону.

Настройка сервера

Установить пакет

# 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

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

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

# exportfs -vra
exporting *:/exports/test_share

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

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

Перезапустить сервер nfs

# systemctl restart nfs-server

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

Включить автозапуск клиента NFS

# 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

Решение проблем

Если замечено, что служба rpc-svcgssd.service зависает либо утилизирует весь CPU, есть смысл в УЗ сервера в домене в аттрибуте userAccountControl вместо значения 0x1000 (4096), вписать 0x2001000 (33558528) -

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

На DC FreeIPA

Добавить сервис, где имя нашего nfs-сервера — nfs.example.test

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

Создать пользователя и группу для доступа к 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

Установить сервис

# apt-get install nfs-server

Включить SECURE_NFS

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

Сгенерировать таблицу ключей службы и сохранить в keytab

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

Создать каталог с групповыми правами на запись

# install -g nfs_users -m 774 -d /exports/test_share/testdir

Добавить список экспорта

# echo '/exports/test_share *(rw,no_subtree_check,sec=krb5:krb5i:krb5p)' >>/etc/exports
# exportfs -vra

Включить автозапуск сервиса

# systemctl enable nfs-server

Применить изменения

# systemctl restart nfs-server

На введённом в домен клиенте

Включить автозагрузку клиента nfs

# systemctl enable --now nfs-client.target

Проверить доступность ресурса

# showmount -e nfs.example.test

Создать и смонтировать каталог nfs

# mkdir /mnt/test_share
# mount -o sec=krb5:krb5i:krb5p,rw nfs.example.test://exports/test_share /mnt/test_share

Добавить его в fstab

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

Проверить доступность от доменного пользователя.