Nfs krb5 — различия между версиями
Andy (обсуждение | вклад) (→Конфигурирование сетевой директории) |
Andy (обсуждение | вклад) (→Запуск) |
||
Строка 57: | Строка 57: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==== Запуск ==== | ==== Запуск ==== | ||
− | + | Копируем <code>keytab</code> файл с сервера <code>vm-03.virtual.lab</code>, на сервер <code>vm-01.virtual.lab</code>: | |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | [root@vm-01 ~]# | + | [root@vm-01 ~]# scp -p root@vm-03.virtual.lab:/etc/krb5.keytab /etc/ |
− | [root@vm-01 ~]# systemctl | + | root@vm-03.virtual.lab's password: |
− | + | krb5.keytab 100% 1818 1.8KB/s 00:00 | |
− | [root@vm-01 ~]# systemctl | + | [root@vm-01 ~]# |
− | + | </syntaxhighlight> | |
+ | Восстановим контекст <code>SELinux</code> у <code>keytab</code> файла: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | [root@vm-01 ~]# restorecon -vR /etc/krb5.keytab | ||
+ | [root@vm-01 ~]# ls -lahiZ /etc/krb5.keytab | ||
+ | -rw-------. root root unconfined_u:object_r:krb5_keytab_t:s0 /etc/krb5.keytab | ||
+ | [root@vm-01 ~]# | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Для поддержки керберос аутентикации сетевых директорий <code>NFS</code>, в RHEL 7.0 надо, кроме сервиса <code>nfs-server</code> запустить сервис <code>nfs-server-secure</code>: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | [root@vm-01 ~]# systemctl enable nfs-secure-server | ||
+ | ln -s '/usr/lib/systemd/system/nfs-secure-server.service' '/etc/systemd/system/nfs.target.wants/nfs-secure-server.service' | ||
+ | [root@vm-01 ~]# systemctl start nfs-secure-server | ||
+ | [root@vm-01 ~]# systemctl status -l nfs-secure-server | ||
+ | nfs-secure-server.service - Secure NFS Server | ||
+ | Loaded: loaded (/usr/lib/systemd/system/nfs-secure-server.service; disabled) | ||
+ | Active: active (running) since Mon 2018-12-03 14:20:42 MSK; 7s ago | ||
+ | Process: 32315 ExecStart=/usr/sbin/rpc.svcgssd $RPCSVCGSSDARGS (code=exited, status=0/SUCCESS) | ||
+ | Main PID: 32316 (rpc.svcgssd) | ||
+ | CGroup: /system.slice/nfs-secure-server.service | ||
+ | └─32316 /usr/sbin/rpc.svcgssd | ||
+ | |||
+ | Dec 03 14:20:42 vm-01.virtual.lab systemd[1]: Starting Secure NFS Server... | ||
+ | Dec 03 14:20:42 vm-01.virtual.lab systemd[1]: Started Secure NFS Server. | ||
[root@vm-01 ~]# | [root@vm-01 ~]# | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 76: | Строка 100: | ||
[root@vm-01 ~]# | [root@vm-01 ~]# | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
==== Проверка ==== | ==== Проверка ==== | ||
С виртуальной машины <code>vm-01</code> проверим доступность сетевой директории на самом сервере: | С виртуальной машины <code>vm-01</code> проверим доступность сетевой директории на самом сервере: |
Версия 13:21, 3 декабря 2018
Содержание
Конфигурирование Kerberos NFS
Предварительные требования
- Виртуальная машина с двумя сетевыми интерфейсами
- Установленные пакеты:
bash-completion
,policycoreutils
,policycoreutils-python
,policycoreutils-devel
,setroubleshoot-server
,nfs-utils
,krb5-workstation
- На серверной и клиентской машине настроена аутентикация и авторизация через LDAP и Kerberos
Конфигурирование сетевой директории
Создаем директорию krb-share
и присваиваем соответствующий контекст SELinux
:
[root@vm-01 ~]# mkdir -p /srv/nfs/krb-share
[root@vm-01 ~]# semanage fcontext -at public_content_rw_t '/srv/nfs/krb-share(/.*)?'
[root@vm-01 ~]# restorecon -vR /srv/nfs/krb-share/
restorecon reset /srv/nfs/krb-share context unconfined_u:object_r:var_t:s0->unconfined_u:object_r:public_content_rw_t:s0
[root@vm-01 ~]# ls -lahiZ /srv/nfs/
drwxr-xr-x. root root unconfined_u:object_r:var_t:s0 .
drwxr-xr-x. root root system_u:object_r:var_t:s0 ..
drwxrws---. root account unconfined_u:object_r:public_content_rw_t:s0 account
drwxr-xr-x. root root unconfined_u:object_r:public_content_rw_t:s0 krb-share
drwxr-xr-x. root root unconfined_u:object_r:var_t:s0 public
[root@vm-01 ~]#
Создаем файл /etc/exports.d/krb-share.exports
в котором будет указана сетевая директория, следующего содержания:
[root@vm-01 ~]# cat /etc/exports.d/account.exports
/srv/nfs/krb-share 192.168.10.0/24(sec=krb5p,rw,root_squash)
[root@vm-01 ~]#
Директория /srv/nfs/krb-share
доступна машинам из сети 192.168.10.0/24, директория доступна для записи, пользователь root
будет отображаться в
пользователя nobody
на сервере.
Присвоим права на директорию пользователю randy
и группе unix
:
[root@vm-01 ~]# id randy
uid=10002(randy) gid=10000(virtuallab) groups=10000(virtuallab),10002(unix)
[root@vm-01 ~]# chown randy:unix /srv/nfs/krb-share/
[root@vm-01 ~]# chmod 750 /srv/nfs/krb-share/
[root@vm-01 ~]# ls -lahiZ /srv/nfs/krb-share/
drwxr-x---. randy unix unconfined_u:object_r:public_content_rw_t:s0 .
drwxr-xr-x. root root unconfined_u:object_r:var_t:s0 ..
[root@vm-01 ~]#
Перечитаем список сетевых директорий:
[root@vm-01 ~]# exportfs -avr
exporting 192.168.10.0/24:/srv/nfs/public
exporting 192.168.10.0/24:/srv/nfs/krb-share
exporting 192.168.10.0/24:/srv/nfs/account
[root@vm-01 ~]#
Проверяем разрешения SELinux
на монтирование директорий NFS
[root@vm-01 ~]# semanage boolean -l | grep nfs_export
nfs_export_all_rw (on , on) Allow any files/directories to be exported read/write via NFS.
nfs_export_all_ro (on , on) Allow any files/directories to be exported read/only via NFS.
[root@vm-01 ~]#
Запуск
Копируем keytab
файл с сервера vm-03.virtual.lab
, на сервер vm-01.virtual.lab
:
[root@vm-01 ~]# scp -p root@vm-03.virtual.lab:/etc/krb5.keytab /etc/
root@vm-03.virtual.lab's password:
krb5.keytab 100% 1818 1.8KB/s 00:00
[root@vm-01 ~]#
Восстановим контекст SELinux
у keytab
файла:
[root@vm-01 ~]# restorecon -vR /etc/krb5.keytab
[root@vm-01 ~]# ls -lahiZ /etc/krb5.keytab
-rw-------. root root unconfined_u:object_r:krb5_keytab_t:s0 /etc/krb5.keytab
[root@vm-01 ~]#
Для поддержки керберос аутентикации сетевых директорий NFS
, в RHEL 7.0 надо, кроме сервиса nfs-server
запустить сервис nfs-server-secure
:
[root@vm-01 ~]# systemctl enable nfs-secure-server
ln -s '/usr/lib/systemd/system/nfs-secure-server.service' '/etc/systemd/system/nfs.target.wants/nfs-secure-server.service'
[root@vm-01 ~]# systemctl start nfs-secure-server
[root@vm-01 ~]# systemctl status -l nfs-secure-server
nfs-secure-server.service - Secure NFS Server
Loaded: loaded (/usr/lib/systemd/system/nfs-secure-server.service; disabled)
Active: active (running) since Mon 2018-12-03 14:20:42 MSK; 7s ago
Process: 32315 ExecStart=/usr/sbin/rpc.svcgssd $RPCSVCGSSDARGS (code=exited, status=0/SUCCESS)
Main PID: 32316 (rpc.svcgssd)
CGroup: /system.slice/nfs-secure-server.service
└─32316 /usr/sbin/rpc.svcgssd
Dec 03 14:20:42 vm-01.virtual.lab systemd[1]: Starting Secure NFS Server...
Dec 03 14:20:42 vm-01.virtual.lab systemd[1]: Started Secure NFS Server.
[root@vm-01 ~]#
Для корректной работы nfs, необхомо включить несколько сервисов в файрволе. Добавляем разрешения:
[root@vm-01 ~]# firewall-cmd --add-service={mountd,nfs,rpc-bind} --permanent
success
[root@vm-01 ~]# firewall-cmd --reload
success
[root@vm-01 ~]# firewall-cmd --list-services
dhcpv6-client http https mountd nfs rpc-bind ssh
[root@vm-01 ~]#
Проверка
С виртуальной машины vm-01
проверим доступность сетевой директории на самом сервере:
[root@vm-01 ~]# showmount -e vm-01.virtual.lab
Export list for vm-01.virtual.lab:
/srv/nfs/public 192.168.10.0/24
/srv/nfs/account 192.168.10.0/24
[root@vm-01 ~]#
Теперь проверим на клиентской машине. Создадим директорию /srv/nfs/account
и смонтируем сетевую директорию account
в нее:
[root@vm-02 ~]# showmount -e vm-01.virtual.lab
Export list for vm-01.virtual.lab:
/srv/nfs/public 192.168.10.0/24
/srv/nfs/account 192.168.10.0/24
[root@vm-02 ~]# mkdir -p /mnt/nfs/account
[root@vm-02 ~]# mount.nfs4 -v -o nfsvers=4.2 vm-01.virtual.lab:/srv/nfs/account /mnt/nfs/account/
mount.nfs4: timeout set for Fri Nov 30 17:31:40 2018
mount.nfs4: trying text-based options 'nfsvers=4.2,addr=192.168.10.8,clientaddr=192.168.10.9'
[root@vm-02 ~]# ls -lahiZ /mnt/nfs/
drwxr-xr-x. root root unconfined_u:object_r:mnt_t:s0 .
drwxr-xr-x. root root system_u:object_r:mnt_t:s0 ..
drwxrws---. root account unconfined_u:object_r:public_content_rw_t:s0 account
drwxr-xr-x. root root unconfined_u:object_r:mnt_t:s0 public
[lisa@vm-02 ~]$ printf "This is Lisa, and this is my file.\n" > /mnt/nfs/account/account.txt
[lisa@vm-02 ~]$ chmod 660 /mnt/nfs/account/account.txt
[lisa@vm-02 ~]$ ls -lahiZ /mnt/nfs/account/account.txt
-rw-rw----. lisa account unconfined_u:object_r:public_content_rw_t:s0 /mnt/nfs/account/account.txt
[lisa@vm-02 ~]$ exit
logout
[root@vm-02 ~]# su - mary
Last login: Fri Nov 30 17:32:49 MSK 2018 on pts/0
[mary@vm-02 ~]$ printf "This is Mary, and this is my contibution to Lisa's work.\n" >> /mnt/nfs/account/account.txt
[mary@vm-02 ~]$ ls -lahiZ /mnt/nfs/account/account.txt
-rw-rw----. lisa account unconfined_u:object_r:public_content_rw_t:s0 /mnt/nfs/account/account.txt
[mary@vm-02 ~]$ cat /mnt/nfs/account/account.txt
This is Lisa, and this is my file.
This is Mary, and this is my contibution to Lisa's work.
[mary@vm-02 ~]$ exit
logout
[root@vm-02 ~]# ls -lahi /mnt/nfs/account/
ls: cannot open directory /mnt/nfs/account/: Permission denied
[root@vm-02 ~]#
Пользователя root
не пускает потому, что сетевая директория имеет опцию root_squash