- 1: подготовка сервера ipa
- 2: настройка dns
- 3: установка генератора случайных чисел
- 4: установка сервера freeipa
- 5: тестирование сервера freeipa
- 6: настройка пользователей ipa
- Automember rebuild membership[править]
- Ipa automount nfs[править]
- Вход пользователя[править]
- Добавление расширенных полей в ldap[править]
- Использование haproxy для высокой доступности freeipa[править]
- Настройка ipa ca-less репликации[править]
- Настройка доверительных отношений с ad[править]
- Настройка доверия[править]
- Настройка репликации во freeipa 4.4 с domain level 1
- Настройка репликации[править]
- Предварительная настройка ipa сервера[править]
- Проверка конфигурации dns[править]
- Проверка конфигурации kerberos[править]
- Проверка пользователей доверенного домена[править]
- Создание аккаунта для доступа к ldap[править]
- Требования
- Установка freeipa клиента и подключение к серверу[править]
- Установка сервера freeipa в режиме ca-less[править]
- Заключение
1: подготовка сервера ipa
Сначала нужно подготовить сервер к запуску FreeIPA: указать имя хоста сервера, обновить системные пакеты, проверить записи DNS и настройки брандмауэра.
Имя хоста сервера должно совпадать с FQDN.
2: настройка dns
Все машины, на которых работает FreeIPA, должны использовать полные доменные имена (FQDN) как имена хостов. Кроме того, имя хоста каждого сервера должно разрешаться по его IP-адресу, а не по localhost.
Примечание: Если вы настраиваете сервер FreeIPA в локальной сети, используйте внутренние IP-адреса.
Внешний IP-адрес сервера можно найти в его панели управления или с помощью команды ip:
ip addr show. . .2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ffinet 111.111.111.111/18 brd 111.111.111.255 scope global eth0valid_lft forever preferred_lft foreverinet6 1111:1111:1111:1111::1111:1111/64 scope globalvalid_lft forever preferred_lft forever. . .
Адрес IPv4 указан в строке inet. Если вы используете IPv6, его можно найти в inet6. Если вы настроили частную сеть, также в выводе вы увидите дополнительные внутренние IP-адреса (их можно проигнорировать). Отличить внешний IP-адрес от внутреннего можно по диапазону: внутренние адреса IPv4 будут в диапазонах 192.168.*.*, 10.*.*.*, или с 172.16.*.* до 172.31.*.*. Внутренние адреса IPv6 всегда начинаются с префикса fe80::.
Теперь нужно отредактировать файл hosts и направить имя хоста сервера на внешний IP-адрес. Файл /etc/hosts связывает доменные имена с IP-адресами локально, на компьютере. Откройте этот файл с помощью nano или другого текстового редактора.
nano /etc/hosts
Найдите строку, в которой после 127.0.0.1 указано имя хоста:
3: установка генератора случайных чисел
Для поддержки шифрования FreeIPA потребуется много случайных данных. Виртуальная машина очень быстро израсходует случайные данные или энтропию. Чтобы избежать этого, используйте rngd, генератор случайных чисел. Rngd берёт данные с аппаратных устройств, подключенных к серверу, и передаёт их в генератор случайных чисел ядра.
Установите пакет:
yum install rng-tools
Запустите его:
systemctl start rngd
Включите сервис, чтобы генератор запускался вместе с сервером:
systemctl enable rngd
Убедитесь, что rngd запущен:
systemctl status rngd
В выводе должна быть строка:
active (running)
Итак, все зависимости установлены. Теперь можно установить программное обеспечение FreeIPA.
4: установка сервера freeipa
Установите пакет FreeIPA с помощью команды:
yum install ipa-server
Запустите установку FreeIPA. Следующая команда запустит сценарий, который запросит у вас некоторые данные и установит FreeIPA.
ipa-server-install
Помимо аутентификации, FreeIPA может управлять DNS-записями для хостов. Это может облегчить настройку и управление хостами. Но в базовой настройке эта функция не нужна, поэтому выберите no.
Do you want to configure integrated DNS (BIND)? [no]: no
Далее нужно указать имя хоста сервера, доменное имя и пространство Kerberos. Kerberos – это протокол аутентификации, который использует FreeIPA. Настоятельно рекомендуется в качестве пространства Kerberos использовать доменное имя сервера. При использовании другой схемы именования могут возникнуть проблемы с интеграцией в Active Directory FreeIPA и другие конфликты.
5: тестирование сервера freeipa
Для начала убедитесь, что пространство Kerberos установлено правильно. Для этого попробуйте инициализировать токен Kerberos для администратора.
6: настройка пользователей ipa
FreeIPA имеет очень обширный набор функций управления пользователями и политикой. Подобно стандартным пользователям Unix, пользователи FreeIPA могут принадлежать к группам. На основе политики группам или отдельным пользователям может быть разрешен или запрещен доступ к хостам (клиентским машинам) или группам хостов.
Попробуйте добавить новых пользователей.
Automember rebuild membership[править]
Пользовательские или хост группы можно легко перестроить на основе новых или обновленных правил automember. Команда automember rebuild только добавляет новые отношения для групп, она не удаляет те, которые не соответствуют правилам automember. Недавно добавленная команда вызовет задачу в rebuild automember, создав запись LDAP в cn = automember rebuild membership, cn = tasks, cn = config.
Плагин automember в настоящее время проверяет операции Add(добавления), чтобы увидеть, есть ли запись соответствует одному из определенных правил automember. Существующие записи не проверяются когда они изменяются. Чтобы применить правило для всех записей, надо добавить задачу к плагину automember.
Создатель задачи обеспечит фильтр поиска и базу. Все совпадающие записи будут проверяться в соответствии с определенными правилами automember, чтобы увидеть если они должны быть добавлены в какие-либо группы. Это позволяет добавить запуск атрибуты(значения) после того, как запись была первоначально добавлена, а затем вызвать задачу(выполнить) обновления automember. Ipa automember-rebuild может использоваться для восстановления членства для всех объектов определенного типа:
$ ipa automember-rebuild --type=group $ ipa automember-rebuild --type=hostgroup
Он также может использоваться для восстановления членства для указанных записей:
Ipa automount nfs[править]
Установим nfs-server:
apt-get install nfs-server
Включим SECURE_NFS:
Вход пользователя[править]
При первом входе пользователя будет запрошен текущий установленный администратором пароль и затем у пользователя запрашивается новый пароль и его подтверждение.
Добавление расширенных полей в ldap[править]
Если необходимо добавить поля в вашу схему ldap, то реализация этого возможна через команду ldapmodify и добавление своих плагинов для отображения этих полей в WebUi.Обычно файлы модификации схемы являются типом .ldif.Пример:Содержание файла addExtField.ldif
dn: cn=schema changetype: modify add: attributeTypes attributeTypes: ( 2.25.28639311321113238241701611583088740684.14.2.2 NAME 'favoriteColorName' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'Extending FreeIPA' ) dn: cn=schema changetype: modify add: attributeTypes attributeTypes: ( 2.25.28639311321113238241701611583088740684.14.2.3 NAME 'redirects' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'Extending FreeIPA') dn: cn=schema changetype: modify add: attributeTypes attributeTypes: ( 2.25.28639311321113238241701611583088740684.14.2.4 NAME 'attbool' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 X-ORIGIN 'Extending FreeIPA') dn: cn=schema changetype: modify add: objectclasses objectclasses: ( 2.25.28639311321113238241701611583088740684.14.2.1 NAME 'customPerson' SUP person STRUCTURAL MAY ( favoriteColorName $ attbool $ redirects ) X-ORIGIN 'Extending FreeIPA' )
Детальное пояснение для блока:
dn: cn=schema changetype: modify add: attributeTypes attributeTypes: ( 2.25.28639311321113238241701611583088740684.14.2.2 NAME 'favoriteColorName' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'Extending FreeIPA' )
dn – dn, в котором будет проводиться изменение. Добавление/удаление классов и т.д.
changetype – атрибут, отвечающий за тип изменений, которые будут происходить.(add, delete, modify, modrdn)
add: attributeTypes – добавление атрибута, далее идёт описание атрибута.2.25.28639311321113238241701611583088740684.14.2.2 – уникальный идентификатор атрибута. Можно написать любой.
NAME ‘favoriteColorName’ – По другому можно назвать – primary name. Название атрибута.
EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch – эти атрибуты заданы для проверки соответствия содержания атрибута правилам caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 – OID типа данных
Все изменения в схеме производятся от пользователя – Directory manager.
Изменение схемы ldap:
$ ldapmodify -D "cn=Directory Manager" -W -f addExtField.ldif
После изменения схемы, путем добавления нового objectclass, нужно чтобы эти поля еще можно было редактировать в web-интерфейсе. Для этого необходимо сделать палагин. В примере использовано 3 атрибута, для них сделаем 3 отдельных плагина:
1. Создание папки:
mkdir -p /usr/share/ipa/ui/js/plugins/favoriteColorName
2. Создание самого плагина:
mcedit /usr/share/ipa/ui/js/plugins/favoriteColorName/favoriteColorName.js
Тело плагина:
Использование haproxy для высокой доступности freeipa[править]
Требуется:
Сервер №1 c freeipa: dc1.testbc.testgl
Сервер №2 с репликой freeipa: dc2.testbc.testgl
Сервер №3 с haproxy: haproxy.testbc.testgl
Настройка:
Инструкция для настройки сервера №1 и №2: FreeIPA
На сервере №3:
Установить
# apt-get install haproxy
Сохранить оригинальный конфигурационный файл:
cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxyBAK.cfg
Изменить конфигурацию:
Настройка ipa ca-less репликации[править]
Внимание! Перед настройкой репликации необходимо выполнить установку клиента
CA-Less конфигурация требуется в тех случаях, когда у вас по какой-то причине нет возможности развернуть на FreeIPA сервис PKI dogtag. Например, это на данный момент невозможно сделать в некоторых сертифицированных конфигурациях.
Если у вас не сертифицированный дистрибутив ALT, то пропустите пункт по настройке CA-Less репликации.
Чтобы установить реплику, сначала создайте сертификаты для новой машины: создадим запрос сертификата и подпишем запрос о выдаче сертификата сервера и экспортируем сертификаты в правильные форматы, на этот раз задав $HOSTNAME имя хоста будущей реплики.
# head -c20 /dev/random > ~/test_ca/noise.txt # /usr/bin/certutil -d ~/test_ca -R -s CN=Указать хост будущей реплики,O=IPA -o /tmp/replicacert.req -k rsa -g 2048 -z ~/test_ca/noise.txt -f ~/test_ca/pwdfile.txt -a
Подпишите запрос о выдаче сертификата реплики:
# /usr/bin/certutil -d ~/test_ca -C -c "CA" -i /tmp/replicacert.req -o /tmp/replicacert.pem -m 3 -v 120 -f ~/test_ca/pwdfile.txt -1 -5 -a
Дайте следующие ответы:
Create key usage extension:
2 - Key encipherment
9 - done
n - not critical
Create netscape cert type extension:
1 - SSL Server
9 - done
n - not critical
Настройка доверительных отношений с 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
Настройка доверия[править]
Добавление двунаправленных доверительных отношений леса (Forest Trust) с AD:Имя доменного администратора Windows должно быть на латинице, кириллицу (Администратор) IPA не принимает.
Настройка репликации во freeipa 4.4 с domain level 1

У нас в компании для организации и управления доступами для Linux-серверов
используется такой сервис как FreeIPA. FreeIPA — это вполне полноценная замена AD для Linux-систем от RHEL. В новой версии появились уровни доменов и был переработан процесс настройки репликации. Так как инструкций вменяемого вида в рунете найти не удалось, я решил написать собственную.
Для начала нам понадобится два сервера с CentOS 7. Сервера будут такие:
ipamaster.org.lan ip 192.168.10.23
ipareplica0.org.lan ip 192.168.10.123На каждом сервере вносим в /etc/hosts адреса мастера и реплики. В нашем случае это:
192.168.10.23 ipamaster.org.lan
192.168.10.213 ipareplica0.org.lanДальше на мастере устанавливаем необходимые пакеты. В нашем случае мы используем сервера FreeIPA как DNS-сервера. Поэтому устанавливем и пакет DNS-сервера:
yum -y install ipa-server bind bind-dyndb-ldap ipa-server-dnsПосле установки пакетов необходимо установить сам сервер FreeIPA. Для автоматизации установки ipa-server-install поддерживает множество ключей, которые позволяют в автоматическом режиме ответить на все вопросы инсталлятора. Мы же в данный момент пройдёмся руками по каждому полю с описанием. Так же ничего не мешает выполнить ipa-server-install -h и составить нужный набор ключей.
Итак установка сервера:
ipa-server-install --setup-dns --mkhomedirКлюч –setup-dns говорит о том, что мы будем использовать DNS-сервер; ключ –mkhomedir нужен, чтобы на клиентах для каждого пользователя автоматически создавалась home директория.
Далее отвечаем на вопросы.
1. Имя хоста должно быть прописано в хост и резолвится. Оставляем как есть.
Server host name [ipamaster.org.lan]:2.
Доменное имя тоже оставляем как есть.
Please confirm the domain name [org.lan]:3.
Realm name тоже без изменений.
Please provide a realm name [org.lan]:4.
Пароль для менеджмента лдап-директорий нужен сложный. И не потерять.
Directory Manager password: q1w2e3r4t5y6
Password (confirm): q1w2e3r4t5y65.
Пароль администратора самого сервиса.
IPA admin password: 12345678906.
Указываем dns forwarders, к примеру, на гугловые сервера. Чтобы закончить указывать форвардеры, достаточно в пустой строке нажать ENTER.
Do you want to configure DNS forwarders? [yes]:
Do you want to configure these servers as DNS forwarders? [yes]:
All DNS servers from /etc/resolv.conf were added. You can enter additional addresses now:
Enter an IP address for a DNS forwarder, or press Enter to skip: 8.8.8.8
DNS forwarder 8.8.8.8 added. You may add another.
Enter an IP address for a DNS forwarder, or press Enter to skip: 8.8.4.4
DNS forwarder 8.8.4.4 added. You may add another.
Enter an IP address for a DNS forwarder, or press Enter to skip:
Checking DNS forwarders, please wait…7.
Разрешаем реверс зону.
Do you want to search for missing reverse zones? [yes]:
Do you want to create reverse zone for IP 192.168.10.23 [yes]:
Please specify the reverse zone name [10.168.192.in-addr.arpa.]:
Using reverse zone(s) 10.168.192.in-addr.arpa.8.
Дальше нам выводят данные для проверки. Проверяем, продолжаем.
The IPA Master Server will be configured with:
Hostname: ipamaster.org.lan
IP address(es): 192.168.10.23
Domain name: org.lan
Realm name: ORG.LAN
BIND DNS server will be configured to serve IPA domain with:
Forwarders: 8.8.8.8, 8.8.4.4
Forward policy: only
Reverse zone(s): 10.168.192.in-addr.arpa.
Continue to configure the system with these values? [no]: yesНачинается довольно долгий процесс установки. Одна из самых долгих частей это генерация сертификатов, так что можно сходить попить чаю.
В финале установки нам покажут какие порты используются. Настраиваем фаерволл, чтобы он принимал соединения на этих портах. В нашем случае тестовое окружение и все друг другу доверяют.
1. You must make sure these network ports are open:
TCP Ports:
* 80, 443: HTTP/HTTPS
* 389, 636: LDAP/LDAPS
* 88, 464: kerberos
* 53: bind
UDP Ports:
* 88, 464: kerberos
* 53: bind
* 123: ntpМожем зайти в веб-интерфейс, проверить работу.

Убедились, что всё работает. Теперь переходим к повышению уровня домена. Нам необходимо пройти по вкладкам IPA SERVERS → Topology. Где нас сразу предупреждают, что СА-серверов должно быть больше одного.

Отвечаем ОК. И проверяем уровень домена на вкладке Domain Level. Если это свежая установка, он по умолчанию будет 1.
ВНИМАНИЕ! Если вы это делаете на проде, то повышение уровня домена без предварительной подготовки может всё сломать. Делайте это только в том случае, когда понимаете зачем и как.
После этих операций переходим к настройки реплики. И вот тут начинаются отличия от старых механизмов. Если раньше нужно было генерировать ключи, переносить на реплику и делать множество телодвижений, то теперь всё значительно проще.
Итак проверяем что реплика берёт днсы с мастера.
cat /etc/resolv.conf
search org.lan
nameserver 192.168.10.23Теперь устанавливаем ipa-client.
yum -y install ipa-client ipa-server-dnsПосле этого устанавливаем и настраиваем клиента. Тут такая же история как с сервером — есть куча ключей для автоматизации, поэтому выполняем.
/usr/sbin/ipa-client-install -d --mkhomedir --domain=org.lan --server=ipamaster.org.lan --realm=ORG.LAN --principal=admin --password=1234567890 --enable-dns-updates -UПосле этого хост должен появиться в веб-интерфейсе.

Дальше переходим к настройке репликации. Выполняем.
Ipa-replica-installУ нас попросят пароль админа. Вводим, жмем ENTER.
WARNING: conflicting time&date synchronization service 'chronyd' will be disabled in favor of ntpd
Password for admin@ORG.LAN:Далее дожидаемся установки и настройки репликации. После завершения можно зайти на
ipareplica0.org.lan
там в IPA SERVERS → Topology → Topology Graph мы увидим, что реплика появилась и реплицируется только доменная часть.

Но мы также помним про назойливое упоминание, что СА-сервер один и что нам нужен резервный днс. Переходим к настройке днс-сервера на реплике.
Ipa-dns-installИ по аналогии с мастером разрешаем форвардеров. Если вдруг наша реплика находится в другом регионе, можно указать другие форвардеры.
После этого переходим к установке СА сервера.
Ipa-ca-installТут у нас спросят наш Directory Manager password. Вы ведь его ещё не потеряли?
Directory Manager (existing master) password: q1w2e3r4t5y6Это займет довольно много времени, поэтому ждём. После завершения идём на любой веб-интерфейс и проверяем топологию. Пропало назойливое сообщение о том, что СА в единственном экземпляре. И появилась новая связь в графике топологий.

Как видим, теперь всё относительно отказоустойчиво. Масштабирование в новой версии стало гораздо более простым и понятным.
Теперь пару слов о том, что стоит не забывать мониторить. Мы мониторим запущенные процессы, открытые порты и самое главное мониторим срок действия корневого СА-сертификата. Потому как в случае, если он прострочится, может возникнуть куча ручной волокиты которая никому не нужна.
Ну и ссылки на официальную документацию:
www.my-sertif.ru/page/V4_Designs
www.my-sertif.ru/page/V4_Proposals
Настройка репликации[править]
На втором контроллере домена установим необходимые пакеты:
# apt-get install freeipa-client freeipa-server-dns
Зададим имя сервера:
# hostnamectl set-hostname ipabackup.example.test
Теперь развернём и настроим клиента:
Предварительная настройка 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 сервера:
Проверка конфигурации dns[править]
На AD сервере:Проверим наличие записей для работы сервисов IPA на DNS-сервере AD.1. Запись отвечающая за работу сервисов Kerberos через UDP и LDAP через TCP:
Проверка конфигурации kerberos[править]
1. Запросим ticket для IPA пользователя:
Проверка пользователей доверенного домена[править]
Проверим имеет ли доступ к пользователям из доверенного домена рабочие станции 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 :
Требования
yum install nano
Установка freeipa клиента и подключение к серверу[править]
Установим необходимые пакеты:
# apt-get install freeipa-client libsss_sudo krb5-kinit bind-utils libbind zip
Зададим имя компьютера:
# 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
Запускаем скрипт настройки клиента:
в пакетном режиме:
Установка сервера freeipa в режиме ca-less[править]
CA-Less конфигурация требуется в тех случаях, когда у вас по какой-то причине нет возможности развернуть на FreeIPA сервис PKI dogtag. Например, это на данный момент невозможно сделать в некоторых сертифицированных конфигурациях. Если у вас не сертифицированный дистрибутив ALT, то пропустите пункт по настройке CA-Less репликации.
Установим необходимые пакеты:
# apt-get install freeipa-server freeipa-server-dns
Зададим имя сервера:
# hostnamectl set-hostname ipa.example.test
Подготовим сертификаты для сервера FreeIPA:
# mkdir ~/test_ca
Создадим файл pwdfiles.txt с паролем, например 12345678:
Заключение
Сервер FreeIPA полностью готов к работе. Теперь вы можете добавить клиентские машины.
