FreeIPA debian установка/интеграция примеры

Thank you for reading this post, don't forget to subscribe! 
  1. install freeipa debian
  2. install freeipa centos
  3. add hosts
  4. sudo command
  5. HA freeipa and DNS servers

Сер­вер FreeIPA состо­ит из сле­ду­ю­щих проектов:

  • 389 Directory Server – Основ­ное хра­ни­ли­ще дан­ных и обес­пе­чи­ва­ет пол­ную мно­го­ма­стер­ную инфра­струк­ту­ру ката­ло­гов LDAPv3.
  • MIT Kerberos KDC – Обес­пе­чи­ва­ет аутен­ти­фи­ка­цию с еди­ным входом.
  • Dogtag Certificate System – предо­став­ля­ет CA и RA для функ­ций управ­ле­ния сертификатами.
  • ISC Bind DNS сер­вер – для управ­ле­ния домен­ны­ми именами.
  • Web UI / ipa Command Line tool – Исполь­зу­ет­ся для цен­тра­ли­зо­ван­но­го управ­ле­ния кон­тро­лем досту­па, деле­ги­ро­ва­ния адми­ни­стра­тив­ных задач и дру­гих задач сете­во­го администрирования.
  • NTP-сер­вер – для син­хро­ни­за­ции вре­ме­ни с локаль­ны­ми сер­ве­ра­ми времени.

НА DEBIAN ставим так:

ста­вим docker

apt-get install ca-certificates curl gnupg -y

mkdir /etc/apt/keyrings/

curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg

chmod a+r /etc/apt/keyrings/docker.gpg

apt-get update

apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

systemctl enable docker
systemctl start docker

git clone https://github.com/freeipa/freeipa-container.git

cd freeipa-container/
docker build -t freeipa:latest -f Dockerfile.fedora-39 .

тут
/tmp/test/freeipa-container/data  - дирек­то­рия в кото­рой хра­нят­ся данные
-e PASSWORD=Secret123 - пароль с кото­рым мож­но будет зай­ти во freeipa  логин будет admin

нуж­но будет отве­тить на сле­ду­ю­щие вопросы:

Do you want to configure integrated DNS (BIND)? [no]: Sun May  5 13:41:51 UTC 2024 /usr/sbin/ipa-server-configure-first        yes
Server host name [ipa1.example.test]:     enter
Please confirm the domain name [example.test]:   enter
Please provide a realm name [EXAMPLE.TEST]:  enter
Do you want to configure DNS forwarders? [yes]:  enter
Do you want to configure these servers as DNS forwarders? [yes]: enter
Enter an IP address for a DNS forwarder, or press Enter to skip: enter
Do you want to search for missing reverse zones? [yes]: enter
NetBIOS domain name [EXAMPLE]: enter
Do you want to configure chrony with NTP server or pool address? [no]: yes
Enter NTP source server addresses separated by comma, or press Enter to skip: 192.168.1.107
Enter a NTP source pool address, or press Enter to skip: enter
Continue to configure the system with these values? [no]: yes

 

как уста­нов­ка прой­дёт из дру­гой кон­со­ли сто­па­рим и запускаем:
docker stop freeipa1
docker start freeipa1

 

НА CENTOS7 ставим так:

yum -y install epel-release
yum  install bind-utils vim -y
yum -y install ipa-server
yum -y install ipa-server-dns bindipa-server  bind-dyndb-ldap

cat /etc/hosts
192.168.1.170 ipa-server.test.local

hostnamectl set-hostname ipa-server.test.local

reboot

настра­и­вать будем с под­держ­кой DNS

ipa-server-install --setup-dns

после этой коман­ды нуж­но будет отве­тить на несколь­ко вопросов:

Server host name [ipa-server.test.local]:  жмём enter
Please confirm the domain name [test.local]: жмём enter
Please provide a realm name [TEST.LOCAL]: жмём enter
Directory Manager password: пароль мини­мум 8
Password (confirm): под­твер­жда­ем пароль
IPA admin password: пароль мини­мум 8
Password (confirm): под­твер­жда­ем пароль
Do you want to configure DNS forwarders? [yes]: жмём enter
Do you want to configure these servers as DNS forwarders? [yes]: жмём enter
Do you want to search for missing reverse zones? [yes]: жмём enter
Do you want to create reverse zone for IP 192.168.1.170 [yes]: жмём enter
Please specify the reverse zone name [1.168.192.in-addr.arpa.]: жмём enter
Continue to configure the system with these values? [no]: yes  печа­та­ем yes и жмём enter

ждём пока всё поставится

захо­дим по адресу:

https://ipa-server.test.local

вво­дим логин admin и пароль 8 зна­ков кото­рый зада­ва­ли при уста­нов­ке. у меня это 123456789

созда­дим груп­пу для пользователей:

созда­дим поль­зо­ва­те­лей и доба­вим их к нашей группе

сра­зу созда­дим вто­рую тесто­вую груп­пу и вто­ро­го пользователя

 

доба­вим теперь груп­пы узлов.

 

Добавим узлы

 

добав­ля­ем в репку:

/etc/apt/sources.list

ста­вим клиента

apt-get update
apt-get install freeipa-client -y

hostnamectl set-hostname server1.test.local

cat /etc/hosts
192.168.1.170 ipa-server.test.local
192.168.1.171 server1.test.local

reboot

 

ipa-client-install --hostname=`hostname -f` \
--mkhomedir \
--server=ipa-server.test.local \
--domain test.local \
--realm TEST.LOCAL

Proceed with fixed values and no DNS discovery? [no]: yes
Do you want to configure chrony with NTP server or pool address? [no]: жмём enter
Continue to configure the system with these values? [no]: yes
User authorized to enroll computers: admin
Password for admin@TEST.LOCAL:  тут вво­дим пароль от это­го поль­зо­ва­те­ля, в моём слу­чае 123456789

Про­ве­ря­ем узлы

доба­вим узел 1 к  1 груп­пе узлов  а узел 2 ко 2ой груп­пе узлов

и вто­рой узел/группа

что­бы это объединить
создадим
Netgroups

захо­дим и редактируем:

резуль­тат такой:

Команды под sudo

созда­дим ещё SUDO, чтоб была воз­мож­ность давать руто­вые доступы

созда­ём саму команду:

ука­зы­ва­ем пол­ный путь до неё

теперь созда­ём правило

в Sudo Option  добав­ля­ем пара­метр "!authenticate" что­бы не нуж­но было вво­дить пароль.
в Who добав­ля­ем груп­пу поль­зо­ва­те­лей кото­рой мож­но будет выпол­нять эти команды
в Access this host ука­зы­ва­ем груп­пу сер­ве­ров на кото­рых мож­но будет выпол­нять это sudo
в Run Commands ука­зы­ва­ем коман­ды кото­рые мы созда­ва­ли ранее в нашем слу­чае это mkdir

на сер­ве­рах не забы­ва­ем поста­вить sudo

apt-get install sudo -y

про­ве­ря­ем поль­зо­ва­тель­скую груп­пу test_group

смот­рим что за поль­зо­ва­тель есть

смот­рим netgroup в кото­рой ассо­ци­и­ро­ва­ны груп­пы поль­зо­ва­те­лей и груп­пы узлов

и смот­рим что есть по коман­дам sudo точ­нее по ролям в кото­рых может быть мно­го команд:

под­клю­чим­ся и про­ве­рим работу

на кли­ен­те с кото­ро­го под­клю­ча­юсь добав­ля­ем в хосты:

cat /etc/hosts
192.168.1.170 ipa-server.test.local
192.168.1.171 server1.test.local
192.168.1.172 server2.test.local

конек­тим­ся:

ssh user1@server1.test.local

вво­дим пароль кото­рый сра­зу истёк­ший и его нуж­но поменять:

про­ве­ря­ем sudo

т.е. создать дирек­то­рию в /etc/ у поль­зо­ва­те­ля нет но через sudo есть
дирек­то­рия созда­ёт­ся под поль­зо­ва­те­лем root
уда­лить её я тоже не могу пото­му что поль­зо­ва­те­лю не раз­ре­ше­на дан­ная команда.

 

Отказоустойчивость freeipa, dns servers

Установка Freeipa

У меня 2 сер­ве­ра с параметрами
2 ядра 4 гб опе­ра­тив­ки - это­го хва­та­ет на про­цесс уста­нов­ки - мень­ше опе­ра­тив­ки я бы не ста­вил так как может прий­ти OOMkill после того как вся уста­нов­ка прой­дёт мож­но и пони­зить ресур­сы до 1 ядра и 2гб оперативки

Уста­нав­ли­ва­ем имя:

[root@ansible ansible]# ssh 192.168.1.100
root@freeipa-1:~# hostnamectl set-hostname freeipa-1.test.local

1.1. Вари­ант уста­нов­ки на debian:

git clone https://github.com/freeipa/freeipa-container.git

cd freeipa-container/
root@freeipa-1:~/freeipa-container# mkdir -p /opt/freeipa

docker build -t freeipa:latest -f Dockerfile.fedora-39 .

запус­ка­ем сер­вер 1

-h freeipa-1.test.local - зада­ём хостнейм
-v /opt/freeipa:/data - зада­ём дирек­то­рию где всё будет храниться
-e PASSWORD=Secret123 - зада­ём пароль с кото­рым будем подключаться

далее отве­ча­ем на вопросы:

Do you want to configure integrated DNS (BIND)? [no]: yes
Server host name [freeipa-1.test.local]: ENTER
Please confirm the domain name [test.local]: ENTER
Please provide a realm name [TEST.LOCAL]: ENTER
Do you want to configure DNS forwarders? [yes]: yes
Do you want to configure these servers as DNS forwarders? [yes]: ENTER
Enter an IP address for a DNS forwarder, or press Enter to skip: ENTER
Do you want to search for missing reverse zones? [yes]: ENTER
Do you want to create reverse zone for IP 192.168.1.100 [yes]: ENTER
Please specify the reverse zone name [1.168.192.in-addr.arpa.]: ENTER
NetBIOS domain name [TEST]: ENTER
Do you want to configure chrony with NTP server or pool address? [no]: ENTER
Continue to configure the system with these values? [no]: yes

 

1.2. Вариант установки на centos:

чтоб инста­ля­ция про­шла успеш­но нуж­но 2 CPU и 4 memory

ssh 192.168.1.100

[root@centos ~]# hostnamectl set-hostname freeipa-1.test.local

[root@centos ~]# cat >> /etc/hosts
192.168.1.100 freeipa-1.test.local
192.168.1.101 freeipa-2.test.local

[root@centos ~]# yum install ipa-server ipa-server-dns -y
[root@centos ~]# ipa-server-install

Do you want to configure integrated DNS (BIND)? [no]: yes
Server host name [freeipa-1.test.local]: ENTER
Please confirm the domain name [test.local]: ENTER
Please provide a realm name [TEST.LOCAL]: ENTER
Directory Manager password:  Secret123
Password (confirm): Secret123
IPA admin password: Secret123
Password (confirm): Secret123
Do you want to configure DNS forwarders? [yes]: ENTER
Following DNS servers are configured in /etc/resolv.conf: 8.8.8.8
Do you want to configure these servers as DNS forwarders? [yes]: ENTER
Enter an IP address for a DNS forwarder, or press Enter to skip: ENTER
Do you want to search for missing reverse zones? [yes]: ENTER
Do you want to create reverse zone for IP 192.168.1.100 [yes]: ENTER
Please specify the reverse zone name [1.168.192.in-addr.arpa.]: ENTER
Continue to configure the system with these values? [no]: yes 

 

идём на вто­рой сервер

ssh 192.168.1.101

[root@centos ~]# hostnamectl set-hostname freeipa-2.test.local

[root@centos ~]# cat >> /etc/hosts
192.168.1.100 freeipa-1.test.local
192.168.1.101 freeipa-2.test.local

[root@freeipa-2 ~]# yum install ipa-server ipa-server-dns -y

[root@freeipa-2 ~]# ipa-client-install --mkhomedir --domain=test.local --realm=TEST.LOCAL --server=freeipa-1.test.local

Если в нашей сети все­го один FreeIPA, систе­ма пре­ду­пре­дит, что авто­об­на­ру­же­ние сер­ве­ров для ава­рий­но­го пере­клю­че­ния не может рабо­тать. Согла­ша­ем­ся и отве­ча­ем yes:

Систе­ма отоб­ра­зить настрой­ки LDAP в кон­со­ли, например:


Если эти настрой­ки вер­ны, отве­ча­ем поло­жи­тель­но на запрос Continue to configure the system with these values?

Continue to configure the system with these values? [no]: yes

Систе­ма спро­сит, от како­го поль­зо­ва­те­ля про­из­во­дить настрой­ку — вво­дим admin:

User authorized to enroll computers: admin

… и пароль:

Password for admin@TEST.LOCAL: Secret123

если видим:

то всё ок

про­ве­ря­ем:

[root@freeipa-2 ~]# kinit admin
Password for admin@TEST.LOCALSecret123
[root@freeipa-2 ~]# klist
Ticket cache: KEYRING:persistent:0:0
Default principal: admin@TEST.LOCAL

Valid starting Expires Service principal
05/18/2024 12:41:44 05/19/2024 12:41:39 krbtgt/TEST.LOCAL@TEST.LOCAL

Уда­ля­ем полу­чен­ный билет:

[root@freeipa-2 ~]# kdestroy

 

Пере­хо­дим на пер­вый сервер:

[root@freeipa-1 ~]# kinit admin
Password for admin@TEST.LOCAL:
[root@freeipa-1 ~]# ipa hostgroup-add-member ipaservers --hosts freeipa-2.test.local

Настройка репликации

добав­ля­ем PTR

[root@freeipa-2 ~]# ipa-replica-install --setup-dns --no-forwarders

про­ве­ря­ем рабо­ту доба­вим запись

dig test123.test.local @freeipa-1.test.local
dig test123.test.local @freeipa-2.test.local

резуль­тат ниже:

 

Установка ipa-ca

[root@freeipa-1 ~]# ipa-ca-install
CA is already installed on this host.

[root@freeipa-2 ~]# ipa-ca-install
Directory Manager (existing master) password: Secret123

 

Про­ве­ря­ем состо­я­ние рабо­ты контроллеров.

Для это­го есть ути­ли­та ipa-healthcheck. Ста­вим ее командой:

[root@freeipa-1 ~]# cat /etc/yum.repos.d/freeipa.repo
[root@freeipa-2 ~]# cat /etc/yum.repos.d/freeipa.repo

[root@freeipa-1 ~]# yum install freeipa-healthcheck -y
[root@freeipa-2 ~]# yum install freeipa-healthcheck -y

Для обще­го ана­ли­за вводим:


Для про­вер­ки репликации:

 

а вот на вто­ром сер­ве­ре есть проблемки:

проверяем:

При­чи­на: дан­ное пре­ду­пре­жде­ние нам гово­рит о том, что на вто­рич­ном сер­ве­ре не задан диа­па­зон DNA, кото­рый опре­де­ля­ет началь­ный и конеч­ный иден­ти­фи­ка­то­ры созда­ва­е­мых объ­ек­тов (UIDs). Таким обра­зом, вто­рич­ный сер­вер не смо­жет исполь­зо­вать­ся для созда­ния новых объектов.

Выпол­ня­ем команду:

ipa-replica-manage dnarange-show

Посмот­реть началь­ное зна­че­ние и мак­си­маль­ное для коли­че­ства иден­ти­фи­ка­то­ром мож­но командой:

ipa idrange-find

раз­би­ва­ем:

про­ве­ря­ем:

как видим всё ок.

Смена диапазона идентификаторов

Выше мы уже гово­ри­ли про диа­па­зо­ны иден­ти­фи­ка­то­ров, кото­рые задей­ству­ют­ся при созда­нии объ­ек­тов. По умол­ча­нию, созда­ет­ся диа­па­зон с боль­ши­ми зна­че­ни­я­ми. На прак­ти­ке, могут встре­тить­ся при­ло­же­ния, кото­рые не смо­гут рабо­тать с учет­ны­ми запи­ся­ми, име­ю­щи­ми дан­ные боль­шие значения.

Сме­нить настрой­ки диа­па­зо­на нель­зя — систе­ма выдаст ошиб­ку. Но мы можем создать новый диа­па­зон и исполь­зо­вать его.

Созда­ем диапазон:

ipa idrange-add "New Range" --base-id=50000 --range-size=20000

* в дан­ном при­ме­ре мы созда­ем диа­па­зон с назва­ни­ем New Range, пер­вый иден­ти­фи­ка­тор равен 50000, все­го иден­ти­фи­ка­то­ров 20000.

Теперь мы можем назна­чить зна­че­ния из ново­го диа­па­зо­на для наших серверов:

ipa-replica-manage dnarange-set freeipa-1.test.local 50000-59999
ipa-replica-manage dnarange-set freeipa-1.test.local 60000-69999