Розгортання FreeIPA на VPS для централізованого керування ідентифікацією
TL;DR
У цьому посібнику ми покроково налаштуємо FreeIPA на віртуальному приватному сервері (VPS) для створення централізованої системи керування ідентифікацією та доступом. FreeIPA об'єднує Kerberos, LDAP, DNS та Certificate Authority, надаючи єдину точку для автентифікації користувачів і машин, керування доступом та видачі сертифікатів у вашій інфраструктурі на базі Linux.
- Ви розгорнете FreeIPA 4.10 на Ubuntu Server 24.04 LTS.
- Налаштуєте базову інфраструктуру ідентифікації, включаючи DNS та Kerberos.
- Навчитеся керувати користувачами, групами та хостами через веб-інтерфейс та командний рядок.
- Забезпечите безпеку сервера за допомогою UFW та Fail2ban.
- Отримаєте рекомендації щодо резервного копіювання та обслуговування FreeIPA.
Що ми налаштовуємо і навіщо
FreeIPA (Identity, Policy and Audit) — це інтегроване рішення з відкритим вихідним кодом для централізованого керування ідентифікацією, політиками та аудитом у переважно Linux/Unix-середовищах. По суті, це потужний інструментарій, що об'єднує в собі кілька ключових компонентів: Kerberos для автентифікації, LDAP (389 Directory Server) для зберігання інформації про ідентифікацію, DNS для розв'язання імен та Certificate Authority (Dogtag) для керування сертифікатами.
Розгортаючи FreeIPA на VPS, ви створюєте єдину точку керування для всіх ваших серверів, робочих станцій та застосунків. Це означає, що користувачі можуть входити на різні машини за допомогою одних і тих самих облікових даних (Single Sign-On, SSO), а адміністратори отримують централізований контроль над доступом, групами та політиками безпеки. Замість того, щоб створювати локальних користувачів на кожній машині або вручну синхронізувати паролі, FreeIPA автоматизує цей процес, значно спрощуючи адміністрування та підвищуючи безпеку.
У підсумку читач отримає повністю функціонуючу систему FreeIPA, здатну керувати ідентифікацією для десятків і сотень систем. Ви зможете створювати користувачів, групи, призначати їм права доступу (наприклад, через HBAC — Host-Based Access Control), керувати DNS-записами для вашої інфраструктури та навіть видавати TLS-сертифікати для внутрішніх сервісів. Це ідеальне рішення для невеликих і середніх команд, яким потрібна потужна, але керована система IDM без витрат на пропрієтарні рішення або складність налаштування окремих компонентів.
Існують альтернативи FreeIPA. Найбільш відомі з них: OpenLDAP (як самостійний компонент), Microsoft Active Directory (для Windows-середовищ, але з можливістю інтеграції з Linux), а також хмарні рішення, такі як Okta, Auth0 або Azure AD. Вибір self-hosted рішення на VPS, такого як FreeIPA, зумовлений кількома факторами:
- Повний контроль: Ви повністю контролюєте дані, конфігурацію та безпеку вашої системи ідентифікації, що є критичним для деяких організацій.
- Економія: Відсутність щомісячних платежів за хмарні сервіси може значно знизити операційні витрати, особливо за наявності вже оплаченого VPS.
- Гнучкість: Можливість тонкого налаштування під конкретні потреби, інтеграція з локальними сервісами, які можуть не мати прямих конекторів до хмарних IDM.
- Конфіденційність: Дані залишаються на вашому сервері, що важливо для дотримання регуляторних вимог та політики конфіденційності.
Розгортання FreeIPA на VPS — це баланс між функціональністю корпоративного рівня та доступністю для індивідуальних розробників, стартапів або ентузіастів.
Який VPS-конфіг потрібен для цього завдання
Для розгортання FreeIPA, особливо в тестовому або невеликому виробничому середовищі, вимоги до ресурсів є відносно помірними. Однак, як і для будь-якої критично важливої інфраструктурної служби, рекомендується мати певний запас.
Мінімальні вимоги:
- CPU: 2 ядра. FreeIPA активно використовує процесор для обробки запитів Kerberos та LDAP, а також для операцій із сертифікатами.
- RAM: 4 ГБ. Це критичний параметр. LDAP-сервер та Kerberos-KDC можуть споживати значний обсяг пам'яті, особливо при високому навантаженні або великій кількості користувачів.
- Диск: 50 ГБ SSD. SSD значно прискорює роботу бази даних LDAP та інших компонентів. 50 ГБ достатньо для операційної системи, FreeIPA та невеликого обсягу логів. Для більших розгортань або тривалого зберігання логів знадобиться більше.
- Мережа: 100 Мбіт/с. Для більшості завдань цього достатньо, оскільки трафік FreeIPA зазвичай не дуже інтенсивний, якщо тільки ви не реплікуєте його між географічно віддаленими вузлами.
Рекомендований VPS-план для середнього використання (до 1000 користувачів/хостів):
- CPU: 4 ядра.
- RAM: 8 ГБ.
- Диск: 100-150 ГБ SSD.
- Мережа: 1 Гбіт/с.
Для цих характеристик можна розглянути VPS із зазначеними характеристиками. Важливо, щоб провайдер надавав можливість налаштування реверсних DNS-записів (PTR), оскільки це критично для коректної роботи Kerberos.
Коли потрібен dedicated, а не VPS:
Dedicated-сервер стає кращим для FreeIPA у таких випадках:
- Дуже велика кількість користувачів/хостів: Понад 5000-10000 об'єктів у каталозі.
- Висока інтенсивність запитів: Якщо FreeIPA використовується для автентифікації багатьох високонавантажених застосунків або сервісів.
- Вимоги до продуктивності I/O: При дуже активних операціях читання/запису в LDAP-каталог, коли продуктивність SSD на VPS може стати вузьким місцем.
- Специфічні вимоги безпеки або відповідності: Деякі регуляторні вимоги можуть диктувати використання фізично ізольованого обладнання.
- Необхідність апаратного забезпечення: Наприклад, для використання апаратних модулів безпеки (HSM) для захисту ключів CA.
У таких сценаріях відповідний dedicated сервер забезпечить необхідну продуктивність та ізоляцію.
Локація: на що впливає
- Затримка (Latency): Вибирайте локацію VPS, яка географічно близька до більшості ваших користувачів та клієнтів FreeIPA. Це мінімізує затримку при автентифікації та доступі до каталогу.
- Геополітика та законодавство: Залежно від чутливості даних та вимог до їх зберігання, юрисдикція, в якій знаходиться ваш VPS, може бути критичною. Враховуйте закони про захист даних (наприклад, GDPR).
- Мережева зв'язність: Деякі локації мають кращу зв'язність з певними регіонами світу, що може бути важливим для глобально розподілених команд.
Підготовка сервера
Перед встановленням FreeIPA необхідно виконати базове налаштування операційної системи. У цьому посібнику ми будемо використовувати Ubuntu Server 24.04 LTS, яка буде актуальною та підтримуваною у 2026 році. Переконайтеся, що у вас є доступ до сервера по SSH з правами root або користувача з sudo.
1. Оновлення системи
Насамперед оновіть усі пакети до останніх версій, щоб забезпечити стабільність та безпеку.
sudo apt update && sudo apt upgrade -y
Ця команда оновлює список доступних пакетів і потім встановлює всі доступні оновлення без запиту підтвердження.
2. Налаштування імені хоста та DNS
FreeIPA надзвичайно чутлива до правильного налаштування DNS та імені хоста. Використовуйте повне доменне ім'я (FQDN) для вашого сервера FreeIPA. Наприклад, ipa.example.com.
sudo hostnamectl set-hostname ipa.example.com
Встановіть ім'я хоста сервера. Замініть ipa.example.com на ваше реальне FQDN.
echo "127.0.0.1 ipa.example.com ipa localhost" | sudo tee -a /etc/hosts
echo "::1 ipa.example.com ipa localhost" | sudo tee -a /etc/hosts
Додайте запис про FQDN до файлу /etc/hosts. Це гарантує, що сервер зможе розв'язати своє власне ім'я.
Переконайтеся, що ваше FQDN розв'язується в публічну IP-адресу вашого VPS. Це необхідно налаштувати на вашому DNS-провайдері (наприклад, Cloudflare, Namecheap, GoDaddy). Створіть A-запис для ipa.example.com, що вказує на IP-адресу вашого VPS.
3. Створення користувача з sudo (якщо не root)
Для кращої безпеки рекомендується працювати не під root, а під звичайним користувачем з правами sudo.
sudo adduser username
sudo usermod -aG sudo username
Створіть нового користувача (замініть username) та додайте його до групи sudo.
Після цього вийдіть із сесії root та увійдіть під новим користувачем.
4. Налаштування SSH-ключів
Для підвищення безпеки SSH-доступу рекомендується використовувати автентифікацію за ключами замість пароля.
# На вашій локальній машині
ssh-keygen -t rsa -b 4096 -C "[email protected]"
ssh-copy-id username@your_vps_ip
На вашій локальній машині згенеруйте SSH-ключ (якщо його немає) та скопіюйте публічний ключ на VPS. Потім на VPS вимкніть автентифікацію за паролем.
sudo nano /etc/ssh/sshd_config
Знайдіть рядки:
#PasswordAuthentication yes
#PermitRootLogin yes
Змініть їх на:
PasswordAuthentication no
PermitRootLogin no
Перезапустіть SSH-сервіс:
sudo systemctl restart sshd
5. Налаштування брандмауера (UFW)
UFW (Uncomplicated Firewall) — це простий у використанні інтерфейс для iptables. FreeIPA вимагає відкриття кількох портів.
sudo apt install ufw -y
sudo ufw allow OpenSSH
sudo ufw allow http
sudo ufw allow https
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 389/tcp # LDAP
sudo ufw allow 636/tcp # LDAPS
sudo ufw allow 88/tcp # Kerberos (TCP)
sudo ufw allow 88/udp # Kerberos (UDP)
sudo ufw allow 464/tcp # Kerberos (TCP)
sudo ufw allow 464/udp # Kerberos (UDP)
sudo ufw allow 123/udp # NTP
sudo ufw allow 53/tcp # DNS (TCP)
sudo ufw allow 53/udp # DNS (UDP)
sudo ufw enable
sudo ufw status verbose
Встановіть UFW, дозвольте необхідні порти для SSH, HTTP/HTTPS, LDAP, Kerberos, NTP та DNS, потім активуйте брандмауер та перевірте його статус.
6. Встановлення Fail2ban
Fail2ban захищає сервер від атак методом підбору пароля, блокуючи IP-адреси, з яких надходять численні невдалі спроби входу.
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Встановіть Fail2ban та переконайтеся, що він запущений і запускатиметься при кожному завантаженні системи.
Тепер ваш сервер готовий до встановлення FreeIPA.
Встановлення ПЗ — покроково
У цьому розділі ми покроково встановимо FreeIPA 4.10 на Ubuntu Server 24.04 LTS. Процес включає встановлення пакетів, ініціалізацію сервера та базове налаштування DNS.
1. Встановлення пакетів FreeIPA
FreeIPA доступна у стандартних репозиторіях Ubuntu. Встановіть основний пакет ipa-server та його залежності.
sudo apt update
sudo apt install ipa-server -y
Ця команда оновить список пакетів та встановить FreeIPA сервер з усіма необхідними компонентами, такими як 389 Directory Server, BIND, Kerberos KDC та Dogtag CA.
2. Запуск скрипта встановлення FreeIPA
Після встановлення пакетів необхідно запустити скрипт ipa-server-install, який виконає ініціалізацію всіх компонентів FreeIPA. Цей скрипт є інтерактивним і поставить вам кілька запитань.
sudo ipa-server-install
Далі представлені типові відповіді на запитання скрипта:
Do you want to configure integrated DNS? [no]:Введітьyes. Інтегрований DNS спрощує керування та є рекомендованим способом для більшості розгортань FreeIPA.Server host name [ipa.example.com]:Підтвердьте FQDN вашого сервера. Натисніть Enter, якщо воно правильне.Please enter the name of the domain for which you want to configure FreeIPA. [example.com]:Введіть домен FreeIPA. Це домен, який використовуватиметься для Kerberos та LDAP. Наприклад,example.com.Please enter the name of the realm for which you want to configure FreeIPA. [EXAMPLE.COM]:Підтвердьте Kerberos Realm (зазвичай це ваш домен у верхньому регістрі). Натисніть Enter.The IPA server will be configured with:Перевірте запропоновані налаштування.Continue to configure the system with these values? [no]:Введітьyes.Directory Manager password:Введіть та підтвердьте пароль для користувача Directory Manager. Це дуже важливий пароль, використовуйте складний.IPA admin password:Введіть та підтвердьте пароль для користувачаadminFreeIPA. Це основний адміністративний користувач для керування FreeIPA. Також використовуйте складний пароль.
Процес встановлення займе деякий час (5-15 хвилин), оскільки FreeIPA налаштовує LDAP-сервер, Kerberos Key Distribution Center (KDC), Certificate Authority (CA) та DNS-сервер.
3. Перевірка статусу служб FreeIPA
Після завершення встановлення переконайтеся, що всі служби FreeIPA запущені коректно.
sudo ipactl status
Ця команда покаже статус усіх компонентів FreeIPA (Directory Server, KDC, NTP, DNS, Web UI, CA). Усі вони повинні бути у стані running.
4. Налаштування клієнтського середовища на сервері FreeIPA
Для того щоб користуватися командами FreeIPA та веб-інтерфейсом, необхідно налаштувати Kerberos-автентифікацію для користувача admin на самому сервері.
kinit admin
Введіть пароль адміністратора FreeIPA, який ви задали під час встановлення. Ця команда отримає Kerberos-квиток для користувача admin, дозволяючи йому взаємодіяти з FreeIPA.
ipa user-find admin
Перевірте, що команда ipa user-find admin успішно повертає інформацію про користувача admin. Це означає, що Kerberos-автентифікація працює.
5. Налаштування DNS-клієнта на сервері (опціонально, але рекомендується)
Хоча FreeIPA налаштувала свій власний DNS-сервер, переконайтеся, що ваш VPS використовує його для розв'язання імен. Це особливо важливо для клієнтів FreeIPA.
# Тимчасово встановіть DNS-сервер FreeIPA як основний
echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf
Ця команда встановить локальний DNS-сервер (який тепер обслуговує FreeIPA) як основний. У більш складних конфігураціях ви можете використовувати systemd-resolved або інші методи для постійного налаштування.
Перевірте розв'язання DNS:
dig ipa.example.com
dig example.com
Обидві команди повинні коректно розв'язувати ваші домени, використовуючи локальний DNS-сервер FreeIPA.
6. Доступ до веб-інтерфейсу
Тепер ви можете отримати доступ до веб-інтерфейсу FreeIPA, перейшовши за адресою https://ipa.example.com/ipa/ui/ у вашому браузері. При першому доступі ви зіткнетеся з попередженням про самопідписаний сертифікат. Це нормально, оскільки FreeIPA розгорнула свій власний Certificate Authority. Ви можете додати цей сертифікат до винятків браузера або імпортувати CA-сертифікат FreeIPA до довірених сховищ вашої операційної системи.
Увійдіть під користувачем admin з паролем, який ви встановили раніше.