Ввести в домен Active Directory (AD) линукс Ubuntu 20.04 | 18.04 / Debian 10

Thank you for reading this post, don't forget to subscribe! 

Шаг 1. Обновите свой APT

Нач­ни­те с обнов­ле­ния вашей систе­мы Ubuntu / Debian Linux.

sudo apt -y update

Это важ­но, посколь­ку уста­нов­ка может завер­шить­ся ошиб­кой, если сер­вер уста­нов­лен толь­ко что.

Для Ubuntu 20.04 | 18.04 добавь­те сле­ду­ю­щие репо­зи­то­рии в файл sources.list

sudo tee -a /etc/apt/sources.list <<EOF
deb http://us.archive.ubuntu.com/ubuntu/ bionic universe
deb http://us.archive.ubuntu.com/ubuntu/ bionic-updates universe
EOF

Шаг 2. Задайте имя хоста сервера и DNS

Уста­но­ви­те пра­виль­ное имя хоста для ваше­го сер­ве­ра с пра­виль­ным домен­ным компонентом.

sudo hostnamectl set-hostname myubuntu.example.com

Под­твер­ди­те свое имя хоста:

$ hostnamectl
Static hostname: myubuntu.example.com
Icon name: computer-vm
Chassis: vm
Machine ID: 5beb7ac3260c4f00bcfbe1088f48b8c7
Boot ID: b2a0d9abe43b455fb49484dbaa59dc41
Virtualization: vmware
Operating System: Ubuntu 18.04.1 LTS
Kernel: Linux 4.15.0-29-generic
Architecture: x86-64

Убе­ди­тесь, что DNS настро­ен правильно:
$ cat /etc/resolv.conf

Ubuntu 20.04 | 18.04 постав­ля­ет­ся с systemd-resolve, кото­рый вам нуж­но отклю­чить, что­бы сер­вер мог напря­мую обра­щать­ся к ваше­му сете­во­му DNS.

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved

Если вы исполь­зу­е­те DHCP, вы може­те обно­вить DNS-сер­вер вручную.
$ sudo unlink /etc/resolv.conf
$ sudo vim /etc/resolv.conf

Шаг 3. Установите необходимые пакеты

Для при­со­еди­не­ния систе­мы Ubuntu 20.04 | 18.04 / Debian 10 к доме­ну Active Directory (AD) тре­бу­ет­ся ряд пакетов.

sudo apt update
sudo apt -y install realmd libnss-sss libpam-sss sssd sssd-tools adcli samba-common-bin oddjob oddjob-mkhomedir packagekit

Толь­ко после успеш­ной уста­нов­ки зави­си­мо­стей вы може­те при­сту­пить к обна­ру­же­нию доме­на Active Directory в Debian 10 / Ubuntu 20.04 / 18.04.

Шаг 4. Откройте для себя домен Active Directory в Debian 10 / Ubuntu 20.04 | 18.04

Коман­да realm discover воз­вра­ща­ет пол­ную кон­фи­гу­ра­цию доме­на и спи­сок паке­тов, кото­рые долж­ны быть уста­нов­ле­ны для реги­стра­ции систе­мы в домене.

$ sudo realm discover example.com
example.com
type: kerberos
realm-name: EXAMPLE.COM
domain-name: example.com
configured: no
server-software: active-directory
client-software: sssd
required-package: sssd-tools
required-package: sssd
required-package: libnss-sss
required-package: libpam-sss
required-package: adcli
required-package: samba-common-bin

Заме­ни­те example.com сво­им дей­ству­ю­щим доме­ном AD.

Шаг 5. Присоединитесь к Ubuntu 20.04 | 18.04 / Debian 10 к домену Active Directory (AD)

Учет­ная запись адми­ни­стра­то­ра AD тре­бу­ет­ся для инте­гра­ции ваше­го ком­пью­те­ра Linux с доме­ном Windows Active Directory. Про­верь­те и под­твер­ди­те учет­ную запись адми­ни­стра­то­ра AD и пароль.

Коман­да realm join настро­ит локаль­ный ком­пью­тер для исполь­зо­ва­ния с ука­зан­ным доме­ном, настро­ив как локаль­ные систем­ные служ­бы, так и запи­си в домене иден­ти­фи­ка­ции. У коман­ды есть несколь­ко пара­мет­ров, кото­рые мож­но про­ве­рить с помощью:

$ realm join --help
Базо­вое выпол­не­ние команды:
$ sudo realm join -U Administrator example.com
Password for Administrator:

Где:

Адми­ни­стра­тор — это имя учет­ной запи­си адми­ни­стра­то­ра, исполь­зу­е­мой для инте­гра­ции маши­ны в AD.
example.com — это имя доме­на AD

Коман­да сна­ча­ла пыта­ет­ся под­клю­чить­ся без учет­ных дан­ных, но при необ­хо­ди­мо­сти запра­ши­ва­ет пароль.

Про­смотр све­де­ний о теку­щей области.

$ realm list
example.com
type: kerberos
realm-name: EXAMPLE.COM
domain-name: example.com
configured: kerberos-member
server-software: active-directory
client-software: sssd
required-package: sssd-tools
required-package: sssd
required-package: libnss-sss
required-package: libpam-sss
required-package: adcli
required-package: samba-common-bin
login-formats: %U@example.com
login-policy: allow-realm-logins

В систе­мах на осно­ве RHEL домаш­ний ката­лог поль­зо­ва­те­ля будет создан авто­ма­ти­че­ски. В Ubuntu / Debian вам необ­хо­ди­мо вклю­чить эту функцию.

sudo bash -c "cat > /usr/share/pam-configs/mkhomedir" <<EOF
Name: activate mkhomedir
Default: yes
Priority: 900
Session-Type: Additional
Session:
required pam_mkhomedir.so umask=0022 skel=/etc/skel
EOF

Затем акти­ви­руй­те с помощью:
sudo pam-auth-update

Выбе­ри­те <OK>

Убе­ди­тесь, что выбра­но “activate mkhomedir” с помо­щью звез­доч­ки — [*]

Затем выбе­ри­те <Ok>, что­бы сохра­нить изменения.

Ваш файл кон­фи­гу­ра­ции sssd.conf нахо­дит­ся в /etc/sssd/sssd.conf . При каж­дом изме­не­нии фай­ла тре­бу­ет­ся перезагрузка.

Ста­тус дол­жен быть запущен.

$ systemctl status sssd

Если инте­гра­ция рабо­та­ет, долж­на быть воз­мож­ность полу­чить инфор­ма­цию о поль­зо­ва­те­ле AD.
$ id jmutai@example.com
uid=1783929917(jmutai@example.com) gid=1784800513(domain users@example.com) groups=1783870513(domain users@example.com)

Шаг 6. Контроль доступа — Ограничьте до пользователя / группы

Доступ к заре­ги­стри­ро­ван­но­му сер­ве­ру мож­но огра­ни­чить, раз­ре­шив толь­ко опре­де­лен­ных поль­зо­ва­те­лей и группы.

Огра­ни­че­ние для пользователей

Что­бы раз­ре­шить поль­зо­ва­те­лю доступ через SSH и кон­соль, исполь­зуй­те команду:

$ sudo realm permit user1@example.com
$ sudo realm permit user2@example.com user3@example.com

Раз­ре­шить доступ к груп­пе — Примеры
$ sudo ream permit -g sysadmins
$ sudo realm permit -g 'Security Users'
$ sudo realm permit 'Domain Users' 'admin users'

Это изме­нит файл sssd.conf .

Если вме­сто это­го вы хоти­те раз­ре­шить доступ всем поль­зо­ва­те­лям, запустите:

$ sudo realm permit --all
Что­бы запре­тить доступ всем поль­зо­ва­те­лям доме­на, используйте:
$ sudo realm deny --all

Шаг 7. Настройте доступ через Sudo

По умол­ча­нию у поль­зо­ва­те­лей доме­на не будет раз­ре­ше­ния на повы­ше­ние при­ви­ле­гий до root. Поль­зо­ва­те­лям дол­жен быть предо­став­лен доступ на осно­ве имен поль­зо­ва­те­лей или групп.

Давай­те сна­ча­ла созда­дим файл раз­ре­ше­ний sudo.

$ sudo vi /etc/sudoers.d/domain_admins
Доба­вить одно­го пользователя:
user1@example.com ALL=(ALL) ALL
Доба­вить еще одно­го пользователя:
user1@example.com ALL=(ALL) ALL
user2@example.com ALL=(ALL) ALL

Доба­вить группу
%group1@example.com ALL=(ALL) ALL

Добавь­те груп­пу с пробелами.

%security\ users@example.com ALL=(ALL) ALL
%system\ super\ admins@example.com ALL=(ALL) ALL

Шаг 8. Проверьте доступ по SSH

Полу­чи­те доступ к сер­ве­ру уда­лен­но, посколь­ку поль­зо­ва­те­лю AD раз­ре­ше­но вхо­дить в систему.

$ ssh user1@localhost
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is SHA256:wmWcLi/lijm4zWbQ/Uf6uLMYzM7g1AnBwxzooqpB5CU.
ECDSA key fingerprint is MD5:10:0c:cb:22:fd:28:34:c6:3e:d7:68:15:02:f9:b4:e9.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.

Это под­твер­жде­ние того, что наша кон­фи­гу­ра­ция про­шла успешно.