Гид по технологиям

OpenLDAP на Rocky Linux 9 — установка и настройка

• 10 min read • Linux • Обновлено 18 Nov 2025
OpenLDAP на Rocky Linux 9 — установка и настройка
OpenLDAP на Rocky Linux 9 — установка и настройка

В этой статье пошагово показано, как установить OpenLDAP на Rocky Linux 9, настроить базовый домен и пользователей, включить защищённый LDAPS (SSL/TLS) и подключить клиент через SSSD. Приведены рекомендации по безопасности, проверке, резервному копированию и отладке.

Важно: пример использует домен dc=hwdomain,dc=lan и хосты ldap (192.168.5.25) и client (192.168.5.80). Замените значения на ваши.

Оглавление

  • Введение и краткие определения
  • Требования
  • Подготовка FQDN и /etc/hosts
  • Установка OpenLDAP на Rocky Linux 9
  • Настройка firewalld
  • Базовая конфигурация OpenLDAP (пароль root, схемы)
  • Настройка базового домена и OU
  • Добавление пользователя
  • Включение TLS/LDAPS
  • Подключение клиента через OpenLDAP-клиент и SSSD
  • Проверка входа под LDAP-пользователем
  • Резервное копирование и восстановление
  • Безопасность и hardening
  • Репликация и масштабирование (обзор)
  • Сценарии отказов и отладка
  • Чек-листы для ролей
  • Критерии приёмки
  • Глоссарий, рекомендации и вывод

Введение и краткие определения

LDAP — Lightweight Directory Access Protocol, протокол для организации централизованного хранилища атрибутов (пользователей, групп, политик). OpenLDAP — открытая реализация LDAP-сервера. Небольшие определения:

  • SLAPD: демон OpenLDAP, основной сервер LDAP.
  • LDIF: формат для импорта/экспорта записей LDAP.
  • SSSD: System Security Services Daemon — локальный агент для интеграции NSS/PAM с LDAP/AD.

Требования

Минимальные требования для примера в статье:

  • Сервер Rocky Linux 9 с минимум 4 ГБ ОЗУ и 2 CPU (имя ldap, IP 192.168.5.25).
  • Клиент Rocky Linux 9 (имя client, IP 192.168.5.80).
  • Непривилегированный пользователь с sudo или доступ root.
  • SELinux в режиме permissive (если вы используете строгий режим, потребуется донастройка контекстов).

Список серверов в примере:

Hostname    IP Address    Used as
-----------------------------------------
ldap        192.168.5.25  OpenLDAP Server
client      192.168.5.80  OpenLDAP Client

Изображение ниже иллюстрирует конфигурацию имен и хостов в примере.

Схема: имена хостов и адреса в примере

Подготовка FQDN и /etc/hosts

Перед установкой LDAP важно, чтобы у сервера был корректный FQDN и запись в /etc/hosts (или DNS) указывала на правильный IP.

Установите FQDN командой:

sudo hostnamectl set-hostname ldap.hwdomain.lan

Откройте /etc/hosts и добавьте соответствующую строку:

sudo nano /etc/hosts

Добавьте (замените значения на ваши):

# ip - fqdn - hostname
192.168.5.25 ldap.hwdomain.lan ldap

Проверьте FQDN и доступность:

sudo hostname -f
ping -c3 ldap.hwdomain.lan

Проверка FQDN и /etc/hosts на сервере LDAP

Совет: в реальной среде лучше настраивать DNS, а не полагаться на /etc/hosts.

Установка OpenLDAP Server

Репозитории Rocky Linux: пакеты OpenLDAP находятся в репозитории “plus”, который может быть отключён по умолчанию. Включите его и установите пакеты:

sudo dnf config-manager --set-enabled plus
sudo dnf repolist
sudo dnf install openldap-servers openldap-clients

После установки запустите и включите сервис slapd:

sudo systemctl start slapd
sudo systemctl enable slapd
sudo systemctl status slapd

Проверка: статус должен быть active (running) и enabled.

Включение репозитория plus и установка OpenLDAP

Установка пакетов openldap-servers/openldap-clients

Настройка firewalld

Откройте порты LDAP (389) и LDAPS (636) на внешнем фаерволе службы firewalld:

sudo firewall-cmd --add-service={ldap,ldaps} --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

В разделе services должны появиться ldap и ldaps.

Настройка firewalld для LDAP и LDAPS

Базовая конфигурация OpenLDAP: пароль root и схемы

OpenLDAP хранит конфигурацию в cn=config и работает через интерфейс ldapi:///. Для изменения конфигурации часто используют sasl/EXTERNAL.

Создаём хеш пароля для администратора (olcRootPW):

slappasswd

Скопируйте сгенерированный хеш (пример: {SSHA}Uf13… ). Создайте LDIF-файл changerootpass.ldif:

nano changerootpass.ldif

Вставьте (замените olcRootPW на ваш хеш):

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}Uf13AbVHOcs/aDWJOvDxxfBSl3omExG2

Примените изменения:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f changerootpass.ldif

Импортируйте стандартные схемы (cosine, nis, inetorgperson):

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

Перезапустите slapd:

sudo systemctl restart slapd

Установка и импорт базовых схем

Пояснение: схемы определяют доступные атрибуты и objectClass для объектов в дереве LDAP.

Настройка базового домена (Base DN)

Создайте LDIF setdomain.ldif, где указываете sufix (olcSuffix) и olcRootDN (админ DN для БД mdb):

nano setdomain.ldif

Пример содержимого (замените dc=hwdomain,dc=lan и хеш пароля):

# setdomain.ldif

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=Manager,dc=hwdomain,dc=lan" read by * none

dn: olcDatabase={2}mdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=hwdomain,dc=lan

dn: olcDatabase={2}mdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=hwdomain,dc=lan

dn: olcDatabase={2}mdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}Uf13AbVHOcs/aDWJOvDxxfBSl3omExG2

dn: olcDatabase={2}mdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=Manager,dc=hwdomain,dc=lan" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=hwdomain,dc=lan" write by * read

Примените:

sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f setdomain.ldif

Проверьте namingContexts:

sudo ldapsearch -H ldap:// -x -s base -b "" -LLL "namingContexts"

Вы должны увидеть базовый DN, например dc=hwdomain,dc=lan.

Проверка базового домена

Создание организационных единиц (OU) — People и Group

Создайте addou.ldif:

nano addou.ldif

Пример содержимого (замените dc и название организации):

# addou.ldif

dn: dc=hwdomain,dc=lan
objectClass: top
objectClass: dcObject
objectclass: organization
o: My hwdomain Organisation
dc: hwdomain

dn: cn=Manager,dc=hwdomain,dc=lan
objectClass: organizationalRole
cn: Manager
description: OpenLDAP Manager

dn: ou=People,dc=hwdomain,dc=lan
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=hwdomain,dc=lan
objectClass: organizationalUnit
ou: Group

Добавьте записи в LDAP:

sudo ldapadd -x -D cn=Manager,dc=hwdomain,dc=lan -W -f addou.ldif

Проверьте:

sudo ldapsearch -x -b "dc=hwdomain,dc=lan" ou

Добавление OU People и Group

Добавление пользователя в LDAP

Шаги:

  1. Сгенерировать хеш пароля slappasswd.
  2. Создать LDIF с записью пользователя.
  3. Выполнить ldapadd.

Пример файла adduser.ldif для пользователя rocky:

nano adduser.ldif
# adduser.ldif

dn: uid=rocky,ou=People,dc=hwdomain,dc=lan
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: rocky
sn: temp
userPassword: {SSHA}cDG5NuQd+rYn6rWh1r5UnysUOwJlt1uk
loginShell: /bin/bash
uidNumber: 2000
gidNumber: 2000
homeDirectory: /home/rocky
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0

dn: cn=rocky,ou=Group,dc=hwdomain,dc=lan
objectClass: posixGroup
cn: rocky
gidNumber: 2000
memberUid: rocky

Добавление пользователя:

sudo ldapadd -x -D cn=Manager,dc=hwdomain,dc=lan -W -f adduser.ldif

Проверка:

sudo ldapsearch -x -b "ou=People,dc=hwdomain,dc=lan"

Проверка добавленного пользователя rocky

Замечание: uidNumber/gidNumber должны быть уникальны среди всех пользователей/групп.

Включение TLS/LDAPS (Self-signed пример)

Для защиты передачи данных используйте TLS. В производстве лучше подписанный сертификат CA. Для тестового примера сгенерируем self-signed сертификат:

sudo openssl req -x509 -nodes -days 365 \
  -newkey rsa:2048 \
  -keyout /etc/pki/tls/ldapserver.key \
  -out /etc/pki/tls/ldapserver.crt

Измените владельца файлов на ldap:ldap, чтобы slapd мог читать их:

sudo chown ldap:ldap /etc/pki/tls/{ldapserver.crt,ldapserver.key}

Создайте tls.ldif:

sudo nano tls.ldif
# tls.ldif

dn: cn=config
changetype: modify
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/pki/tls/ldapserver.crt

add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/pki/tls/ldapserver.key

add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/pki/tls/ldapserver.crt

Примените:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f tls.ldif

Отредактируйте /etc/openldap/ldap.conf, укажите путь к CA и установите поведение проверки сертификата (в тесте можно использовать TLS_REQCERT never, в проде — demand/allow в зависимости от инфраструктуры):

sudo nano /etc/openldap/ldap.conf
TLS_CACERT     /etc/pki/tls/ldapserver.crt
TLS_REQCERT never

Перезапустите slapd и проверьте LDAPS:

sudo systemctl restart slapd
sudo ldapsearch -x -b dc=hwdomain,dc=lan -ZZ

Флаг -ZZ делает StartTLS; для прямого LDAPS-подключения можно указывать ldaps:// и порт 636.

Генерация и подключение TLS для OpenLDAP

Проверка TLS

Важно: в продуктивной среде используйте сертификаты от доверяемого CA и не устанавливайте TLS_REQCERT в never.

Подключение клиента (Rocky Linux) через OpenLDAP client и SSSD

На клиенте выполняются те же подготовительные шаги: FQDN, /etc/hosts, подключение репозитория plus, установка пакетов openldap-clients и sssd.

Настройка FQDN и hosts на клиенте

sudo hostnamectl set-hostname client.hwdomain.lan
sudo nano /etc/hosts

Добавьте запись сервера LDAP:

192.168.5.25    ldap.hwdomain.lan   ldap

Установка клиента и SSSD

sudo dnf config-manager --set-enabled plus
sudo dnf repolist
sudo dnf install openldap-clients sssd sssd-ldap oddjob-mkhomedir

Включение SSSD как источника аутентификации

Выберите профиль authselect для sssd и разрешите mkhomedir:

sudo authselect select sssd with-mkhomedir --force

Запустите oddjobd, который создаёт домашние каталоги по умолчанию:

sudo systemctl enable --now oddjobd.service
sudo systemctl status oddjobd.service

Установка клиента и настройка authselect

Конфигурация /etc/openldap/ldap.conf и /etc/sssd/sssd.conf

Отредактируйте /etc/openldap/ldap.conf, укажите URI и BASE:

sudo nano /etc/openldap/ldap.conf
URI ldap://ldap.hwdomain.lan/
BASE dc=hwdomain,dc=lan

Создайте /etc/sssd/sssd.conf:

sudo nano /etc/sssd/sssd.conf

Пример содержимого (замените ldap_uri и ldap_search_base на ваши):

[domain/default]
id_provider = ldap
autofs_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldap://ldap.hwdomain.lan/
ldap_search_base = dc=hwdomain,dc=lan
ldap_id_use_start_tls = True
ldap_tls_cacertdir = /etc/openldap/certs
cache_credentials = True
ldap_tls_reqcert = allow

[sssd]
services = nss, pam, autofs
domains = default

[nss]
homedir_substring = /home

Ограничьте права на конфиг SSSD:

sudo chmod 0600 /etc/sssd/sssd.conf

Запустите SSSD и проверьте его статус:

sudo systemctl start sssd
sudo systemctl enable sssd
sudo systemctl status sssd

Успешный запуск sssd на клиенте

Проверка входа на клиент как LDAP-пользователь

С сервера или с любого хоста, имеющего доступ, выполните ssh на клиент (в примере IP 192.168.5.80) и войдите под LDAP-пользователем rocky:

ssh [email protected]

Подтвердите вход:

id
whoami

Вы должны увидеть, что текущий пользователь — rocky и uid/gid соответствуют LDAP-записи.

Проверка входа через LDAP-пользователя

Резервное копирование и восстановление

Регулярное резервное копирование LDAP — критично. Инструменты:

  • slapcat — экспортирует базу в LDIF.
  • slapadd — добавляет из LDIF в базу (обычно используется при восстановлении; база должна быть остановлена перед slapadd).

Пример резервного экспорта:

sudo systemctl stop slapd
sudo slapcat -v -l /root/openldap-backup.ldif
sudo systemctl start slapd

Восстановление (при необходимости, с остановленным slapd):

sudo systemctl stop slapd
sudo slapadd -v -l /root/openldap-backup.ldif
sudo chown -R ldap:ldap /var/lib/ldap
sudo systemctl start slapd

Дополнительно полезно: регулярная проверка LDIF-файлов, хранение резервных копий в защищённом хранилище и тестовые процедуры восстановления.

Безопасность и hardening

Ключевые рекомендации по безопасности:

  • Используйте сертификаты от доверенного CA и проверку сертификата (TLS_REQCERT demand/allow).
  • Отключите анонимный bind, если он не нужен.
  • Ограничьте доступ по iptables/firewalld к портам 389/636 только доверенным сетям.
  • Применяйте строгие ACL в olcAccess для критичных атрибутов (userPassword, shadow*).
  • Храните root-пароль LDAP в безопасном хранилище (Vault, KMS) и меняйте его по политике.
  • Ограничьте права на ключи/сертификаты (владельцем ldap, права 640/600).
  • Включите аудит (audit logs) для критичных операций.
  • Защитите файлы бэкапа (шифрование, доступ только администраторам).

Пример ACL, запрещающий чтение пароля посторонним:

olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=Manager,dc=hwdomain,dc=lan" write by anonymous auth by self write by * none

SELinux: если SELinux включён в enforcing, проверьте контексты файлов сертификатов и базы данных, при необходимости применяйте semanage fcontext и restorecon.

Репликация и масштабирование (обзор)

Для отказоустойчивости и распределения нагрузки используйте репликацию. В OpenLDAP применяются механизмы syncrepl (обычно с базой mdb). Основные концепции:

  • master-slave (producer/consumer) через syncrepl.
  • multi-master (rabid? — требует осторожности с конфликтами; лучше использовать подходы с хорошо продуманной политикой записи).

Репликация — тема отдельной инструкции: потребуется настроить репликаторы, аутентификацию репликации (ревизионные credentials), и правильно настроить olcSyncRepl в cn=config.

Сценарии отказов и отладка

Частые проблемы и пути их решения:

  • slapd не стартует: смотрите journalctl -u slapd и /var/log/messages. Частая причина — некорректные права на /var/lib/ldap или конфигурационные ошибки LDIF.
  • Ошибка bind: проверьте DN и пароль, используйте ldapwhoami и ldapsearch с -ZZ/-H ldapi:///.
  • Проблемы с TLS: проверьте пути к сертификатам, права доступа, и опцию TLS_REQCERT. Если используется self-signed — добавьте CA в доверенные на клиентах.
  • Неправильные uidNumber/gidNumber: конфликт приводит к проблемам при логине.
  • SSSD не видит пользователей: проверьте /var/log/sssd/ и sssctl user-checks.

Полезные команды для диагностики:

journalctl -u slapd -b
sudo ldapsearch -H ldapi:/// -Y EXTERNAL -b cn=config '(objectClass=*)'
ldapwhoami -x -D "cn=Manager,dc=hwdomain,dc=lan" -W
sssctl domain-list
sss_debuglevel 9 (подробнее для sssd)

Чек-листы по ролям

Чек-лист для системного администратора (развёртывание OpenLDAP):

  • Подготовить сервер и DNS/FQDN.
  • Установить пакеты, запустить slapd.
  • Добавить схемы и настроить olcSuffix/olcRootDN.
  • Сгенерировать и установить TLS-сертификаты (использовать CA).
  • Настроить ACL и права доступа.
  • Настроить firewalld и SELinux.
  • Настроить резервное копирование (slapcat) и тест восстановления.
  • Документировать DNs, пароли, резервные копии.

Чек-лист для инженера безопасности:

  • Проверить использование CA-сертификатов и TLS_REQCERT.
  • Проверить ACL на чтение userPassword и shadow*.
  • Убедиться, что бэкапы зашифрованы и доступны только уполномоченным.
  • Привести в порядок права на сертификаты и ключи.
  • Включить аудит и мониторинг изменений в cn=config.

Чек-лист для DevOps (подключение клиентов):

  • Убедиться в наличии пакетов sssd/openldap-clients.
  • Настроить authselect и oddjobd.
  • Настроить /etc/sssd/sssd.conf и права 600.
  • Проверить что SSSD успешно получает записи из ldap.
  • Настроить создание домашних каталогов автоматом.

Критерии приёмки

  1. Сервис slapd запущен и автозапуск включён.
  2. Базовый DN отображается в namingContexts.
  3. Как минимум один пользователь (например, rocky) успешно аутентифицируется на клиенте через SSSD и может получить домашний каталог.
  4. TLS для LDAP работает (проверка ldapsearch -ZZ или успешное подключение ldaps://).
  5. Резервное копирование выполнено и успешно восстановлено в тестовой среде.

Мини-методология развёртывания (шаги)

  1. Подготовить хосты, сетевые записи и политики доступа.
  2. Установить OpenLDAP и убедиться в работе slapd.
  3. Настроить olcSuffix/olcRootDN и импортировать базовые схемы.
  4. Настроить TLS и ACL.
  5. Добавить OU и первого пользователя.
  6. Настроить клиента через SSSD, протестировать аутентификацию.
  7. Настроить резервное копирование и процедуры восстановления.
  8. Документировать и при необходимости автоматизировать (Ansible).

Альтернативные подходы и когда использовать их

  • FreeIPA/IdM: если нужна интеграция с Kerberos, централизованное управление сертификатами и политиками, лучше FreeIPA (он включает LDAP, Kerberos, CA, DNS-интеграцию).
  • 389 Directory Server: альтернатива OpenLDAP с простым управлением и GUI в некоторых пакетах; может быть предпочтительней в больших окружениях.
  • Microsoft Active Directory: для среды Windows-first (политики GPO и т.д.).

Выбор зависит от требований: поддержка Kerberos, управления политиками, 규모 деплоймента и навыков команды.

Тесты и контроль качества (набор проверок)

  • Юнит-проверки: ldapsearch на корневой DN и конкретные записи.
  • Интеграция: попытка входа на клиенте через sssd под LDAP-пользователем.
  • Нагрузочная проверка: базовые LDAP-lookup тесты (например, ab или ldapsearch в цикле) для оценки задержек.
  • Failover: симуляция отказа мастера и проверка репликации (если настроено).

Примеры acceptance test (кратко):

  • ldapsearch возвращает запись ou=People для базового DN.
  • Пользователь rocky может выполнить ssh на клиент и получить /home/rocky.
  • LDAP отвечает по TLS и сертификат валиден.

Отладочные кейсы и типичные ошибки

  • “Can’t contact LDAP server”: проверьте firewall, DNS/FQDN, слушает ли slapd на нужном интерфейсе.
  • “Invalid credentials”: проверьте DN и пароль, хеши паролей в базе.
  • “Insufficient access”: проверьте ACL (olcAccess) и используемый DN при операциях.

Советы по миграции и совместимости

  • При миграции с другого LDAP сервера экспортируйте LDIF; внимательно проверьте совпадение схем и атрибутов (uidNumber, gidNumber).
  • Для интеграции с приложениями убедитесь, что используемые атрибуты (mail, uid, uidNumber, gidNumber, homeDirectory) доступны и индексированы при необходимости.
  • При обновлении OpenLDAP читайте release notes: формат cn=config может меняться.

Ментальные модели и эвристики

  • “LDAP как дерево каталога”: думайте о DC как о корне, OU — как о папках; пользователи и группы — объекты внутри.
  • ACL в LDAP работают «сверху вниз»: более специфичные правила перевешивают общие.
  • TLS защищает канал, но не заменяет корректные ACL и контроль доступа.

Глоссарий (1 строка на термин)

  • DN: Distinguished Name — уникальный идентификатор LDAP-объекта.
  • Base DN: корень или суффикс базы данных LDAP.
  • LDIF: текстовый формат для представления записей LDAP.
  • SLAPD: основной демон OpenLDAP.
  • SSSD: агент для интеграции системы с LDAP/AD.

Часто задаваемые вопросы (коротко)

Q: Можно ли использовать OpenLDAP без TLS? A: Можно, но небезопасно для передачи паролей. Для продуктивных сред TLS обязателен.

Q: Как часто делать резервное копирование? A: Резервное копирование должно соответствовать RPO вашей службы; минимум — ежедневные бэкапы и журналирование изменений.

Decision flowchart

flowchart TD
  A[Нужно централизованное управление пользователями?] -->|Да| B{Нужен Kerberos/CA/DNS?}
  B -->|Да| C[FreeIPA/IdM]
  B -->|Нет| D{Требуется легковесный LDAP?}
  D -->|Да| E[OpenLDAP]
  D -->|Нет| F[389 Directory Server]
  A -->|Нет| G[Не использовать LDAP]

Заключение

В этой инструкции вы научились разворачивать OpenLDAP на Rocky Linux 9: от базовой установки до настройки TLS и подключения клиента через SSSD. Дополнительно приведены рекомендации по безопасности, резервному копированию, репликации и отладке. Следующие шаги — внедрить автоматизацию (Ansible), настроить репликацию для отказоустойчивости и заменить self-signed сертификаты на CA-подписанные.

Краткие рекомендации:

  • В проде используйте CA-сертификаты, строгие ACL и регулярные бэкапы.
  • Документируйте все DNs, пароли и процессы восстановления.
  • Тестируйте восстановление и сценарии отказов в отдельной среде.

Спасибо за внимание. Для глубокой проработки репликации и политик авторизации рекомендуется обратиться к официальной документации OpenLDAP.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро