143 lines
5.8 KiB
Markdown
143 lines
5.8 KiB
Markdown
# Домашнее задание 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
|
||
|
||
Задание полностью выполнено! |