Как интегрировать Linux-машину в среду домена Windows AD
Исходные данные
Домен: iac.local
IP DNS-сервера: 10.46.148.112
Подготовка
- Установка пакетов
- Настройка DNS
В файле /etc/hosts
В /etc/resolv.conf После этого перезагрузить сервер.Присоединение к домену
В первую очередь требуется обнаружить домен:
Пример успешного ответа:
iac.local
type: kerberos
realm-name: IAC.LOCAL
domain-name: iac.local
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
login-policy: allow-realm-logins
Это означает, что настройки сети верны и машина получила ответ от домена. Если нет, вам необходимо проверить настройки сети, домен и работоспособность DNS.
Затем присоединитесь к домену AD. Замените admin1 на имя администратора и укажите пароль.
# Вариант 1 (основной)
adcli join -H $(uname -n) -U ILSanko -O "OU=infrastructure,OU=Servers,OU=IAC_Infrastructure,DC=iac,DC=local" IAC.LOCAL
# Вариант 2
realm join -U admin1 iac.local
Проверьте, возможен ли прием информации о пользователе AD. Замените user1 на имя пользователя вашего домена.
id aizaro@iac.local
uid=687821651(aizaro@iac.local) gid=687800512(aizaro@iac.local) groups=687800512(domain users@iac.local)
Настройки авторизации
Необходимо произвести настройку, чтобы в будущем каждый раз не добавлять имя домена к имени пользователя.
В файле /etc/sssd/sssd.conf Измените значение use_fully_qualified_names на False. Перезагрузите и проверьте:
sudo systemctl restart sssd
id aizaro
uid=687821651(aizaro@iac.local) gid=687800512(aizaro@iac.local) groups=687800512(domain users@iac.local)
Автосоздание домашних каталогов
Теперь нужно настроить создание домашних каталогов для пользователей AD при входе в систему.
vi /etc/pam.d/common-session
#add this line in the end of filesession optional
session required pam_mkhomedir.so skel=/etc/skel umask=077
Это означает, что вы успешно вошли в систему как пользователь AD.
Осторожно!
При ошибочном вводе этого параметра может быть заблокирован вход по ssh от имени любого пользователя!!
Не отлогинивайтесь, иначе потеряете контроль над этой машиной.
Тюнинг прав
Также вы можете разрешить авторизацию для некоторых пользователей и групп AD или же ограничить других. В приведенном ниже примере настроен запрет для всех пользователей, кроме user0, aizaro и группы Main Admins.
sudo realm deny –allsudo realm permit user0@iac.local aizaro@iac.localsudo realm permit -g 'Main Admins'
Настройка пользователей AD для получения root-прав такая же, как и для локальных, но выполняется в другом файле.
Добавьте к нему нужные строки. Например:
Файл /etc/krb5.conf
[libdefaults]
default_realm = iac.local
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
fcc-mit-ticketflags = true
[realms]
IAC.LOCAL = {
kdc = IAC-DC01
admin_server = IAC-DC01.IAC.LOCAL
default_domain = IAC.LOCAL
}
[login]
krb4_convert = true
krb4_get_tickets = false
[domain_realm]
.iac.local = IAC.LOCAL
iac.local = IAC.LOCAL
Файл /etc/realmd.conf
[users]
default-home = /home/%U
default-shell = /bin/bash
[active-directory]
default-client = sssd
#default-client = winbind
os-name = Debian GNU/Linux
os-version = 10 (Buster)
[service]
automatic-install = no
[iac.local]
computer-ou = OU=infrastructure,OU=Servers,OU=IAC_Infrastructure,DC=iac,DC=local
computer-name = s3-emul
user-principal = yes
automatic-join = yes
automatic-id-mapping = no
manage-system = no
fully-qualified-names = no
Скрипт автоустановки
#!/bin/bash
apt update
apt -y install realmd sssd sssd-tools libnss-sss libpam-sss adcli samba-common-bin oddjob oddjob-mkhomedir packagekit
apt -y install heimdal-clients mskutil
apt -y install krb5-user libpam-krb5 libpam-ccreds
sed -i 's/techpark.local/iac.local/g' /etc/hosts
cat /etc/hosts
sed -i 's/techpark.local/iac.local/g' /etc/resolv.conf
sed -i 's/nameserver 10.50.56.200/nameserver 10.46.148.112/g' /etc/resolv.conf
cat > /etc/realmd.conf <<-EOF
[users]
default-home = /home/%U
default-shell = /bin/bash
[active-directory]
default-client = sssd
#default-client = winbind
os-name = Debian GNU/Linux
os-version = 10 (Buster)
[service]
automatic-install = no
[iac.local]
computer-ou = OU=infrastructure,OU=Servers,OU=IAC_Infrastructure,DC=iac,DC=local
computer-name = $(uname -n)
user-principal = yes
automatic-join = yes
automatic-id-mapping = no
manage-system = no
fully-qualified-names = no
#--------------------------
EOF
cat > /etc/sssd/sssd.conf <<-EOF
[sssd]
domains = iac.local
config_file_version = 2
services = nss, pam
[domain/iac.local]
ad_domain = iac.local
krb5_realm = IAC.LOCAL
realmd_tags = manages-system joined-with-adcli
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = False
fallback_homedir = /home/%u@%d
access_provider = ad
#--------------------------
EOF
chmod 600 /etc/sssd/sssd.conf
systemctl restart realmd
realm discover iac.local
sleep 5
adcli join -H $(uname -n) -U ILSanko -O "OU=infrastructure,OU=Servers,OU=IAC_Infrastructure,DC=iac,DC=local" IAC.LOCAL
#realm join --verbose --user=ILSanko --computer-ou="OU=infrastructure,OU=Servers,OU=IAC_Infrastructure,DC=iac,DC=local" iac.local
id ILSanko@iac.local
systemctl start sssd
echo -e "session required\tpam_mkhomedir.so\tskel=/etc/skel\tumask=077" >> /etc/pam.d/common-session
echo -e "%IAC_ServerAdministrators ALL=(ALL) ALL" >> /etc/sudoers.d/ad_windows
Инструкция для Centos
Эту инструкцию прислали коллеги
yum -y install adcli sssd authconfig pam_krb5 samba-common
adcli info COMPANY-X.LOCAL
adcli join -H NTC-LS13 -U user_name COMPANY-X.LOCAL
vi /etc/sssd/sssd.conf
chmod 600 /etc/sssd/sssd.conf
vi /etc/pam.d/system-auth
session optional pam_mkhomedir.so skel=/etc/skel umask=077
vi /etc/pam.d/sshd
# first session
session optional pam_mkhomedir.so skel=/etc/skel umask=077
/etc/rc.d/init.d/sssd start
chkconfig sssd on
id user_name
authconfig --enablesssd --enablesssdauth --disableldap --disableldapauth --disablekrb5 --update
visudo
%SPB-NTC-SERVERADMINS ALL=(ALL) ALL
Источники
- https://serverspace.ru/support/help/linux-active-directory/
- https://www.freedesktop.org/software/realmd/docs/realmd-conf.html
Проверил и доработал aizaro@mail.ru