Домашнее задание 38
LDAP. Централизованная авторизация и аутентификация
Для выполнение задания используется vagrant box centos/stream9
Создание Vagrantfile
Зададим следующие характеристики для VM
Для ldap-server
- CPU - 1
- Memory - 2048mb
ldap-client
- CPU - 1
- Memory - 512mb
Готовый Vagrantfile
Cоздание ansible.yml
Сценарий для Ansible будет выполнять следующие действия:
На VM ldap-server
- Установка freeipa server
- Настройка firewalld
- Генерирует новые пароли для freeipa admin, directory manager и тестового пользователя
- Запускает настройку freeipa сервера
- Создает тестового пользователя pupkin.a
- Генерирует ключи ssh для тестового пользователя
На VM ldap-client
- Установка freeipa client
- Настрока freeipa client, присоединение к домену lab.local
При выполнение будут созданы пароли для FreeIPA admin, directory manager и тестового пользователя. Ansible при выполнении сообщит эти пароли. Пароли для admin и directory manager сохраняться в файлах admin_pass и ds_pass. После генерации ssh ключа для тестового пользователя, закрытый ключ сохраниться в файле id_rsa
Готовый ansible.yml
Проверка
Запускаем vagrant
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
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
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 пользователя
[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
[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
Задание полностью выполнено!