FreeIPA это сборка программ предназначенных для управление учетными записями и проверки подлинности. Разрабатывается компанией RedHAT. Удобная работа с DNS сервером. Продуманная и удобная работа в панели управления. Англоязычная подробная документация от разработчика.
Содержание:
Введение
Всегда удобно вести базу пользователей в одном месте и использовать данные для работы с различными программами в которых необходима авторизация пользователей. FreeIPA позволяет очень быстро развернуть базу данных пользователей и имеет очень обширный функционал и подробную документацию на английском языке. Очень удобно использовать DNS сервер у которого хорошо продумано управление с панели управления.
Англоязычная документация от разработчика в которой можно найти ответы на все вопросы касающиеся использования FreeIPA.
Предварительная подготовка для установки FreeIPA
Установим операционную систему CentOS 7 c минимального образа и подготовим для установки.
Параметры для установки:
- Имя узла сети : ipa.sevo44.loc
- IP: 192.168.0.102
- Шлюз: 192.168.0.106
- DNS: 8.8.4.4
DNS указываем только для того чтобы машина могла скачать в интернете нужные пакеты. В последствии мы будем использовать DNS сервер на самом сервере IPA и эти параметры можно будет удалить из настроек.
Необходимо обязательно внести изменения в файл /etc/hosts
vi /etc/hosts
= необходимые изменения =
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.102 ipa.sevo44.loc ipa
Примечание: Должно быть указано полное доменное имя (FQDN). В противном случае, Kerberos не будет работать! В файле/etc/hostname название машины должно быть ipa.sevo44.loc!
Сетевые настройки CentOS 7
После установки CentOS и не будем подключать и устанавливать ничего лишнего чтобы в дальнейшем не возникло проблем с обновлением системы.
Используя замечательную утилиту настроим сетевые параметры:
nmtui
С помощью её можно указать сетевые настройки и имя машины, если мы не сделали это при установке системы.
После внесения сетевых изменений перезагрузим сетевые параметры:
service network restart = вывод команды = Restarting network (via systemctl): [ OK ]
Проверим есть ли доступ в интернет отправив 4 пакета на ya.ru:
ping -c 4 ya.ru = вывод команды = PING ya.ru (87.250.250.242) 56(84) bytes of data. 64 bytes from ya.ru (87.250.250.242): icmp_seq=1 ttl=51 time=13.9 ms 64 bytes from ya.ru (87.250.250.242): icmp_seq=2 ttl=51 time=94.4 ms 64 bytes from ya.ru (87.250.250.242): icmp_seq=3 ttl=51 time=19.8 ms 64 bytes from ya.ru (87.250.250.242): icmp_seq=4 ttl=51 time=17.5 ms --- ya.ru ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3005ms rtt min/avg/max/mdev = 13.993/36.447/94.483/33.571 ms
Не отключаем SELINUX для FreeIPA
Так как при установке FreeIPA настройки для SELINUX устанавливаются автоматически то отключать нет смысла.
Обновляем без вопросов и перезагружаем сисетему:
yum -y update && reboot
Установка FreeIPA
Устанавливаем необходимые для FreeIPA пакеты без вопросов:
yum -y install ipa-server ipa-server-dns bind bind-dyndb-ldap
Непосредственная установка
Существует два способа установки:
- с установкой DNS сервера,
- без установки DNS сервера.
Red Hat рекомендует произвести установку и настойку DNS сервера.
Мы будем устанавливать с DNS сервером и это уверяю вас действительно удобно.
Ниже представлен лог установки который я почти весь перевел на русский язык.
ipa-server-install = вывод команды с необходимыми изменениями = Файл журнала для этой установки можно найти в файле /var/log/ipaserver-install.log =================================== Данная программа позволит настроить IPA Server. Это включает в себя: * Настроить изолированный CA (dogtag) для управления сертификатами * Настройка сетевого времени Демон (ntpd) * Создать и настроить Directory Server * Создание и настройка центра распространения ключей kerberos (KDC) * Настроить Apache (httpd) Чтобы принять значения по умолчанию указаны в скобках, нажмите клавишу Enter. Вы хотите настроить DNS, интегрированной (BIND)? [no]: !!! yes Введите полное доменное имя компьютера на что вы настраиваете программное обеспечение сервера. Используя форму <hostname>.<domainname> Пример: master.example.com. Имя хоста сервера [ipa.sevo44.loc]: !!! enter Предупреждение: пропуск разрешение DNS-узла ipa.sevo44.loc Имя домена определяется на основе имени узла. Пожалуйста, подтвердите имя домена [sevo44.loc]: !!! enter Протокол kerberos требует имя области должны быть определены. Обычно это доменное имя преобразуется в верхний регистр. Пожалуйста, укажите имя области [SEVO44.LOC]: !!! enter Определенных операций сервера каталогов требуют права администратора. Этот пользователь называется менеджер каталога и имеет полный доступ каталог для задачи управления системой и будет добавлено экземпляр сервера каталога созданы для ipa. Пароль должен быть минимум 8 символов. Directory Manager пароль: ******** Пароль (подтверждение): ******** IPA сервер требует права администратора, по имени 'admin'. Этот пользователь является регулярным системе учетная запись, используемая для управления IPA сервера. Пароль администратора IPA: ******** Пароль (подтверждение): ******** Checking DNS domain sevo44.loc., please wait ... Do you want to configure DNS forwarders? [yes]: !!! enter Following DNS servers are configured in /etc/resolv.conf: 8.8.4.4 Do you want to configure these servers as DNS forwarders? [yes]: !!! enter 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: Checking DNS forwarders, please wait ... Do you want to search for missing reverse zones? [yes]: !!! enter Do you want to create reverse zone for IP 192.168.0.102 [yes]: !!! enter Please specify the reverse zone name [0.168.192.in-addr.arpa.]: Using reverse zone(s) 0.168.192.in-addr.arpa. The IPA Master Server will be configured with: Hostname: ipa.sevo44.loc IP address(es): 192.168.0.102 Domain name: sevo44.loc Realm name: SEVO44.LOC BIND DNS server will be configured to serve IPA domain with: Forwarders: 8.8.4.4, 8.8.8.8 Forward policy: only Reverse zone(s): 0.168.192.in-addr.arpa. Продолжить настройку системы с этими значениями? [no]: !!! yes Следующие операции могут занимать несколько минут. Пожалуйста, подождите, пока не вернетесь в приглашение. Откинемся на спинку кресла и ждем... Выдаст по окончанию результат. ------ Configuring NTP daemon (ntpd) [1/4]: stopping ntpd [2/4]: writing configuration [3/4]: configuring ntpd to start on boot [4/4]: starting ntpd Done configuring NTP daemon (ntpd). Configuring directory server (dirsrv). Estimated time: 1 minute [1/42]: creating directory server user = часть вывода скрыта = [42/42]: configuring directory to start on boot Done configuring directory server (dirsrv). Configuring certificate server (pki-tomcatd). Estimated time: 3 minutes 30 seconds [1/28]: creating certificate server user = часть вывода скрыта = [28/28]: updating IPA configuration Done configuring certificate server (pki-tomcatd). Configuring directory server (dirsrv). Estimated time: 10 seconds [1/3]: configuring ssl for ds instance [2/3]: restarting directory server [3/3]: adding CA certificate entry Done configuring directory server (dirsrv). Configuring Kerberos KDC (krb5kdc). Estimated time: 30 seconds [1/10]: adding sasl mappings to the directory [2/10]: adding kerberos container to the directory [3/10]: configuring KDC [4/10]: initialize kerberos container WARNING: Your system is running out of entropy, you may experience long delays [5/10]: adding default ACIs [6/10]: creating a keytab for the directory [7/10]: creating a keytab for the machine [8/10]: adding the password extension to the directory [9/10]: starting the KDC [10/10]: configuring KDC to start on boot Done configuring Kerberos KDC (krb5kdc). Configuring kadmin [1/2]: starting kadmin [2/2]: configuring kadmin to start on boot Done configuring kadmin. Configuring ipa_memcached [1/2]: starting ipa_memcached [2/2]: configuring ipa_memcached to start on boot Done configuring ipa_memcached. Configuring ipa-otpd [1/2]: starting ipa-otpd [2/2]: configuring ipa-otpd to start on boot Done configuring ipa-otpd. Configuring the web interface (httpd). Estimated time: 1 minute [1/19]: setting mod_nss port to 443 = часть вывода скрыта = [19/19]: configuring httpd to start on boot Done configuring the web interface (httpd). Applying LDAP updates Upgrading IPA: [1/9]: stopping directory server [2/9]: saving configuration [3/9]: disabling listeners [4/9]: enabling DS global lock [5/9]: starting directory server [6/9]: upgrading server [7/9]: stopping directory server [8/9]: restoring configuration [9/9]: starting directory server Done. Restarting the directory server Restarting the KDC Configuring DNS (named) [1/12]: generating rndc key file [2/12]: adding DNS container [3/12]: setting up our zone [4/12]: setting up reverse zone [5/12]: setting up our own record [6/12]: setting up records for other masters [7/12]: adding NS record to the zones [8/12]: setting up CA record [9/12]: setting up kerberos principal [10/12]: setting up named.conf [11/12]: configuring named to start on boot [12/12]: changing resolv.conf to point to ourselves Done configuring DNS (named). Configuring DNS key synchronization service (ipa-dnskeysyncd) [1/7]: checking status [2/7]: setting up bind-dyndb-ldap working directory [3/7]: setting up kerberos principal [4/7]: setting up SoftHSM [5/7]: adding DNSSEC containers [6/7]: creating replica keys [7/7]: configuring ipa-dnskeysyncd to start on boot Done configuring DNS key synchronization service (ipa-dnskeysyncd). Restarting ipa-dnskeysyncd Restarting named Restarting the web server ============================================================== Установка завершена Следующие шаги: 1. Вы должны убедиться, что эти порты открыты: TCP Ports: * 80, 443: HTTP/HTTPS * 389, 636: LDAP/LDAPS * 88, 464: kerberos * 53: bind UDP Ports: * 88, 464: kerberos * 53: bind * 123: ntp
Установка и конфигурирование закончено осталось выполнить требуемые действия указанные в логе установки.
Настройка FirewallD
О детальной настройке FirewallD вы можете посмотреть в статье «FirewallD базовая настройка«. Упуская детали я лишь добавлю все необходимые сервисы и порты.
Откроем необходимые порты и применим правила:
Для тестов лучше вообще не включать! При установке минимальной версии защиты нет!
firewall-cmd --permanent --zone=public --add-service={ntp,http,https,ldap,ldaps,kerberos,kpasswd,dns}
firewall-cmd --permanent --zone=public --add-port=53/tcp
firewall-cmd --permanent --zone=public --add-port=53/udp
firewall-cmd --reload
Результат после каждой команды должен быть -- success!
Проверим зону в которой работает система:
firewall-cmd --list-all --zone=public = вывод команды = public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: ssh ntp http https ldap ldaps kerberos kpasswd dns ports: 53/tcp 53/udp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Всё хорошо. Все необходимые сервисы и порты открыты.
Проверка после установки
Получить билет kerberos с помощью команды:
kinit admin
= вывод команды =
Password for admin@SEVO44.LOC: ********
Проверим полученный билет:
klist = вывод команды = Ticket cache: KEYRING:persistent:0:0 Default principal: admin@SEVO44.LOC Valid starting Expires Service principal 26.07.2016 02:47:02 27.07.2016 02:46:51 krbtgt/SEVO44.LOC@SEVO44.LOC
Как видим всё работает.
Добавление параметра DNS
Для того чтобы нам войти в панель управления по адресу ipa.sevo44.loc нам необходимо добавить нужный параметр в настройки DHCP сервера или добавить строчку в файл /etc/hosts на компьютере с которого хотим войти.
vi /etc/hosts = необходимое изменении = 192.168.0.102 ipa.sevo44.loc
В моем случае работает DHCP сервер в сети под управлением CentOS 7 и мне необходимо было внести необходимые данные и перезагрузить службу:
vi /etc/dhcp/dhcpd.conf
= вывод команды с требуемым параметром =
subnet 192.168.0.0 netmask 255.255.255.0 {
option domain-name "sevo44.loc";
option domain-name-servers 192.168.0.102;
range 192.168.0.150 192.168.0.220;
option routers 192.168.0.106;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option ntp-servers 192.168.0.106;
# PXE SERVER IP
next-server 192.168.0.106;
filename "pxelinux.0";
}
systemctl restart dhcpd
Добавление аватара в базу LDAP
Единственное чего мне сразу не хватило в FreeIPA, это добавление аватарки в данные пользователя. В будущем это скорей всего появится ну а пока можно это сделать руками.
Получаем билет пользователя которому добавим аватар:
kinit sevo44 = вывод команды = Password for sevo44@SEVO44.LOC: Password expired. You must change it now. Enter new password: ****** Enter it again: ******
Проверим результат:
klist = вывод команды = Ticket cache: KEYRING:persistent:0:krb_ccache_eDplsFs Default principal: sevo44@SEVO44.LOC Valid starting Expires Service principal 06.10.2017 19:08:09 07.10.2017 19:08:09 krbtgt/SEVO44.LOC@SEVO44.LOC
Выведем информацию о пользователе:
ipa user-show --all sevo44 = вывод команды = dn: uid=sevo44,cn=users,cn=accounts,dc=sevo44,dc=loc Логин пользователя: sevo44 Имя: Алексей Фамилия: Долотов Полное имя: Алексей Долотов Отображаемое имя: Алексей Долотов Инициалы: АД Домашний каталог: /home/sevo44 GECOS: Алексей Долотов Оболочка входа: /bin/sh Principal name: sevo44@SEVO44.LOC Principal alias: sevo44@SEVO44.LOC Электронный адрес: info@sevo44.ru UID: 934400001 ID группы: 934400001 Должность: Учетная запись отключена: False Preserved user: False Пароль: True Member of groups: admincloud, ipausers, admin Kerberos ключей доступно: True ipauniqueid: f1f4385a-a115-11e7-98ed-36ef55e202fa krblastpwdchange: 20171006160809Z krbpasswordexpiration: 20180104160809Z objectclass: top, person, organizationalperson, inetorgperson, inetuser, posixaccount, krbprincipalaux, krbticketpolicyaux, ipaobject, ipasshuser, ipaSshGroupOfPubKeys, mepOriginEntry, ipauserauthtypeclass
Создадим файл файл Ldif где укажем нужные параметры и откуда брать файл аватара:
vim sevo44.ldif = необходимые параметры = dn: uid=sevo44,cn=users,cn=accounts,dc=sevo44,dc=loc changetype: modify add: jpegPhoto jpegPhoto:< file:///root/avatar_sevo44_250.jpg
Предварительно закидываем нужный файл аватарки в требуемую папку.
LDAP не сохраняет изображения в качестве стандартного файла JPEG, он будет преобразован в base64. Рекомендуется использовать небольшое изображение, который вы будете хранить в LDAP.
Чтобы импортировать изображения в базу LDAP, используем команду ldapmodify:
ldapmodify -h ipa.sevo44.loc -p 389 -x -D "cn=Directory Manager" -W -f sevo44.ldif = вывод команды = Enter LDAP Password: ****** modifying entry "uid=sevo44,cn=users,cn=accounts,dc=sevo44,dc=loc"
Проверим правильность добавления аватарки в базу LDAP:
ipa user-show --all sevo44
= вывод команды =
dn: uid=sevo44,cn=users,cn=accounts,dc=sevo44,dc=loc
Логин пользователя: sevo44
Имя: Алексей
Фамилия: Долотов
Полное имя: Алексей Долотов
Отображаемое имя: Алексей Долотов
Инициалы: АД
Домашний каталог: /home/sevo44
GECOS: Алексей Долотов
Оболочка входа: /bin/sh
Principal name: sevo44@SEVO44.LOC
Principal alias: sevo44@SEVO44.LOC
Электронный адрес: info@sevo44.ru
UID: 934400001
ID группы: 934400001
Должность:
Учетная запись отключена: False
Preserved user: False
Пароль: True
Member of groups: admincloud, ipausers, admin
Kerberos ключей доступно: True
ipauniqueid: f1f4385a-a115-11e7-98ed-36ef55e202fa
jpegphoto: /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gOTAK/9sAQwADAgIDAgIDAwMDBAMDBAUIBQUEBAUKBwcGCAwKDAwLCgsLDQ4SEA0OEQ4LCxAWEBETFBUVFQwPFxgWFBgSFBUU/9sAQwEDBAQFBAUJBQUJFA0LDRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU/8AAEQgAIAAgAwEiAAmY9N1nxffXhmjcw63Mj2+0IwY8Ox3ghcHuGb7u0ZUYKC0NKtaVdpyP//Z
krblastpwdchange: 20171006160809Z
krbpasswordexpiration: 20180104160809Z
objectclass: top, person, organizationalperson, inetorgperson, inetuser, posixaccount, krbprincipalaux, krbticketpolicyaux, ipaobject, ipasshuser,
ipaSshGroupOfPubKeys, mepOriginEntry, ipauserauthtypeclass
Видим что всё добавилось. Теперь на всех ресурсах подключенных к LDAP мы сможем видеть аватары пользователей что весьма удобно в работе.
По такому же принципу можно добавлять аватарки в любую базу LDAP.
Работа в панели FreeIPA
Панель FreeIPA выглядит очень дружелюбно и притом некоторые вещи показывает по русски что весьма радует. Так выглядит главная страница после авторизации:
На скрине ниже мы можем посмотреть куда настроено перенаправление если нет нужной записи в нашем DNS сервере:
В моем случае указаны DNS адреса google.
Добавление локальных хостов (сайтов) в DNS
Так выглядят все зоны DNS что обслуживаются в нашей локальной сети:
Добавление сводится к тому что надо нажать кнопку сверху справа «Добавить» и внести запись A указав название и ip адрес на котором находится ресурс:
Вот так все просто и наглядно и главное все показано в полном объеме необходимого функционала для обслуживание DNS сервера.
Добавление новой сторонней зоны DNS
Частенько когда в локальной сети работает ресурс он имеет доступ и с интернета. В моем случае это ресурс NextCloud к которому у меня настроен доступ как в локальной сети так и с интернета. Необходимо настроить чтобы находясь в локальной сети я работал на прямую с локальным ресурсом а когда работаю в других сетях доступ был через интернет и при этой чтобы ничего не переключать и не настраивать. Всё что нам надо это добавить новую зону и указать с какого IP ей работать если я подключен в локальную сеть.
Чтобы добавить нужную A запись после добавления зоны надо нажать на @ и внести нужный IP адрес.
Вывод
Мне понравилось оформление панели управление и тот функционал что я использую. Пробовал я разные варианты но этот для меня оказался самый лучший и главное стабильно работающий. Возможности большие и в документации вы сможете найти ответы на многие вопросы по работе с ним. Возможно в последствии я опишу как добавлять в домен машины как под управление Linux так и под управлением Windows. Исходя из последних ситуацией у моих клиентов чувствую что основной парк машин буду переводить на Linux. Уж больно достало всех уже «стабильность» систем Windows (особенно последней версии Windows 10 для которой матерные слова это уже самое малое что можно сказать).
Добрый день!
Как удалось ввести Windows 10 в домен FreeIPA?
На тот момент не вводил Windows 10 в домен. Отказался от использования FreeIPA.
Если не секрет, почему отказался?
Привет! немного добавление для статьи 🙂
Сертификат для cockpit для клиентской машины, подписанный FreeIPA
На «клиентской» машине есть cockpit. И на попытку открыть, он ругается на некорректный сертификат. Логично, его просто нужно сделать. Итак…
Делаем закрытый ключик
openssl genrsa -out client.key 1024
Теперь делаем сертификат-запрос
openssl req -new -key client.key -out client.csr
Выводим содержимое в консоль
cat client.csr
В FreeIPA идем в
Identify — Службы — добавляем сервис http для клиентского узла.
Далее кликаем на
HTTP/имя узла
Там нажимаем Action (вверху слева) и добавляем содержимое client.csr
——BEGIN CERTIFICATE REQUEST——
MIIByTCCATICAQAwgYgxCzAJBgNVBAYTAlJVMQ8wDQYDVQQIDAZNb3Njb3cxFDAS
….
gZqeQrYMa7+Nj9RmJnE6HYpTGob6LwnzVE8Mq2w=
——END CERTIFICATE REQUEST——
Справа на этой же странице в Service Certificate появится уже подписанный «ответ». Нажимаем Action и Get. Сохраняем как client.cert
А теперь добавим закрытый ключик в этот же файл, так как cockpit хочет 1 файлик
cat client.key >> client.cert
И копируем его в cockpit
cp client.cert /etc/cockpit/ws-certs.d/
Далее перезапуск cockpit
systemctl restart cockpit
И в браузере «зелень». Если что-то не так, смотрим лог
journalctl -u cockpit -f
Отличное дополнение. Спасибо.
Клиент не добавляется , использую Rosa Fresh r10 , пишет «Failed to add CA to temporary NSS database.»
Как подключить ldap zabbix к FREE IPA ?
почему то не могу авторизоваться в веб. интерфейсе FREEIPA
В каком виде нужно вводить логин на примере домена lindomain.loc?
Какой браузер использовать — есть ли ньюансы?
admin@lindomain.loc
admin@LINDOMAIN.LOC
admin
lindomainadmin
LINDOMAINadmin
LINDOMAINADMIN
команда kinit, klist отрабатывает нормально.
Что посоветуете ?
При выполнении команды ipa-server-install вы вводили пароль при запросе «IPA сервер требует права администратора, по имени ‘admin’. Этот пользователь является регулярным системе учётная запись, используемая для управления IPA сервера.» Авторизуюсь в любом браузером указав в качестве логина admin.
Если страницу главную видите и не проходит авторизация сразу после установки значит неверно указывайте пароль.
Возможно проблема в том что не указали пароль как рекомендовано «Пароль должен быть минимум 8 символов.»
А самое главное где? Как можно использовать эту базу данных ldap? Для авторизации на компах, в сетевых шарах, где-то еще может быть? С почтой как-то можно связать? Понятно, что все это можно, а есть какие-то примеры?
Примеров пока нет, но будут. В личной практике пока использую связку с NextCloud. Вводил Windows 10 в домен и CentOS и Fedora. В российском дистрибутиве Rosa FreeIPA взята как основа для сервера AD (по крайней мере в документации часто упоминается). Ну а где использовать тут важно захотеть внедрять и главное желание директоров. Страх ухода от Windows тупо закрывает здравый смысл. Дело привычки штука сильная.