Развёртывание контроллера домена на базе freeIPA

SRV-HQ:

  • Производим коммутацию в соответствии с L2 (указываем тег 10):

  • Результат:

  • Базовая настройка:
    • имя
    • адресация
hostnamectl set-hostname srv-hq.au.team; exec bash
sed -i "s/HOSTNAME=localhost/HOSTNAME=srv-hq.au.team/g" /etc/sysconfig/network
ИЛИ
sed -i "s/HOSTNAME=NONAME/HOSTNAME=srv-hq.au.team/g" /etc/sysconfig/network
Смотрим наименование интерфейса
ip a


echo "TYPE=eth" > /etc/net/ifaces/ens19/options
echo "10.1.1.10/27" > /etc/net/ifaces/ens19/ipv4address
echo "default via 10.1.1.1" > /etc/net/ifaces/ens19/ipv4route
echo "search au.team" > /etc/net/ifaces/ens19/resolv.conf
echo "nameserver 77.88.8.8" >> /etc/net/ifaces/ens19/resolv.conf
systemctl restart network
  • Проверить:
[root@srv-hq ~]# hostname -f 
srv-hq.au.team
[root@srv-hq ~]# ip -br -c -4 a
lo               UNKNOWN        127.0.0.1/8 
ens19            UP             10.1.1.10/27 
[root@srv-hq ~]# ip -c r
default via 10.1.1.1 dev ens19 
10.1.1.0/27 dev ens1 proto kernel scope link src 10.1.1.10 
[root@srv-hq ~]# cat /etc/resolv.conf
# Generated by resolvconf
# Do not edit manually, use
# /etc/net/ifaces/<interface>/resolv.conf instead.
search au.team
nameserver 77.88.8.8
[root@srv-hq ~]# ping -c3 ya.ru
PING ya.ru (77.88.44.242) 56(84) bytes of data.
64 bytes from ya.ru (77.88.44.242): icmp_seq=1 ttl=54 time=18.4 ms
64 bytes from ya.ru (77.88.44.242): icmp_seq=2 ttl=54 time=18.0 ms
64 bytes from ya.ru (77.88.44.242): icmp_seq=3 ttl=54 time=18.0 ms

--- ya.ru ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 18.021/18.149/18.385/0.167 ms
[root@srv-hq ~]# 
  • Для ускорения генерации криптографических ключей (особенно на виртуальных машинах) рекомендуется установить демон энтропии haveged:
apt-get update && apt-get install -y haveged
systemctl enable --now haveged
  • Установим пакет для FreeIPA с встроенным DNS-сервером:
apt-get install -y freeipa-server-dns
  • Оставляем в файле /etc/hosts только 1 запись:
echo "10.1.1.10 srv-hq.au.team srv-hq" > /etc/hosts
  •  Запустим развёртывание контроллера домена на базе FreeIPA с встроенным DNS-сервером:
ipa-server-install -U --hostname=$(hostname) \
-r AU.TEAM -n au.team -p P@ssw0rd -a P@ssw0rd \
--setup-dns --forwarder 77.88.8.8 --auto-reverse
ИЛИ
ipa-server-install
   Do you want to configure integrated DNS (BIND)? [no]: yes
   Server host name [srv-hq.au.team]: 
   Please confirm the domain name [au.team]:
   Please provide a realm name [AU.TEAM]:  
   Directory Manager password: P@ssw0rd
   Password (confirm): P@ssw0rd
   IPA admin password: P@ssw0rd (пароль для пользователя admin)
   Password (confirm): P@ssw0rd
   Do you want to configure DNS forwarders? [yes]: 
   Following DNS servers are configured in /etc/resolv.conf: 77.88.8.8
   Do you want to configure these servers as DNS forwarders? [yes]: yes
   Enter an IP address for a DNS forwarder, or press Enter to skip:
   Do you want to search for missing reverse zones? [yes]:
   Do you want to create reverse zone for IP 10.1.1.10 [yes]:
   Please specify the reverse zone name [1.1.10.in-addr.arpa.]:
   NetBIOS domain name [AU]:
   Do you want to configure CHRONY with NTP server or pool address? [no]:
   Continue to configure the system with these values? [no]: yes
  • Ожидаем окончания работы развёртывания, должен получится следующий результат:
==============================================================================
Setup complete

Next steps:
        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

        2. You can now obtain a kerberos ticket using the command: 'kinit admin'
           This ticket will allow you to use the IPA tools (e.g., ipa user-add)
           and the web user interface.

Be sure to back up the CA certificates stored in /root/cacert.p12
These files are required to create replicas. The password for these
files is the Directory Manager password
The ipa-server-install command was successful
  • Проверить статус подсистем:
[root@srv-hq ~]# ipactl status
Directory Service: RUNNING
krb5kdc Service: RUNNING
kadmin Service: RUNNING
named Service: RUNNING
httpd Service: RUNNING
ipa-custodia Service: RUNNING
pki-tomcatd Service: RUNNING
ipa-otpd Service: RUNNING
ipa-dnskeysyncd Service: RUNNING
ipa: INFO: The ipactl command was successful
  • При использование на других ВМ SRV-HQ в качестве DNS-сервера возникает проблема с преобразованием доменных имён выходящих за рамки доменной зоны au.team

echo "allow-query { any; };" >> /etc/bind/ipa-options-ext.conf
ipactl restart
  • Переходим на ADM-HQ. Результат преобразования имён:
[user@adm-hq ~]$ host srv-hq.au.team
[user@adm-hq ~]$ host 10.1.1.10
[user@adm-hq ~]$ host ya.ru
  • Возвращаемся на SRV-HQ. Создаём требуемую структуру групп и пользователей в домене предварительно получив билет Kerberos
kinit admin (P@ssw0rd)
klist
    • создаём группы
ipa group-add hq
ipa group-add br
ipa group-add cod
    • создаём пользователей
for i in {1..5}; do
echo "P@ssw0rd" | ipa user-add hq.user$i --first=hq --last=user$i --password --password-expiration 20271231120000Z
echo "P@ssw0rd" | ipa user-add br.user$i --first=br --last=user$i --password --password-expiration 20271231120000Z
echo "P@ssw0rd" | ipa user-add cod.user$i --first=cod --last=user$i --password --password-expiration 20271231120000Z
done
ИЛИ (это дольше, но скрипт помнить не надо). Пароль P@ssw0rd)
ipa user-add hq.user1 --first=hq --last user1 --password --password-expiration 20271231120000Z
ipa user-add hq.user2 --first=hq --last user2 --password --password-expiration 20271231120000Z
ipa user-add hq.user3 --first=hq --last user3 --password --password-expiration 20271231120000Z
ipa user-add hq.user4 --first=hq --last user4 --password --password-expiration 20271231120000Z
ipa user-add hq.user5 --first=hq --last user5 --password --password-expiration 20271231120000Z
далее аналогично для br и cod
ИЛИ потом можно через ВЕБ-интерфейс (но тоже дольше)
    • распределяем пользователей по группам
for i in {1..5}; do
ipa group-add-member hq --users=hq.user$i
ipa group-add-member br --users=br.user$i
ipa group-add-member cod --users=cod.user$i
done
ИЛИ
ipa group-add-member hq --users=hq.user1
ipa group-add-member hq --users=hq.user2
ipa group-add-member hq --users=hq.user3
ipa group-add-member hq --users=hq.user4
ipa group-add-member hq --users=hq.user5
далее аналогично для br и cod
ИЛИ потом можно через ВЕБ-интерфейс (но тоже дольше)