На начало работ мы имеем:
Установленный и настроенный контроллер домена FreeIPA
- Имя ПК - dc.rpn.loc
- IP адрес - 192.168.20.105
- Realm - RPN.LOC
Установленный и настроенный контроллер домена MS Active Directory
- Имя ПК - dcwin.win.loc
- IP адрес - 192.168.20.199
- Имя домена - WIN.LOC
Между долменами настроены транзитивные доверительные отношения уровня леса. Т.е. пользователи обоих доменов могут получать доступ на ресурсы другого домена.
Все работы будут проводиться на ОС Rosa Cobalt (он же CentOS 7, RedHat 7)
Установка файлового сервера.
Входные данные:
- Имя ПК - fs.rpn.loc
- IP адрес - 192.168.20.198
- Устанавливаем ОС в режиме минимальной установки.
- Добавляем необходимые пакеты:
# yum install ipa-client ipa-server-trust-ad sssd-libwbclient samba samba-client
- Вносим изменения в файл
/etc/hosts
(т.е. добавляем данные вновь установленного файлового сервера)192.168.20.198 fs.rpn.loc fs
- Добавляем сервер в качестве рядового сервера в домен FreeIPA
# ipa-client-install --mkhomedir
- Добавляем правила в локальный файервол:
# firewall-cmd --permanent --add-service=samba # firewall-cmd --reload
- Добавляем правило для работы Samba в Selinux (если не отключили ранее и планируем использовать):
setsebool -P samba_enable_home_dirs on &
Настраиваем контроллер FreeIPA для работы с файловым сервером.
Переходим в консоль сервера FreeIPA и производим следующие действия:
- Добавляем сервис
cifs
для работы Samba:# ipa service-add cifs/fs.rpn.loc
- Разрешаем серверу Samba читать пароли:
# ipa permission-add "CIFS server can read user passwords" --attrs={ipaNTHash,ipaNTSecurityIdentifier} --type=user --right={read,search,compare} --bindtype=permission # ipa privilege-add "CIFS server privilege" # ipa privilege-add-permission "CIFS server privilege" --permission="CIFS server can read user passwords" # ipa role-add "CIFS server" # ipa role-add-privilege "CIFS server" --privilege="CIFS server privilege" # ipa role-add-member "CIFS server" --services=cifs/fs.rpn.loc
Настраиваем Samba для авторизации в домене FreeIPA
Переходим в консоль файлового сервера и производим следующие действия:
- Извлекаем
keytab
на сервер samba.# kinit -kt /etc/krb5.keytab # ipa-getkeytab -s dc.rpn.loc -p cifs/fs.rpn.loc -k /etc/samba/samba.keytab
- Проверяем, может ли файловый сервер читать атрибуты пользователя в домене FreeIPA:
# kinit admin # ldapsearch -Y gssapi "(uid=username)"
- Если пользователь сгенерировал новый пароль с момента установки adtrust, даже администратор не может видеть атрибут ipaNTHash.
Чтобы подтвердить, что служба samba может читать ipaNTHash, используем ее keytab и находим этот атрибут.# kdestroy -A # kinit -kt /etc/samba/samba.keytab cifs/fs.rpn.loc # ldapsearch -Y gssapi "(ipaNTHash=*)" ipaNTHash
- Создаем (вносим изменения) в файл /etc/samba.smb.conf. В итоге этот файл должен выглядеть примерно так:
[global] debug pid = yes realm = RPN.LOC workgroup = RPN domain master = No domain logons = Yes ldap suffix = dc=rpn,dc=loc ldap group suffix = cn=groups,cn=accounts ldap user suffix = cn=users,cn=accounts ldap machine suffix = cn=computers,cn=accounts ldap admin dn = cn=Directory Manager ldap ssl = off log file = /var/log/samba/log.%m max log size = 100000 domain logons = Yes registry shares = Yes disable spoolss = Yes dedicated keytab file = FILE:/etc/samba/samba.keytab kerberos method = dedicated keytab #passdb backend = ipasam:ldapi://%2fvar%2frun%2fslapd-RPN-LOC.socket #passdb backend = ldapsam:ldapi://%2fvar%2frun%2fslapd-RPN-LOC.socket passdb backend = ipasam:"ldap://dc.rpn.loc" security = ads create krb5 conf = No rpc_daemon:lsasd = fork rpc_daemon:epmd = fork rpc_server:tcpip = yes rpc_server:netlogon = external rpc_server:samr = external rpc_server:lsasd = external rpc_server:lsass = external rpc_server:lsarpc = external rpc_server:epmapper = external ldapsam:trusted = yes idmap config * : backend = tdb [homes] comment = Home Directories valid users = %S, %D%w%S browseable = No read only = No inherit acls = Yes [FS_Share] comment = Test share on FS server path = /opt/share writeable = yes browseable = yes valid users = @admins # Разрешаем группе "admins" из домена FreeIPA доступ к ресурсу write list = @admins # Разрешаем группе "admins" из домена FreeIPA доступ с правом записи к ресурсу guest ok = No inherit acls = Yes create mask = 0660 directory mask = 0770
- Проверяем конфигурацию с помощью команды
testparm
- Запускаем Samba и добавляем в автозапуск:
# systemctl start smb # systemctl enable smb
Проверка доступа к общему ресурсу.
Переходим в консоль любого ПК, входящего в наш домен FreeIPA. На нем должен быть установлен пакет samba-client. Проверяем доступ к общему ресурсу с автоизацией по kerberos:
$ kinit admin $ smbclient -k //fs.rpn.loc/FS_Share
Если все нормально, то мы получаем доступ и видим содержание общего каталога:
lp_load_ex: changing to config backend registry Domain=[RPN] OS=[Windows 6.1] Server=[Samba 4.4.4] smb: \> ls . D 0 Tue Dec 26 16:24:47 2017 .. D 0 Mon Dec 25 12:21:13 2017 111 D 0 Tue Dec 26 12:05:02 2017 222 D 0 Tue Dec 26 12:13:04 2017 333 D 0 Tue Dec 26 12:36:10 2017 444 D 0 Tue Dec 26 12:36:55 2017 555 D 0 Tue Dec 26 12:49:43 2017 666 D 0 Tue Dec 26 12:51:21 2017 777 D 0 Tue Dec 26 16:22:12 2017 888 D 0 Wed Dec 27 09:56:20 2017 18855936 blocks of size 1024. 17173020 blocks available smb: \>
Для доступа с ПК под управлением Windows открываем File Explorer и в строке адреса вводим: \\fs.rpn.loc\FS_Share
Важно: при подключении в данной конфигурации обязательно использовать полное имя ПК, а не IP адрес.
Подключение может осуществить любой клиент в домене или в домене с которым настроены доверительные отношения.
Доступ к общему ресурсу пользователям из доверенного домена.
Доступ к общему ресурсу возможно получить из ПК, находящегося в довереннолм домене. Необходимо только ввести имя и пароль пользователя из домена FreeIPA, которому разрешен доступ. Но это не удобно и зачастую на практике неприемлимо.
Настроим разрешение на доступ пользователям из доверенного домена Active Directory.
В Active Directory есть группа пользователей "WinUsers
", которым необходимо предоставить доступ к общему ресурсу Samba. Для этого:
- Открываем в браузере консоль управления сервером FreeIPA.
- Создаем группу
trust-fs-users
для связи с доверенным доменом. Тип группы - внешняя - Открываем свойства созданной группы. Переходим на вкладку "External" и нажимаем кнопку "Добавить".
- Задаем имя группы в домене Active Directory:
- Переходим в раздел групп и создаем POSIX группу "
fs-users
" для доступа файловому ресурсу: - Нажимаем "Добавить и редактировать" и добавляем ранее созданную внешнюю группу:
- Далее в файл /etc/samba/smb.conf в раздел описания общего ресурса добавляем имя созданной POSIX группы:
[FS_Share] comment = Test share on FS server path = /opt/share writeable = yes browseable = yes valid users = @admins @fs-users write list = @admins @fs-users guest ok = No inherit acls = Yes create mask = 0660 directory mask = 0770
- Перезапускаем сервис Samba:
# systemctl restart smb
В итоге мы получили на файловом сервере общий ресурс, к которому имеют доступ с прозрачной авторизацией как пользователи из домена FreeIPA, так и из доверенного домена Active Directory. Остается только настроить права доступа разным группам на уровне файловой системы.