Что такое этот FreeIpa

FreeIpa (Free Identity Policy Audit) - открытый проект компании RedHat включающий в себя кучу других открытых проектов. Некоторые из них: 389 Directory Server, MIT Kerberos, NTP, DNS (bind), Dogtag certificate system. Присутствует возможность множественной репликации для отказоустойчивости. Поддержка множества интерфейсов управления (CLI, Web UI, XMLRPC и JSONRPC API) и Python SDK).

Для любителей Windows можно просто сказать, что это AD для Linux. Проект в целом доступен уже очень давно, но я к сожалению, узнал о нём совсем недавно. Основные функции, которые вы можете использовать:

  • Централизованное управление учётными записями (одна учётка на все сервера)
  • Управление правилами для sudo (что можно и что нельзя)
  • Правила доступа к серверам по ssh
  • DNS сервер (как доп фича)
  • Центр сертификации
  • Web UI (в наше время полезная опция)
  • Интеграция с другими сервисами нуждающихся в авторизации (веб страницы, vpn сервера)
  • Ntp сервер

Т.е. если вы только начинаете строить свою сеть, то вы можете многое завязать на FreeIpa.

Для теста можно использовать официальную демо страницу.

Подготовка

В producton сети естественно рекомендуется иметь кластер из серверов FreeIpa для отказоустойчивости. В официальной документации рекомендуется иметь по 2-3 реплики (slave) в каждом из дата центров. Схему взаимодействий можно посмотреть тут. Настройка дополнительных соглашений о репликации гарантирует, что информация реплицируется не только между исходной репликой и главным сервером, но и между другими репликами.

В дальнейшем буду использовать такую схему:

1 2
Имя домена my.local
Master host freeipa1.dc1.my.local (192.168.0.1)
Slave host 1 freeipa2.dc1.my.local (192.168.0.2)
Slave host 2 freeipa1.dc2.my.local (192.168.0.3)
Slave host 3 freeipa2.dc2.my.local (192.168.0.4)

.

Также замечу что я рассматривал вариант с установкой в уже production сети и у меня уже были сервера NTP, и все сервера синхронизировались с этими NTP. Поэтому я опускаю настройку функцию NTP сервера в FreeIpa. В целом там ничего сложного. Так что если у вас нет NTP сервера в сети, то включайте функцию Ntp сервера в FreeIpa.

Установка master сервера

Установка будет происходить на CentOS Stream (CentOS 8 уже лучше не использовать).

  1. Как обычно сперва обновляем систему и добавляем репозиторий Epel
    sudo dnf install epel-release
    sudo dnf update
    
  2. Добавляем модуль Identity Management
    sudo dnf module enable idm:DL1
    sudo dnf distro-sync
    
  3. Задаём имя сервера с доменном который будем поднимать
    hostnamectl set-hostname freeipa1.dc1.my.local
    hostnamectl set-hostname freeipa1.dc1.my.local --static
    echo "192.168.0.1 freeipa1.dc1.my.local"  >>  /etc/hosts
    
  4. Устанавливаем freeIPA и bind (Будут выдаваться доменные имена серверам, вступившим в домен)
    sudo dnf install ipa-server ipa-server-dns
    
  5. Настройка сервера freeIpa.
    ipa-server-install --setup-dns
    
  6. Отвечаем на запросы.
    `Do you want to configure DNS forwarders? [yes]:` yes
    `Server host name []:` freeipa1.dc1.my.local
    `Please confirm the domain name []:` my.local
    `Please provide a realm name []:` MY.LOCAL
    `Directory Manager password:` password
    `IPA admin password:` password
    `Do you want to configure these servers as DNS forwarders? [yes]:` no
    `Enter an IP address for a DNS forwarder, or press Enter to skip:` (Задаём DNS сервера для пересылки, если надо конечно )
    `Do you want to create reverse zone :` YES (Соглашаемся на создание обратных зон)
    
  7. После финального YES о подтверждении настроек FreeIpa установится и выдаст уведомление о том, что нужно открыть порты
  8. Открываем порты на firewall
    sudo firewall-cmd --add-service={http,https,dns,ntp,freeipa-ldap,freeipa-ldaps}  --permanent
    sudo firewall-cmd --reload
    
  9. После всех этих процедур станет доступна вtб-консоль администрирования сервера FreeIpa, находящаяся по адресу: https://freeipa1.dc1.my.local

Установка первого slave сервера (сервер репликации)

  1. Как обычно сперва обновляем систему и добавляем репозиторий Epel
    sudo dnf install epel-release
    sudo dnf update
    
  2. Добавляем модуль Identity Management
    sudo dnf module enable idm:DL1
    sudo dnf distro-sync
    
  3. Задаём имя сервера с доменном который будем поднимать
    hostnamectl set-hostname freeipa2.dc1.my.local
    hostnamectl set-hostname freeipa2.dc1.my.local --static
    echo "192.168.0.2 freeipa2.dc1.my.local"  >>  /etc/hosts
    
  4. Устанавливаем freeIPA и bind (Будут выдаваться доменные имена серверам, вступившим в домен)
    sudo dnf install ipa-server ipa-server-dns
    
  5. Открываем порты на firewall
    sudo firewall-cmd --add-service={http,https,dns,ntp,freeipa-ldap,freeipa-ldaps}  --permanent
    sudo firewall-cmd --reload
    
  6. Прописываем DNS сервером наш freeipa1.dc1.my.local
  7. Выполняем ввод этого сервера в домен
    sudo ipa-client-install
    
  8. Отвечаем на вопросы
    `Provide the domain name of your IPA server (ex: example.com):` my.local
    `Provide your IPA server name (ex: ipa.example.com):` freeipa1.dc1.my.local
    `User authorized to enroll computers:` admin
    `Password for admin@MY.LOCAL:` password
    
  9. Если всё прошло то мы в веб консоли увидим добавленный сервер https://freeipa1.dc1.my.local/ipa/ui/#/e/host/search
  10. Выполняем установку репликации LDAP-каталога
    sudo ipa-replica-install	
    
  11. Устанавливаем репликацию DNS зон
    sudo ipa-dns-install	
    
  12. Устанавливаем репликацию центра сертификации
    sudo ipa-ca-install	
    
  13. Создаём группу с местоположением (DC1) для наших серверов https://freeipa1.dc1.my.local/ipa/ui/#/e/location/search
  14. Собственно добавляем эти сервера в группу DC1

На этом slave создан и можно посоздавать учетные записи, параллельно проверяя что они создаются на обоих серверах.

Установка второго slave сервера (сервер репликации)

  1. Как обычно сперва обновляем систему и добавляем репозиторий Epel
    sudo dnf install epel-release
    sudo dnf update
    
  2. Добавляем модуль Identity Management
    sudo dnf module enable idm:DL1
    sudo dnf distro-sync
    
  3. Задаём имя сервера с доменном который будем поднимать
    hostnamectl set-hostname freeipa1.dc2.my.local
    hostnamectl set-hostname freeipa1.dc2.my.local --static
    echo "192.168.0.3 freeipa1.dc2.my.local"  >>  /etc/hosts
    
  4. Устанавливаем freeIPA и bind (Будут выдаваться доменные имена серверам, вступившим в домен)
    sudo dnf install ipa-server ipa-server-dns
    
  5. Открываем порты на firewall
    sudo firewall-cmd --add-service={http,https,dns,ntp,freeipa-ldap,freeipa-ldaps}  --permanent
    sudo firewall-cmd --reload
    
  6. Прописываем DNS сервером наш freeipa1.dc1.my.local
  7. Выполняем ввод этого сервера в домен
    sudo ipa-client-install
    
  8. Отвечаем на вопросы
    `Provide the domain name of your IPA server (ex: example.com):` my.local
    `Provide your IPA server name (ex: ipa.example.com):` freeipa1.dc1.my.local
    `User authorized to enroll computers:` admin
    `Password for admin@MY.LOCAL:` password
    
  9. Если всё прошло то мы в веб консоли увидим добавленный сервер https://freeipa1.dc1.my.local/ipa/ui/#/e/host/search
  10. Выполняем установку репликации LDAP-каталога
    sudo ipa-replica-install	
    
  11. Устанавливаем репликацию DNS зон
    sudo ipa-dns-install	
    
  12. Устанавливаем репликацию центра сертификации
    sudo ipa-ca-install	
    

Установка третьего slave сервера (сервер репликации)

  1. Как обычно сперва обновляем систему и добавляем репозиторий Epel
    sudo dnf install epel-release
    sudo dnf update
    
  2. Добавляем модуль Identity Management
    sudo dnf module enable idm:DL1
    sudo dnf distro-sync
    
  3. Задаём имя сервера с доменном который будем поднимать
    hostnamectl set-hostname freeipa2.dc2.my.local
    hostnamectl set-hostname freeipa2.dc2.my.local --static
    echo "192.168.0.4 freeipa2.dc2.my.local"  >>  /etc/hosts
    
  4. Устанавливаем freeIPA и bind (Будут выдаваться доменные имена серверам, вступившим в домен)
    sudo dnf install ipa-server ipa-server-dns
    
  5. Открываем порты на firewall
    sudo firewall-cmd --add-service={http,https,dns,ntp,freeipa-ldap,freeipa-ldaps}  --permanent
    sudo firewall-cmd --reload
    
  6. Прописываем DNS сервером наш freeipa2.dc1.my.local
  7. Выполняем ввод этого сервера в домен
    sudo ipa-client-install
    
  8. Отвечаем на вопросы
    `Provide the domain name of your IPA server (ex: example.com):` my.local
    `Provide your IPA server name (ex: ipa.example.com):` freeipa1.dc1.my.local
    `User authorized to enroll computers:` admin
    `Password for admin@MY.LOCAL:` password
    
  9. Если всё прошло то мы в веб консоли увидим добавленный сервер https://freeipa1.dc1.my.local/ipa/ui/#/e/host/search
  10. Выполняем установку репликации LDAP-каталога (тут мастером для него будет уже slave в dc1 - freeipa2.dc1.my.local)
    sudo ipa-replica-install	
    
  11. Устанавливаем репликацию DNS зон
    sudo ipa-dns-install	
    
  12. Устанавливаем репликацию центра сертификации
    sudo ipa-ca-install	
    
  13. Создаём группу с местоположением (DC2) для наших серверов https://freeipa1.dc1.my.local/ipa/ui/#/e/location/search
  14. Собственно добавляем эти 2 сервера в группу DC2
  15. Также не лишним будет для сервера freeipa2.dc2.my.local вторичный DNS установить freeipa1.dc2.my.local, а для freeipa1.dc2.my.local - freeipa2.dc2.my.local и аналогично для серверов DC1

Видео

click me