This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
решение_freeipa [2025/10/05 15:29] val [Корневой сертификат] |
решение_freeipa [2025/11/14 12:04] (current) val [Установка и инициализация клиента] |
||
|---|---|---|---|
| Line 2: | Line 2: | ||
| ===== Установка и инициализация ===== | ===== Установка и инициализация ===== | ||
| + | |||
| + | * Долго инициализируется, лучше добавить ресурсов (4Gb + 2CPU) | ||
| ==== На выделенный сервер ==== | ==== На выделенный сервер ==== | ||
| Line 17: | Line 19: | ||
| * [[https://tx0.ru/ru/notes/docker-compose/running-freeipa-through-traefik-reverse-proxy-using-docker-compose|Запуск FreeIPA с использованием Docker Compose]] | * [[https://tx0.ru/ru/notes/docker-compose/running-freeipa-through-traefik-reverse-proxy-using-docker-compose|Запуск FreeIPA с использованием Docker Compose]] | ||
| * [[https://medium.com/@farshadnick/how-to-set-up-freeipa-on-docker-12b3dc41acd6|How to set up FreeIPA on docker]] | * [[https://medium.com/@farshadnick/how-to-set-up-freeipa-on-docker-12b3dc41acd6|How to set up FreeIPA on docker]] | ||
| + | |||
| + | * [[Технология Docker#docker-compose]] | ||
| <code> | <code> | ||
| Line 63: | Line 67: | ||
| stdin_open: true | stdin_open: true | ||
| environment: | environment: | ||
| - | IPA_SERVER_HOSTNAME: server.corp13.un | + | IPA_SERVER_HOSTNAME: server.corpX.un |
| - | IPA_SERVER_IP: 192.168.13.10 | + | IPA_SERVER_IP: 192.168.X.10 |
| DNS: 172.16.1.254 | DNS: 172.16.1.254 | ||
| TZ: "Europe/Moscow" | TZ: "Europe/Moscow" | ||
| - | IPA_DOMAIN_NAME: corp13.un | + | IPA_DOMAIN_NAME: corpX.un |
| - | IPA_REALM_NAME: CORP13.UN | + | IPA_REALM_NAME: CORPX.UN |
| PASSWORD: strongpassword | PASSWORD: strongpassword | ||
| command: | command: | ||
| - | - --domain=corp13.un | + | - --domain=corpX.un |
| - | - --realm=CORP13.UN | + | - --realm=CORPX.UN |
| - --admin-password=strongpassword | - --admin-password=strongpassword | ||
| - --http-pin=strongpassword | - --http-pin=strongpassword | ||
| Line 93: | Line 97: | ||
| server:~/freeipa# docker-compose logs -f | server:~/freeipa# docker-compose logs -f | ||
| + | |||
| + | docker-compose logs -t | head -1 | ||
| + | |||
| + | docker-compose logs -t | tail -1 | ||
| + | |||
| + | Около 20 минут | ||
| </code> | </code> | ||
| * !!! не резолвит имя server (иногда :) и рекурсивные запросы из других сетей, помогает: | * !!! не резолвит имя server (иногда :) и рекурсивные запросы из других сетей, помогает: | ||
| Line 103: | Line 113: | ||
| server# docker exec -ti freeipa-server systemctl reload named | server# docker exec -ti freeipa-server systemctl reload named | ||
| - | server# host server.corp13.un 192.168.13.10 | + | server# host server.corpX.un 192.168.X.10 |
| - | gate# host ya.ru 192.168.13.10 | + | gate# host ya.ru 192.168.X.10 |
| </code> | </code> | ||
| Line 119: | Line 129: | ||
| <code> | <code> | ||
| # apt update && apt install freeipa-client | # apt update && apt install freeipa-client | ||
| + | 2 минуты | ||
| # #kinit admin | # #kinit admin | ||
| Line 124: | Line 135: | ||
| gate# ipa-client-install --mkhomedir | gate# ipa-client-install --mkhomedir | ||
| - | client1# hostnamectl hostname client1.corp13.un | + | client1# hostnamectl hostname client1.corpX.un |
| clientN:~# cat /etc/hosts | clientN:~# cat /etc/hosts | ||
| </code><code> | </code><code> | ||
| 127.0.0.1 localhost | 127.0.0.1 localhost | ||
| - | 127.0.1.1 client1.corp13.un clientN | + | 127.0.1.1 client1.corpX.un client1 |
| </code><code> | </code><code> | ||
| client1# ipa-client-install --mkhomedir --enable-dns-updates | client1# ipa-client-install --mkhomedir --enable-dns-updates | ||
| + | ...: no | ||
| + | ...: yes | ||
| + | ...: admin | ||
| + | ...: ..... | ||
| # systemctl status sssd | # systemctl status sssd | ||
| Line 143: | Line 158: | ||
| <code> | <code> | ||
| [root@server ~]# ipa user-add user1 --first="Иван" --last="Иванов" --password | [root@server ~]# ipa user-add user1 --first="Иван" --last="Иванов" --password | ||
| + | ... | ||
| + | Password: password1 | ||
| + | ... | ||
| [root@server ~]# #ipa passwd user1 | [root@server ~]# #ipa passwd user1 | ||
| Line 152: | Line 170: | ||
| <code> | <code> | ||
| - | # kinit admin | + | gate# kinit admin |
| - | [root@freeipa-server /]# ipa service-add HTTP/gate.corp13.un | + | gate# ipa service-add HTTP/gate.corpX.un |
| - | gate.corp13.un:~# ipa-getkeytab -p HTTP/gate.corp13.un -k /etc/krb5.keytab | + | gate# ipa-getkeytab -p HTTP/gate.corpX.un -k /etc/krb5.keytab |
| + | |||
| + | gate# klist -ek /etc/krb5.keytab | ||
| </code> | </code> | ||
| - | * [[Аутентификация доступа к SQUID#Копируем ключи в системный keytab]] | ||
| * [[Аутентификация доступа к SQUID#Настройка сервиса SQUID на использование GSSAPI]] | * [[Аутентификация доступа к SQUID#Настройка сервиса SQUID на использование GSSAPI]] | ||
| ===== Управление сертификатами ===== | ===== Управление сертификатами ===== | ||
| Line 187: | Line 206: | ||
| ==== Создание ключа и сертификата для gitlab на той же системе ==== | ==== Создание ключа и сертификата для gitlab на той же системе ==== | ||
| <code> | <code> | ||
| - | server.corp13.un:~# openssl genrsa -out /etc/gitlab/ssl/$(hostname).key 2048 | + | server.corpX.un:~# openssl genrsa -out /etc/gitlab/ssl/$(hostname).key 2048 |
| - | server.corp13.un:~# openssl req -new -key /etc/gitlab/ssl/$(hostname).key -subj '/CN=server.corp13.un/O=CORP13.UN' -addext 'subjectAltName=DNS:server.corp13.un' -out /opt/freeipa-data/server-gitlab.req | + | server.corpX.un:~# openssl req -new -key /etc/gitlab/ssl/$(hostname).key -subj '/CN=server.corpX.un/O=CORPX.UN' -addext 'subjectAltName=DNS:server.corpX.un' -out /opt/freeipa-data/server-gitlab.req |
| - | [root@freeipa-server /]# ipa cert-request /data/server-gitlab.req --principal=HTTP/server.corp13.un --certificate-out=/data/server-gitlab.crt | + | [root@freeipa-server /]# ipa cert-request /data/server-gitlab.req --principal=HTTP/server.corpX.un --certificate-out=/data/server-gitlab.crt |
| - | server.corp13.un:~# cp /opt/freeipa-data/server-gitlab.crt -v /etc/gitlab/ssl/$(hostname).crt | + | server.corpX.un:~# cp /opt/freeipa-data/server-gitlab.crt -v /etc/gitlab/ssl/$(hostname).crt |
| </code> | </code> | ||
| ==== Создание ключа и сертификата для стороннего сервиса ==== | ==== Создание ключа и сертификата для стороннего сервиса ==== | ||
| * [[https://itdraft.ru/2023/03/20/resheno-freeipa-pki-sozdaem-i-podpisyvaem-ssl-sertifikat/|FreeIPA PKI - Создаем и подписываем ssl сертификат]] | * [[https://itdraft.ru/2023/03/20/resheno-freeipa-pki-sozdaem-i-podpisyvaem-ssl-sertifikat/|FreeIPA PKI - Создаем и подписываем ssl сертификат]] | ||
| <code> | <code> | ||
| - | ipa dnsrecord-add corp13.un pywebd --a-rec="192.168.13.64" | + | [root@freeipa-server /]# |
| - | ipa host-add pywebd.corp13.un | + | |
| - | ipa service-add HTTP/pywebd.corp13.un | + | |
| - | openssl genrsa -out /data/pywebd.key 2048 | + | ipa dnsrecord-add corpX.un keycloak --a-rec="192.168.X.64" |
| - | openssl req -new -key /data/pywebd.key -subj '/CN=pywebd.corp13.un/O=CORP13.UN' -addext 'subjectAltName=DNS:pywebd.corp13.un' -out /data/pywebd.req | + | ipa host-add keycloak.corpX.un |
| - | ipa cert-request /data/pywebd.req --principal=HTTP/pywebd.corp13.un --certificate-out=/data/pywebd.crt | + | ipa service-add HTTP/keycloak.corpX.un |
| - | ipa dnsrecord-add corp13.un gowebd --a-rec="192.168.13.64" | + | openssl genrsa -out /data/keycloak.key 2048 |
| - | ipa host-add gowebd.corp13.un | + | openssl req -new -key /data/keycloak.key -subj '/CN=keycloak.corpX.un/O=CORPX.UN' -addext 'subjectAltName=DNS:keycloak.corpX.un' -out /data/keycloak.req |
| - | ipa service-add HTTP/gowebd.corp13.un | + | ipa cert-request /data/keycloak.req --principal=HTTP/keycloak.corpX.un --certificate-out=/data/keycloak.crt |
| - | openssl genrsa -out /data/gowebd.key 2048 | + | server# scp /opt/freeipa-data/keycloak.* kube1:/tmp/ |
| - | openssl req -new -key /data/gowebd.key -subj '/CN=gowebd.corp13.un/O=CORP13.UN' -addext 'subjectAltName=DNS:gowebd.corp13.un' -out /data/gowebd.req | + | |
| - | ipa cert-request /data/gowebd.req --principal=HTTP/gowebd.corp13.un --certificate-out=/data/gowebd.crt | + | |
| </code> | </code> | ||
| ===== Управление DNS ===== | ===== Управление DNS ===== | ||
| <code> | <code> | ||
| - | ipa dnsrecord-add corp13.un kube1 --a-rec="192.168.13.221" | + | [root@freeipa-server /]# kinit admin |
| - | ipa dnsrecord-add corp13.un kube2 --a-rec="192.168.13.222" | + | </code><code> |
| - | ipa dnsrecord-add corp13.un kube3 --a-rec="192.168.13.223" | + | ipa dnsrecord-add corpX.un kube1 --a-rec="192.168.X.221" |
| - | ipa dnsrecord-add corp13.un kube4 --a-rec="192.168.13.224" | + | ipa dnsrecord-add corpX.un kube2 --a-rec="192.168.X.222" |
| + | ipa dnsrecord-add corpX.un kube3 --a-rec="192.168.X.223" | ||
| + | ipa dnsrecord-add corpX.un kube4 --a-rec="192.168.X.224" | ||
| </code> | </code> | ||
| ===== Работа с LDAP ===== | ===== Работа с LDAP ===== | ||
| - | <code> | + | |
| - | [root@server ~]# ldapsearch -x -b"dc=corp13,dc=un" -H ldap://server "uid=admin" | + | * [[Авторизация с использованием LDAP сервера]] |
| - | </code> | + | |
| ===== Дополнительные материалы ==== | ===== Дополнительные материалы ==== | ||
| Line 230: | Line 246: | ||
| ==== Попытка запуска в привилегированном режиме ==== | ==== Попытка запуска в привилегированном режиме ==== | ||
| <code> | <code> | ||
| - | server.corp13.un:~/freeipa# cat docker-compose.yml | + | server.corpX.un:~/freeipa# cat docker-compose.yml |
| services: | services: | ||
| freeipa: | freeipa: | ||
| Line 239: | Line 255: | ||
| hostname: server | hostname: server | ||
| # hostname: freeipa-server | # hostname: freeipa-server | ||
| - | # domainname: server.corp13.un | + | # domainname: server.corpX.un |
| container_name: freeipa-server | container_name: freeipa-server | ||
| network_mode: host | network_mode: host | ||
| Line 246: | Line 262: | ||
| dns: | dns: | ||
| # - 172.16.1.254 | # - 172.16.1.254 | ||
| - | - 192.168.13.10 | + | - 192.168.X.10 |
| restart: unless-stopped | restart: unless-stopped | ||
| tty: true | tty: true | ||
| stdin_open: true | stdin_open: true | ||
| environment: | environment: | ||
| - | IPA_SERVER_HOSTNAME: server.corp13.un | + | IPA_SERVER_HOSTNAME: server.corpX.un |
| - | IPA_SERVER_IP: 192.168.13.10 | + | IPA_SERVER_IP: 192.168.X.10 |
| # DNS: 172.16.1.254 | # DNS: 172.16.1.254 | ||
| - | DNS: 192.168.13.10 | + | DNS: 192.168.X.10 |
| TZ: "Europe/Moscow" | TZ: "Europe/Moscow" | ||
| - | IPA_DOMAIN_NAME: corp13.un | + | IPA_DOMAIN_NAME: corpX.un |
| - | IPA_REALM_NAME: CORP13.UN | + | IPA_REALM_NAME: CORPX.UN |
| PASSWORD: strongpassword | PASSWORD: strongpassword | ||
| command: | command: | ||
| - -U | - -U | ||
| - | - --domain=corp13.un | + | - --domain=corpX.un |
| - | - --realm=CORP13.UN | + | - --realm=CORPX.UN |
| - --admin-password=strongpassword | - --admin-password=strongpassword | ||
| - --http-pin=strongpassword | - --http-pin=strongpassword | ||
| Line 290: | Line 306: | ||
| - | server.corp13.un:~/freeipa# cat /opt/freeipa-data/var/log/ipaclient-install.log | + | server.corpX.un:~/freeipa# cat /opt/freeipa-data/var/log/ipaclient-install.log |
| ... | ... | ||
| 2025-09-29T05:28:56Z DEBUG The ipa-client-install command failed, exception: KerberosError: No valid Negotiate header in server response | 2025-09-29T05:28:56Z DEBUG The ipa-client-install command failed, exception: KerberosError: No valid Negotiate header in server response | ||