# Домашнее задание 38 ## LDAP. Централизованная авторизация и аутентификация Для выполнение задания используется vagrant box centos/stream9 ### Создание Vagrantfile Зададим следующие характеристики для VM Для ldap-server - CPU - 1 - Memory - 2048mb ldap-client - CPU - 1 - Memory - 512mb Готовый [Vagrantfile](Vagrantfile) ### Cоздание ansible.yml Сценарий для Ansible будет выполнять следующие действия: На VM **ldap-server** 1. Установка freeipa server 2. Настройка firewalld 3. Генерирует новые пароли для freeipa admin, directory manager и тестового пользователя 4. Запускает настройку freeipa сервера 5. Создает тестового пользователя pupkin.a 6. Генерирует ключи ssh для тестового пользователя На VM **ldap-client** 1. Установка freeipa client 2. Настрока freeipa client, присоединение к домену lab.local При выполнение будут созданы пароли для FreeIPA admin, directory manager и тестового пользователя. Ansible при выполнении сообщит эти пароли. Пароли для admin и directory manager сохраняться в файлах admin_pass и ds_pass. После генерации ssh ключа для тестового пользователя, закрытый ключ сохраниться в файле id_rsa Готовый [ansible.yml](ansible.yml) ### Проверка Запускаем vagrant ```bash alex@ubuntu-pc:~/Документы/38$ vagrant up Bringing machine 'ldap-server' up with 'virtualbox' provider... Bringing machine 'ldap-client' up with 'virtualbox' provider... ==> ldap-server: Importing base box 'centos/stream9'... ==> ldap-server: Matching MAC address for NAT networking... ==> ldap-server: Checking if box 'centos/stream9' version '20260406.0' is up to date... ==> ldap-server: Setting the name of the VM: 38_ldap-server_1775628947639_31533 ==> ldap-server: Clearing any previously set network interfaces... ==> ldap-server: Preparing network interfaces based on configuration... ldap-server: Adapter 1: nat ldap-server: Adapter 2: intnet ==> ldap-server: Forwarding ports... ldap-server: 22 (guest) => 2222 (host) (adapter 1) ==> ldap-server: Running 'pre-boot' VM customizations... ==> ldap-server: Booting VM... ==> ldap-server: Waiting for machine to boot. This may take a few minutes... ... ... TASK [update] ****************************************************************** ok: [ldap-client] TASK [install ipa-client] ****************************************************** changed: [ldap-client] TASK [add dns] ***************************************************************** changed: [ldap-client] TASK [get admin pass] ********************************************************** ok: [ldap-client] TASK [freeipa client config] *************************************************** changed: [ldap-client] PLAY RECAP ********************************************************************* ldap-client : ok=6 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 ``` Теперm попробуем подключиться под пользователем pupkin.a используя закрытый ключ на VM ldap-client. Для начало нужно узнать, какой порт прокидываетcя для ssh на VM ldap-client, это можно сделать с помощью команды **vagrant port** ```bash alex@ubuntu-pc:~/Документы/38$ vagrant port ldap-client The forwarded ports for the machine are listed below. Please note that these values may differ from values configured in the Vagrantfile if the provider supports automatic port collision detection and resolution. 22 (guest) => 2200 (host) ``` Подключаемся к 127.0.0.1:2200 ```bash alex@ubuntu-pc:~/Документы/38$ ssh -i ./id_rsa pupkin.a@127.0.0.1 -p 2200 The authenticity of host '[127.0.0.1]:2200 ([127.0.0.1]:2200)' can't be established. ED25519 key fingerprint is SHA256:ls8n7jfC7pcCkMlLZ+TZEUPHx2F581cnp7NqOnopqC8. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '[127.0.0.1]:2200' (ED25519) to the list of known hosts. [pupkin.a@ldap-client ~]$ ``` Мы успешно авторизовались под пользователем pupkin.a используя закрытый ключ ssh. Помотрим id пользователя ```bash [pupkin.a@ldap-client ~]$ id uid=1960600003(pupkin.a) gid=1960600003(pupkin.a) groups=1960600003(pupkin.a) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 ``` Теперь подключимся на ldap-server, и найдем пользователя по uid 1960600003 ```bash [root@ldap-server ~]# ipa user-find --uid=1960600003 -------------- 1 user matched -------------- User login: pupkin.a First name: Aristarkh Last name: Pupkin Home directory: /home/pupkin.a Login shell: /bin/sh Principal name: pupkin.a@LAB.LOCAL Principal alias: pupkin.a@LAB.LOCAL Email address: pupkin.a@lab.local UID: 1960600003 GID: 1960600003 SSH public key fingerprint: SHA256:zyFW5NFxW1tJNkgR8C9oi77Cwiv8Tsis7qswCkcTfMg (ssh-rsa) Account disabled: False ---------------------------- Number of entries returned 1 ---------------------------- ``` Как видим в FreeIPA uid 1960600003 это и есть наш пользователь pupkin.a Задание полностью выполнено!