FreeIPA
Материал из ALT Linux Wiki
м (→Настройка доверия) |
(→Создание аккаунта для доступа к LDAP) |
||
(19 промежуточных версий не показаны.) | |||
Строка 31: | Строка 31: | ||
остальные вопросы выбираем по умолчанию (можно просто нажать Enter). Так же при установке попросят ввести пароль администратора системы и пароль администратора каталогов.<br> | остальные вопросы выбираем по умолчанию (можно просто нажать Enter). Так же при установке попросят ввести пароль администратора системы и пароль администратора каталогов.<br> | ||
- | |||
- | |||
- | |||
- | |||
- | |||
Для возможности управлять FreeIPA сервером из командной строки необходимо получить билет Kerberos: | Для возможности управлять FreeIPA сервером из командной строки необходимо получить билет Kerberos: | ||
<pre># kinit admin</pre> | <pre># kinit admin</pre> | ||
Добавим в DNS запись о нашем сервере времени: | Добавим в DNS запись о нашем сервере времени: | ||
<pre># ipa dnsrecord-add example.test _ntp._udp --srv-priority=0 --srv-weight=100 --srv-port=123 --srv-target=ipa.example.test.</pre> | <pre># ipa dnsrecord-add example.test _ntp._udp --srv-priority=0 --srv-weight=100 --srv-port=123 --srv-target=ipa.example.test.</pre> | ||
+ | |||
+ | Проверить работу ntp сервера можно командой: | ||
+ | <pre># ntpdate -q localhost | ||
+ | server 127.0.0.1, stratum 3, offset 0.000018, delay 0.02568 | ||
+ | 27 Apr 10:27:00 ntpdate[3491]: adjust time server 127.0.0.1 offset 0.000018 sec</pre> | ||
Также доступен веб-интерфейс по адресу: | Также доступен веб-интерфейс по адресу: | ||
Строка 53: | Строка 53: | ||
== Установка FreeIPA клиента и подключение к серверу == | == Установка FreeIPA клиента и подключение к серверу == | ||
Установим необходимые пакеты: | Установим необходимые пакеты: | ||
- | <pre># apt-get install freeipa-client libsss_sudo</pre> | + | <pre># apt-get install freeipa-client libsss_sudo krb5-kinit bind-utils libbind</pre> |
Зададим имя компьютера: | Зададим имя компьютера: | ||
<pre># hostnamectl set-hostname comp01.example.test</pre> | <pre># hostnamectl set-hostname comp01.example.test</pre> | ||
Строка 83: | Строка 83: | ||
Continue to configure the system with these values? [no]:</pre> | Continue to configure the system with these values? [no]:</pre> | ||
Отвечаем {{cmd|yes}} вводим имя пользователя, имеющего право вводить машины в домен, и его пароль.<br> | Отвечаем {{cmd|yes}} вводим имя пользователя, имеющего право вводить машины в домен, и его пароль.<br> | ||
+ | |||
+ | Пример успешного ввода в домен: | ||
+ | <source lang="text">Discovery was successful! | ||
+ | Client hostname: ipa-client1.test1.alt | ||
+ | Realm: TEST1.ALT | ||
+ | DNS Domain: test1.alt | ||
+ | IPA Server: ipa-server.test1.alt | ||
+ | BaseDN: dc=test1,dc=alt | ||
+ | Synchronizing time with KDC... | ||
+ | Attempting to sync time using ntpdate. Will timeout after 15 seconds | ||
+ | Successfully retrieved CA cert | ||
+ | Subject: CN=Certificate Authority,O=TEST1.ALT | ||
+ | Issuer: CN=Certificate Authority,O=TEST1.ALT | ||
+ | Valid From: Wed Feb 15 15:17:45 2017 UTC | ||
+ | Valid Until: Sun Feb 15 15:17:45 2037 UTC | ||
+ | |||
+ | Enrolled in IPA realm TEST1.ALT | ||
+ | Created /etc/ipa/default.conf | ||
+ | Configured sudoers in /etc/nsswitch.conf | ||
+ | Configured /etc/sssd/sssd.conf | ||
+ | Configured passwd in /etc/nsswitch.conf | ||
+ | Configured group in /etc/nsswitch.conf | ||
+ | Configured gshadow in /etc/nsswitch.conf | ||
+ | Configured services in /etc/nsswitch.conf | ||
+ | Configured netgroup in /etc/nsswitch.conf | ||
+ | Configured shadow in /etc/nsswitch.conf | ||
+ | Configured /etc/nsswitch.conf | ||
+ | Configured PAM system-auth | ||
+ | Configured /etc/krb5.conf for IPA realm TEST1.ALT | ||
+ | trying https://ipa-server.test1.alt/ipa/json | ||
+ | Forwarding 'ping' to json server 'https://ipa-server.test1.alt/ipa/json' | ||
+ | Forwarding 'ca_is_enabled' to json server 'https://ipa-server.test1.alt/ipa/json' | ||
+ | Hostname (ipa-client1.test1.alt) does not have A/AAAA record. | ||
+ | Failed to update DNS records. | ||
+ | Missing A/AAAA record(s) for host ipa-client1.test1.alt: 10.10.10.206. | ||
+ | Missing reverse record(s) for address(es): 10.10.10.206. | ||
+ | Adding SSH public key from /etc/openssh/ssh_host_ecdsa_key.pub | ||
+ | Adding SSH public key from /etc/openssh/ssh_host_ed25519_key.pub | ||
+ | Adding SSH public key from /etc/openssh/ssh_host_dsa_key.pub | ||
+ | Adding SSH public key from /etc/openssh/ssh_host_rsa_key.pub | ||
+ | Forwarding 'host_mod' to json server 'https://ipa-server.test1.alt/ipa/json' | ||
+ | Could not update DNS SSHFP records. | ||
+ | SSSD enabled | ||
+ | Configured /etc/openldap/ldap.conf | ||
+ | NTP enabled | ||
+ | Configured /etc/openssh/ssh_config | ||
+ | Configured /etc/openssh/sshd_config | ||
+ | Configuring test1.alt as NIS domain. | ||
+ | Client configuration complete.</source> | ||
+ | |||
+ | {{Attention|Если при входе в домен возникает такая ошибка: | ||
+ | <pre>Hostname (ipa-client1.test1.alt) does not have A/AAAA record. | ||
+ | Failed to update DNS records.</pre> | ||
+ | Проверьте IP-адрес доменного DNS сервера в файле {{path|/etc/resolv.conf}}}} | ||
В случае возникновения ошибки, необходимо перед повторной установкой запустить процедуру удаления: | В случае возникновения ошибки, необходимо перед повторной установкой запустить процедуру удаления: | ||
Строка 89: | Строка 143: | ||
Для работы sudo-политик для доменных пользователей на клиентской машине необходимо разрешить доступ к sudo: | Для работы sudo-политик для доменных пользователей на клиентской машине необходимо разрешить доступ к sudo: | ||
<pre># control sudo public</pre> | <pre># control sudo public</pre> | ||
- | |||
=== Вход пользователя === | === Вход пользователя === | ||
При первом входе пользователя будет запрошен текущий установленный администратором пароль и затем у пользователя запрашивается новый пароль и его подтверждение. | При первом входе пользователя будет запрошен текущий установленный администратором пароль и затем у пользователя запрашивается новый пароль и его подтверждение. | ||
- | {{Attention| | + | {{Attention|Если машина до этого была в других доменах или есть проблемы со входом пользователей рекомендуется очистить кэш sssd: |
+ | <pre># systemctl stop sssd | ||
+ | # rm -f /var/lib/sss/db/* | ||
+ | # rm -f /var/lib/sss/mc/* | ||
+ | # systemctl start sssd</pre>}} | ||
== Настройка доверительных отношений с AD == | == Настройка доверительных отношений с AD == | ||
Строка 232: | Строка 289: | ||
# dig +short -t SRV _ldap._tcp.dc._msdcs.domc.testc. | # dig +short -t SRV _ldap._tcp.dc._msdcs.domc.testc. | ||
0 100 389 dcc.domc.testc.</pre> | 0 100 389 dcc.domc.testc.</pre> | ||
+ | {{Attention|Если запись {{cmd|_kerberos._udp.dc._msdcs.domc.testc.}} не доступна проверьте {{cmd|_kerberos._tcp.dc._msdcs.domc.testc.}}}} | ||
=== Настройка доверия === | === Настройка доверия === | ||
Строка 254: | Строка 312: | ||
Необходимо ввести пароль Administrator AD.<br> | Необходимо ввести пароль Administrator AD.<br> | ||
Далее необходимо запросить сервер AD о его доверенных доменах: | Далее необходимо запросить сервер AD о его доверенных доменах: | ||
- | <pre># ipa trust-fetch-domains domc.testc</pre> | + | <pre># ipa trust-fetch-domains domc.testc |
+ | -------------------------------------------- | ||
+ | List of trust domains successfully refreshed | ||
+ | -------------------------------------------- | ||
+ | Realm name: domd.domc.testc | ||
+ | Domain NetBIOS name: DOMD | ||
+ | Domain Security Identifier: S-1-5-21-2419724241-1549151283-3268040000 | ||
+ | ------------------------------ | ||
+ | Количество вернутых значений 1 | ||
+ | ------------------------------ | ||
+ | </pre> | ||
При этом IPA создаст нужные id-диапазоны для доверенных доменов.<br> | При этом IPA создаст нужные id-диапазоны для доверенных доменов.<br> | ||
+ | Если мы добавим в лес еще один домен DOME.TESTE, то необходимо настроить DNS на обоих серверах, чтобы они видели друг друга.<br> | ||
+ | И выполнить команду еще раз,чтобы IPA сервер узнал о нем: | ||
+ | <pre># ipa trust-fetch-domains domc.testc | ||
+ | -------------------------------------------- | ||
+ | List of trust domains successfully refreshed | ||
+ | -------------------------------------------- | ||
+ | Realm name: dome.teste | ||
+ | Domain NetBIOS name: DOME | ||
+ | Domain Security Identifier: S-1-5-21-3615012966-1241218098-4147673574 | ||
+ | ------------------------------ | ||
+ | Количество вернутых значений 1 | ||
+ | ------------------------------</pre> | ||
+ | Найти все доверенные домены можно и с помощью web-интерфейса. Для Перейдем в IPA Server -> Trusts и выберем нужный нам домен:<br> | ||
+ | [[Файл:IPATrusts.png|600px]]<br> | ||
+ | Нажмём кнопку Fetch domains это обновит список доверенных доменов:<br> | ||
+ | [[Файл:IPATrustFetch.png|600px]]<br> | ||
+ | |||
Для того чтобы увидеть список всех доверенных доменов из леса используйте следующую команду: | Для того чтобы увидеть список всех доверенных доменов из леса используйте следующую команду: | ||
- | <pre># ipa trustdomain-find domc.testc</pre> | + | <pre># ipa trustdomain-find domc.testc |
- | + | Domain name: domc.testc | |
+ | Domain NetBIOS name: DOMC | ||
+ | Domain Security Identifier: S-1-5-21-3611360735-1365415015-3217858865 | ||
+ | Domain enabled: True | ||
+ | |||
+ | Domain name: domd.domc.testc | ||
+ | Domain NetBIOS name: DOMD | ||
+ | Domain Security Identifier: S-1-5-21-2419724241-1549151283-3268040000 | ||
+ | Domain enabled: True | ||
+ | |||
+ | Domain name: dome.teste | ||
+ | Domain NetBIOS name: DOME | ||
+ | Domain Security Identifier: S-1-5-21-3615012966-1241218098-4147673574 | ||
+ | Domain enabled: True | ||
+ | ------------------------------ | ||
+ | Количество вернутых значений 3 | ||
+ | ------------------------------ | ||
+ | </pre> | ||
+ | |||
+ | === Проверка конфигурации Kerberos === | ||
1. Запросим ticket для IPA пользователя: | 1. Запросим ticket для IPA пользователя: | ||
<pre># kinit admin</pre> | <pre># kinit admin</pre> | ||
Строка 278: | Строка 382: | ||
14.02.2017 15:43:25 15.02.2017 15:42:48 host/dcf.domf.testf@DOMF.TESTF | 14.02.2017 15:43:25 15.02.2017 15:42:48 host/dcf.domf.testf@DOMF.TESTF | ||
14.02.2017 15:42:53 15.02.2017 15:42:48 krbtgt/DOMF.TESTF@DOMF.TESTF</pre> | 14.02.2017 15:42:53 15.02.2017 15:42:48 krbtgt/DOMF.TESTF@DOMF.TESTF</pre> | ||
- | + | === Проверка пользователей доверенного домена === | |
- | + | Проверим имеет ли доступ к пользователям из доверенного домена рабочие станции IPA.<br> | |
+ | Для этого на рабочей станции IPA выполните команду: | ||
+ | <pre># getent passwd u01domc@domc | ||
+ | u01domc@domc.testc:*:328601108:328601108:u01domc:/home/domc.testc/u01domc:</pre> | ||
+ | Где u01domc это пользователь из AD домена. Обратите внимание, что не указана оболочка входа. Назначить оболочку входа для пользователей из доверенного домена можно добавив на сервере IPA в файл {{path|/etc/sssd/sssd.conf}} следующую строчку: | ||
+ | <pre>[domain/domf.testf] | ||
+ | ... | ||
+ | default_shell = /bin/bash | ||
+ | ...</pre> | ||
+ | Вывод команды должен стать таким: | ||
+ | <pre># getent passwd u01domc@domc | ||
+ | u01domc@domc.testc:*:328601108:328601108:u01domc:/home/domc.testc/u01domc:/bin/bash</pre> | ||
+ | {{Attention|Для корректной работы сервера IPA с пользователями доверенного домена AD необходимо обеспечить доступ сервиса sssd к /etc/krb5.keytab см. [https://bugzilla.altlinux.org/33115 bug 33115]}} | ||
+ | {{Attention|Для входа AD пользователя в ALT рабочую станцию из IPA вводим имя пользователя в формате '''DOMC'''\username или '''DOMC.TESTC'''\username или username@'''domc''' username@'''domc.testc'''}} | ||
{{Attention|Для входа IPA пользователя в windows рабочую станцию из AD вводим имя пользователя в формате '''DOMF.TESTF'''\username}} | {{Attention|Для входа IPA пользователя в windows рабочую станцию из AD вводим имя пользователя в формате '''DOMF.TESTF'''\username}} | ||
- | + | == Создание аккаунта для доступа к LDAP == | |
+ | Некоторые сервисы использующие LDAP требуют предварительно настроенной учетной записи. Использование обычной учетной записи пользователя предпочтительней, но не всегда это целесообразно делать. Можно сделать системную учетную запись следующим образом на сервере FreeIPA используя пароль Directory : | ||
+ | <pre># ldapmodify -x -D 'cn=Directory Manager' -W | ||
+ | dn: uid=system,cn=sysaccounts,cn=etc,dc=example,dc=test | ||
+ | changetype: add | ||
+ | objectclass: account | ||
+ | objectclass: simplesecurityobject | ||
+ | uid: ldapaccount | ||
+ | userPassword: secret123 | ||
+ | passwordExpirationTime: 20380119031407Z | ||
+ | nsIdleTimeout: 0 | ||
+ | <blank line> | ||
+ | ^D</pre> | ||
+ | Замените пароль на более сложный. Параметр {{path|passwordExpirationTime: 20380119031407Z}} означает, что срок действия пароля неограничен | ||
+ | Причина использования такой учетной записи, а не создание обычной учетной записи пользователя IPA, и использование этой системы заключается в том, что системная учетная запись существует только для привязки к LDAP. Это не настоящий пользователь POSIX, он не может войти в систему и ему не принадлежат файлы. У этого пользователя нет особых прав и он не может ничего записывать какие-либо данные на сервер LDAP FreeIPA, только права на чтение. | ||
[[Категория:Корпоративная инфраструктура]] | [[Категория:Корпоративная инфраструктура]] |
Текущая версия на 08:42, 15 июня 2017
FreeIPA - это комплексное решение по управлению безопасностью Linux-систем, 389 Directory Server, MIT Kerberos, NTP, DNS, Dogtag. Оно состоит из веб-интерфейса и интерфейса командной строки.
FreeIPA является интегрированной системой проверки подлинности и авторизации в сетевой среде Linux, FreeIPA сервер обеспечивает централизованную проверку подлинности, авторизацию и контроль за аккаунтами пользователей сохраняя сведения о пользователе, группах, узлах и других объектах необходимых для обеспечения сетевой безопасности.
Сайт проекта: http://www.freeipa.org/
Содержание |
Установка сервера FreeIPA
Устанавливать будет со встроенным DNS сервером и доменом EXAMPLE.TEST в локальной сети 192.168.135.0/24.
Для начала отключим ahttpd, работающий на порту 8080, во избежание конфликтов с разворачиваемым tomcat и отключим HTTPS в Apache2:
# service ahttpd stop # a2dissite 000-default_https # service httpd2 condreload
Установим необходимые пакеты:
# apt-get install freeipa-server freeipa-server-dns
Зададим имя сервера:
# hostnamectl set-hostname ipa.example.test
Запускаем скрипт настройки сервера: В пакетном режиме:
# ipa-server-install -U --hostname=$(hostname) -r EXAMPLE.TEST -n example.test -p 12345678 -a 12345678 --setup-dns --no-forwarders --no-reverse
или интерактивно:
# ipa-server-install
Обратите внимание на ответы на вопросы, не совпадающие с предложенными:
Do you want to configure integrated DNS (BIND)? [no]: yes Do you want to configure DNS forwarders? [yes]: no Do you want to search for missing reverse zones? [yes]: no
остальные вопросы выбираем по умолчанию (можно просто нажать Enter). Так же при установке попросят ввести пароль администратора системы и пароль администратора каталогов.
Для возможности управлять FreeIPA сервером из командной строки необходимо получить билет Kerberos:
# kinit admin
Добавим в DNS запись о нашем сервере времени:
# ipa dnsrecord-add example.test _ntp._udp --srv-priority=0 --srv-weight=100 --srv-port=123 --srv-target=ipa.example.test.
Проверить работу ntp сервера можно командой:
# ntpdate -q localhost server 127.0.0.1, stratum 3, offset 0.000018, delay 0.02568 27 Apr 10:27:00 ntpdate[3491]: adjust time server 127.0.0.1 offset 0.000018 sec
Также доступен веб-интерфейс по адресу:
https://ipa.example.test/ipa/ui/
[error] CalledProcessError: Command '/sbin/systemctl restart httpd2.service' returned non-zero exit status 1
Выполните
# systemctl restart httpd2
Отмените установку:
# ipa-server-install -U --uninstallи повторите снова.
Установка FreeIPA клиента и подключение к серверу
Установим необходимые пакеты:
# apt-get install freeipa-client libsss_sudo krb5-kinit bind-utils libbind
Зададим имя компьютера:
# hostnamectl set-hostname comp01.example.test
Добавим DNS сервер, для этого создадим файл /etc/net/ifaces/ens19/resolv.conf со следующим содержимым:
nameserver 192.168.135.1
192.168.135.1 - IP-адрес нашего FreeIPA сервера.
Укажем службе resolvconf использовать DNS FreeIPA и наш домен для поиска.
Для этого в файл /etc/resolvconf.conf добавим/отредактируем следующие параметры:
interface_order='lo lo[0-9]* lo.* ens19' search_domains=example.test
Где ens19 -интерфейс на котором доступен FreeIPA сервер, example.test - наш домен.
Обновим DNS адреса:
# resolvconf -u
После этого в файле /etc/resolv.conf должны появится строки:
search example.test nameserver 192.168.135.1
Запускаем скрипт настройки клиента: в пакетном режиме:
# ipa-client-install -U -p admin -w 12345678
или интерактивно:
# ipa-client-install
Если все настроено верно скрипт должен выдать такое сообщение:
'''Discovery was successful!''' Client hostname: comp02.example.test Realm: EXAMPLE.TEST DNS Domain: example.test IPA Server: ipa.example.test BaseDN: dc=example,dc=test Continue to configure the system with these values? [no]:
Отвечаем yes вводим имя пользователя, имеющего право вводить машины в домен, и его пароль.
Пример успешного ввода в домен:
Discovery was successful! Client hostname: ipa-client1.test1.alt Realm: TEST1.ALT DNS Domain: test1.alt IPA Server: ipa-server.test1.alt BaseDN: dc=test1,dc=alt Synchronizing time with KDC... Attempting to sync time using ntpdate. Will timeout after 15 seconds Successfully retrieved CA cert Subject: CN=Certificate Authority,O=TEST1.ALT Issuer: CN=Certificate Authority,O=TEST1.ALT Valid From: Wed Feb 15 15:17:45 2017 UTC Valid Until: Sun Feb 15 15:17:45 2037 UTC Enrolled in IPA realm TEST1.ALT Created /etc/ipa/default.conf Configured sudoers in /etc/nsswitch.conf Configured /etc/sssd/sssd.conf Configured passwd in /etc/nsswitch.conf Configured group in /etc/nsswitch.conf Configured gshadow in /etc/nsswitch.conf Configured services in /etc/nsswitch.conf Configured netgroup in /etc/nsswitch.conf Configured shadow in /etc/nsswitch.conf Configured /etc/nsswitch.conf Configured PAM system-auth Configured /etc/krb5.conf for IPA realm TEST1.ALT trying https://ipa-server.test1.alt/ipa/json Forwarding 'ping' to json server 'https://ipa-server.test1.alt/ipa/json' Forwarding 'ca_is_enabled' to json server 'https://ipa-server.test1.alt/ipa/json' Hostname (ipa-client1.test1.alt) does not have A/AAAA record. Failed to update DNS records. Missing A/AAAA record(s) for host ipa-client1.test1.alt: 10.10.10.206. Missing reverse record(s) for address(es): 10.10.10.206. Adding SSH public key from /etc/openssh/ssh_host_ecdsa_key.pub Adding SSH public key from /etc/openssh/ssh_host_ed25519_key.pub Adding SSH public key from /etc/openssh/ssh_host_dsa_key.pub Adding SSH public key from /etc/openssh/ssh_host_rsa_key.pub Forwarding 'host_mod' to json server 'https://ipa-server.test1.alt/ipa/json' Could not update DNS SSHFP records. SSSD enabled Configured /etc/openldap/ldap.conf NTP enabled Configured /etc/openssh/ssh_config Configured /etc/openssh/sshd_config Configuring test1.alt as NIS domain. Client configuration complete.
Hostname (ipa-client1.test1.alt) does not have A/AAAA record. Failed to update DNS records.Проверьте IP-адрес доменного DNS сервера в файле /etc/resolv.conf
В случае возникновения ошибки, необходимо перед повторной установкой запустить процедуру удаления:
# ipa-client-install -U --uninstall
Для работы sudo-политик для доменных пользователей на клиентской машине необходимо разрешить доступ к sudo:
# control sudo public
Вход пользователя
При первом входе пользователя будет запрошен текущий установленный администратором пароль и затем у пользователя запрашивается новый пароль и его подтверждение.
# systemctl stop sssd # rm -f /var/lib/sss/db/* # rm -f /var/lib/sss/mc/* # systemctl start sssd
Настройка доверительных отношений с AD
FreeIPA использует Samba для интеграции в Active Directory. Для работы Samba необходим работающий стек IPv6.
Начальные данные:
- IP адрес IPA сервера: 192.168.135.130
- Имя IPA сервера: dcf
- Имя IPA домена: domf.testf
- NetBIOS имя IPA домена: DOMF
- IP адрес AD DC: 192.168.135.150
- Имя AD DC: dcc
- Имя AD домена: domc.testc
- NetBIOS имя AD домена: DOMC
Установим необходимые пакеты:
# apt-get install freeipa-server-trust-ad python-module-sss-murmur samba-winbind
Предварительная настройка IPA сервера
Настроим IPA для работы с доверительными отношениями:
# ipa-adtrust-install
Скрипт спросит необходимо ли конфигурировать slapi-nis плагин для поддержки работы старых клиентов (SSSD < 1.9) с пользователем из доверенного домена:
Enable trusted domains support in slapi-nis? [no]:
На IPA сервере добавлен хотя бы один пользователь (администратор сервера), поэтому скрипт предложит сгенерировать SID для всех существующих пользователей и груп:
Do you want to run the ipa-sidgen task? [no]:Дата и время на серверах должны совпадать.
IPA сервер в своей работе использует следующие порты: <pre>TCP ports: 80, 88, 443, 389, 636, 88, 464, 53, 135, 138, 139, 445, 1024-1300 UDP ports: 88, 464, 53, 123, 138, 139, 389, 445
Они должны быть открыты и доступны.
Настроим Samba:
# net conf setparm global 'dedicated keytab file' /etc/samba/samba.keytab # systemctl restart ipa
Проверим проходит ли Samba аутентификацию Kerberos со стороны IPA сервера:
# kinit admin # smbclient -L dcf.domf.testf -k lp_load_ex: changing to config backend registry Domain=[DOMF] OS=[Windows 6.1] Server=[Samba 4.5.5] Sharename Type Comment --------- ---- ------- IPC$ IPC IPC Service (Samba 4.5.5) Domain=[DOMF] OS=[Windows 6.1] Server=[Samba 4.5.5] Server Comment --------- ------- Workgroup Master --------- -------
Настроим DNS на обоих серверах, чтобы они знали друг о друге:
На AD сервере создадим сервер условной пересылки для зоны IPA домена:
C:\> dnscmd 127.0.0.1 /ZoneAdd domf.testf /Forwarder 192.168.135.130
На IPA сервере так же добавим зону AD домена:
# ipa dnsforwardzone-add domc.testc --forwarder=192.168.135.150 --forward-policy=only
Проверка конфигурации DNS
На AD сервере:
Проверим наличие записей для работы сервисов IPA на DNS-сервере AD.
1. Запись отвечающая за работу сервисов Kerberos через UDP и LDAP через TCP:
C:\>nslookup.exe > set type=SRV > _kerberos._udp.domf.testf. _kerberos._udp.domf.testf. SRV service location: priority = 0 weight = 100 port = 88 svr hostname = dcf.domf.testf. > _ldap._tcp.domf.testf. _ldap._tcp.ipa.example.com SRV service location: priority = 0 weight = 100 port = 389 svr hostname = dcf.domf.testf.
2. Запись отвечающая за имя Kerberos realm IPA домена:
C:\>nslookup.exe > set type=TXT > _kerberos.domf.testf. _kerberos.domf.testf. text = "DOMF.TESTF"
3. После выполнения команды ipa-adtrust-install должны появится записи отвечающие за работу сервисов MS DC Kerberos через UDP и LDAP через TCP:
C:\>nslookup.exe > set type=SRV > _kerberos._udp.dc._msdcs.domf.testf. _kerberos._udp.dc._msdcs.domf.testf. SRV service location: priority = 0 weight = 100 port = 88 svr hostname = dcf.domf.testf. > _ldap._tcp.dc._msdcs.domf.testf. _ldap._tcp.dc._msdcs.domf.testf. SRV service location: priority = 0 weight = 100 port = 389 svr hostname = dcf.domf.testf.
Далее проверим наличие записей для работы сервисов AD на DNS-сервере AD. 4. Запись отвечающая за работу сервисов Kerberos через UDP и LDAP через TCP:
C:\>nslookup.exe > set type=SRV > _kerberos._udp.dc._msdcs.domc.testc. _kerberos._udp.dc._msdcs.domc.testc. SRV service location: priority = 0 weight = 100 port = 88 svr hostname = dcc.domc.testc. > _ldap._tcp.dc._msdcs.domc.testc. _ldap._tcp.dc._msdcs.domc.testc. SRV service location: priority = 0 weight = 100 port = 389 svr hostname = dcc.domc.testc.
На IPA сервере:
Проверим наличие записей для работы сервисов IPA на DNS-сервере IPA.
1. Запись отвечающая за работу сервисов Kerberos через UDP и LDAP через TCP:
# dig +short -t SRV _kerberos._udp.domf.testf. 0 100 88 dcf.domf.testf. # dig +short -t SRV _ldap._tcp.domf.testf. 0 100 389 dcf.domf.testf.
2. Запись отвечающая за имя Kerberos realm IPA домена:
dig +short -t TXT _kerberos.domf.testf. "DOMF.TESTF"
3. После выполнения команды ipa-adtrust-install должны появится записи отвечающие за работу сервисов MS DC Kerberos через UDP и LDAP через TCP:
# dig +short -t SRV _kerberos._udp.dc._msdcs.domf.testf. 0 100 88 dcf.domf.testf. # dig +short -t SRV _ldap._tcp.dc._msdcs.domf.testf. 0 100 389 dcf.domf.testf.
Далее проверим наличие записей для работы сервисов AD на DNS-сервере IPA. 4. Запись отвечающая за работу сервисов Kerberos через UDP и LDAP через TCP:
# dig +short -t SRV _kerberos._udp.dc._msdcs.domc.testc. 0 100 88 dcc.domc.testc. # dig +short -t SRV _ldap._tcp.dc._msdcs.domc.testc. 0 100 389 dcc.domc.testc.
Настройка доверия
Добавление двунаправленных доверительных отношений леса (Forest Trust) с AD:
# kinit admin # ipa trust-add --type=ad domc.testc --admin Administrator --password --two-way=true Active Directory domain administrator's password: --------------------------------------------------- Added Active Directory trust for realm "domc.testc" --------------------------------------------------- Realm name: domc.testc Domain NetBIOS name: DOMC Domain Security Identifier: S-1-5-21-3611360735-1365415015-3217858865 SID blacklist incoming: S-1-5-20, S-1-5-3, S-1-5-2, S-1-5-1, S-1-5-7, S-1-5-6, S-1-5-5, S-1-5-4, S-1-5-9, S-1-5-8, S-1-5-17, S-1-5-16, S-1-5-15, S-1-5-14, S-1-5-13, S-1-5-12, S-1-5-11, S-1-5-10, S-1-3, S-1-2, S-1-1, S-1-0, S-1-5-19, S-1-5-18 SID blacklist outgoing: S-1-5-20, S-1-5-3, S-1-5-2, S-1-5-1, S-1-5-7, S-1-5-6, S-1-5-5, S-1-5-4, S-1-5-9, S-1-5-8, S-1-5-17, S-1-5-16, S-1-5-15, S-1-5-14, S-1-5-13, S-1-5-12, S-1-5-11, S-1-5-10, S-1-3, S-1-2, S-1-1, S-1-0, S-1-5-19, S-1-5-18 Trust direction: Two-way trust Trust type: Active Directory domain Trust status: Established and verified
Необходимо ввести пароль Administrator AD.
Далее необходимо запросить сервер AD о его доверенных доменах:
# ipa trust-fetch-domains domc.testc -------------------------------------------- List of trust domains successfully refreshed -------------------------------------------- Realm name: domd.domc.testc Domain NetBIOS name: DOMD Domain Security Identifier: S-1-5-21-2419724241-1549151283-3268040000 ------------------------------ Количество вернутых значений 1 ------------------------------
При этом IPA создаст нужные id-диапазоны для доверенных доменов.
Если мы добавим в лес еще один домен DOME.TESTE, то необходимо настроить DNS на обоих серверах, чтобы они видели друг друга.
И выполнить команду еще раз,чтобы IPA сервер узнал о нем:
# ipa trust-fetch-domains domc.testc -------------------------------------------- List of trust domains successfully refreshed -------------------------------------------- Realm name: dome.teste Domain NetBIOS name: DOME Domain Security Identifier: S-1-5-21-3615012966-1241218098-4147673574 ------------------------------ Количество вернутых значений 1 ------------------------------
Найти все доверенные домены можно и с помощью web-интерфейса. Для Перейдем в IPA Server -> Trusts и выберем нужный нам домен:
Нажмём кнопку Fetch domains это обновит список доверенных доменов:
Для того чтобы увидеть список всех доверенных доменов из леса используйте следующую команду:
# ipa trustdomain-find domc.testc Domain name: domc.testc Domain NetBIOS name: DOMC Domain Security Identifier: S-1-5-21-3611360735-1365415015-3217858865 Domain enabled: True Domain name: domd.domc.testc Domain NetBIOS name: DOMD Domain Security Identifier: S-1-5-21-2419724241-1549151283-3268040000 Domain enabled: True Domain name: dome.teste Domain NetBIOS name: DOME Domain Security Identifier: S-1-5-21-3615012966-1241218098-4147673574 Domain enabled: True ------------------------------ Количество вернутых значений 3 ------------------------------
Проверка конфигурации Kerberos
1. Запросим ticket для IPA пользователя:
# kinit admin
2. Запросим service ticket для сервиса из IPA домена:
# kvno -S host dcf.domf.testf host/dcf.domf.testf@DOMF.TESTF: kvno = 2
3. Запросим service ticket сервиса из AD домена:
# kvno -S cifs dcc.domc.testc cifs/dcc.domc.testc@: kvno = 3
Если запрос service ticket для сервиса из AD домена прошел успешно, то у нас должен появиться междоменный ticket-granting ticket, его имя krbtgt/DOMC.TESTC@DOMF.TESTF:
# klist Ticket cache: KEYRING:persistent:0:0 Default principal: admin@DOMF.TESTF Valid starting Expires Service principal 14.02.2017 15:43:46 15.02.2017 01:43:46 cifs/dcc.domc.testc@DOMC.TESTC 14.02.2017 15:43:46 15.02.2017 01:43:46 cifs/dcc.domc.testc@ 14.02.2017 15:43:46 15.02.2017 15:42:48 krbtgt/DOMC.TESTC@DOMF.TESTF 14.02.2017 15:43:25 15.02.2017 15:42:48 host/dcf.domf.testf@DOMF.TESTF 14.02.2017 15:42:53 15.02.2017 15:42:48 krbtgt/DOMF.TESTF@DOMF.TESTF
Проверка пользователей доверенного домена
Проверим имеет ли доступ к пользователям из доверенного домена рабочие станции IPA.
Для этого на рабочей станции IPA выполните команду:
# getent passwd u01domc@domc u01domc@domc.testc:*:328601108:328601108:u01domc:/home/domc.testc/u01domc:
Где u01domc это пользователь из AD домена. Обратите внимание, что не указана оболочка входа. Назначить оболочку входа для пользователей из доверенного домена можно добавив на сервере IPA в файл /etc/sssd/sssd.conf следующую строчку:
[domain/domf.testf] ... default_shell = /bin/bash ...
Вывод команды должен стать таким:
# getent passwd u01domc@domc u01domc@domc.testc:*:328601108:328601108:u01domc:/home/domc.testc/u01domc:/bin/bash
Создание аккаунта для доступа к LDAP
Некоторые сервисы использующие LDAP требуют предварительно настроенной учетной записи. Использование обычной учетной записи пользователя предпочтительней, но не всегда это целесообразно делать. Можно сделать системную учетную запись следующим образом на сервере FreeIPA используя пароль Directory :
# ldapmodify -x -D 'cn=Directory Manager' -W dn: uid=system,cn=sysaccounts,cn=etc,dc=example,dc=test changetype: add objectclass: account objectclass: simplesecurityobject uid: ldapaccount userPassword: secret123 passwordExpirationTime: 20380119031407Z nsIdleTimeout: 0 <blank line> ^D
Замените пароль на более сложный. Параметр passwordExpirationTime: 20380119031407Z означает, что срок действия пароля неограничен Причина использования такой учетной записи, а не создание обычной учетной записи пользователя IPA, и использование этой системы заключается в том, что системная учетная запись существует только для привязки к LDAP. Это не настоящий пользователь POSIX, он не может войти в систему и ему не принадлежат файлы. У этого пользователя нет особых прав и он не может ничего записывать какие-либо данные на сервер LDAP FreeIPA, только права на чтение.