Ввод Debian в домен Windows с помощью Samba, Winbind, Kerberos
Samba — это программное обеспечение для организации обмена файлами и работы с общими ресурсами между компьютерами под управлением Linux/Unix и операционной системой Windows
Ниже опишу как ввести Linux систему Debian 10 в домен Windows с помощью Kerberos, Samba, Winbind.
Исходные данные:
- Контроллер домена (DC1) на Windows Server 2019, домен JAKONDO.LOCAL
- Linux система (datastore1) на Debian 10 Buster
Подготовка системы
Перед началом выполнения ниже описанных действий обновляем систему до актуального состояния.
apt-get update && apt-get upgrade -yУказываем FQDN (Fully Qualified Domain Name) имя системы, в файле /etc/hostname.
datastore1.jakondo.localФайл /etc/hosts приводим к виду таким образом, чтобы в нём была запись с полным доменным именем компьютера и с коротким именем, ссылающаяся на один из внутренних IP.
127.0.0.1	localhost
192.168.1.10	datastore1.jakondo.local datastore1Синхронизация времени
Для корректной аутентификации по протоколу Kerberos необходимо синхронизировать время сервера и клиента. Если системные часы расходятся более чем на 5 минут, то аутентификация не будет выполнена.
Установим NTP сервер и выполним синхронизацию времени с контроллером домена:
apt-get install ntp ntpdate -y
ntpdate dc1.jakonda.localэтой статьеНастройка Kerberos
Установка пакетов для поддержки аутентификации Kerberos.
apt-get install krb5-userJAKONDO.LOCAL)Файл конфигурации Kerberos /etc/krb5.conf, приводим к виду.
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log
[libdefaults]
 default_realm = JAKONDO.LOCAL
 dns_lookup_kdc = false
 dns_lookup_realm = false
 forwardable = true
 ticket_lifetime = 24h
[realms]
 JAKONDO.LOCAL = {
 kdc = dc1.jakondo.local
 default_domain = JAKONDO.LOCAL
 admin_server = dc1.jakondo.local
 }
[domain_realm]
 .jakondo.local = JAKONDO.LOCAL
 jakondo.local = JAKONDO.LOCALjakonda.local / JAKONDA.LOCALПроверка работы Kerberos, выполним авторизацию в Active Directory.
kinit jakonda@JAKONDO.LOCAL
Password for jakonda@JAKONDO.LOCAL:jakonda@JAKONDO.LOCALПроверить можно получен ли билет или нет, можно командой klist.
klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: jakonda@JAKONDO.LOCAL
Valid starting     Expires            Service principal
10/27/21 11:24:00  10/27/21 21:24:00  krbtgt/JAKONDO.LOCAL@JAKONDO.LOCAL
        renew until 10/28/21 11:23:56Все отлично, можно удалить полученный билет.
kdestroyУстановка Samba
Устанавливаем необходимые пакеты.
apt-get install samba cifs-utils winbind libnss-winbind libpam-winbind -yКонфигурационный файл Samba /etc/samba/smb.conf приводим к виду.
[global]
#   ОБЩИЕ ПАРАМЕТРЫ СЕТЕВОЙ ШАРЫ
    realm = JAKONDO.LOCAL
    workgroup = JAKONDO
    security = ads
    netbios name = datastore1
    server string = %h server
    domain master = no
    local master = no
    preferred master = no
    os level = 0
    dns proxy = no
    socket options = TCP_NODELAY
    unix charset = UTF-8
    dos charset = 866
#   Конфигурация для домена JAKONDO.LOCAL и его пользователей и групп
    idmap config * : backend = tdb
    idmap config * : range   = 3000-7999
    idmap config JAKONDO : backend = rid
    idmap config JAKONDO : range   = 10000-999999
#   ПАРАМЕТРЫ WINBIND
    winbind enum users = yes
    winbind enum groups = yes
    winbind refresh tickets = yes
    winbind use default domain = yes
    winbind offline logon = yes
    winbind cache time = 300
    template shell = /bin/bash
#   ОТКЛЮЧЕНИЕ ПОДДЕРЖКИ СЕТЕВЫХ ПРИНТЕРОВ
    load printers = no
    show add printer wizard = no
    printcap name = /dev/null
    disable spoolss = yes
#   ПАРАМЕНТЫ ЛОГИРОВАНИЯ
    log level = 0 vfs:1realm, workgroup указываем название своего домена. Подробное описание используемых параметров можно по этой ссылке. А так же в параметрах idmap config в место JAKONDO, указываем свой домен.Выполним проверку конфигурации на ошибки, командой.
testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER
Press enter to see a dump of your service definitionsВвод в домен
Проверка заданной конфигурации Samba правильная, ошибок и предупреждений нет, а поэтому можно вводить систему в домен, выполняем команду.
net ads join -U jakonda@jakondo.localВывод об успешном присоединении к домену.
Enter jakonda@jakondo.local's password:
Using short domain name -- JAKONDO
Joined 'DATASTORE1' to dns domain 'jakondo.local'Вывод из домена
На случай если нужно вывести машину из домена, то делается это командой:
net ads leave -U jakonda@jakondo.localНастройка Winbind
Теперь чтобы мы могли видеть и использовать в системе Linux доменных пользователей и группы, то нам необходимо настроить winbind в файле /etc/nsswitch.conf. К параметрам passwd, group добавляем параметр winbind.
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd:         files winbind
group:          files winbind
shadow:         files
gshadow:        files
hosts:          files dns
networks:       files
protocols:      db files
services:       db files
ethers:         db files
rpc:            db files
netgroup:       nisПерезапускаем службы Samba и Winbind для применения изменений.
/etc/init.d/smbd restart
/etc/init.d/winbind restartПроверим, что Winbind установил доверительные отношения с Active Directory, выполним команду.
wbinfo -t
checking the trust secret for domain SYSOS via RPC calls succeededДля проверки видит ли Winbind пользователей и группы из Active Directory, выполним команды.
wbinfo -u
wbinfo -gЕсли в ходе выполнения данных команд в консоль были выведены пользователи и группы из Active Directory, то это значит что Winbind работает правильно.
Авторизация в системе
После проделанных выше операций, появляется возможность входа в систему под доменной учетной записью.
Для того чтобы при входе в систему создавался домашний каталог для пользователя, необходимо в файле /etc/pam.d/common-session после строки session optional pam_systemd.so добавить строку:
session required        pam_mkhomedir.so umask=0022 skel=/etc/skelВ итоге файл должен получится следующий (без вывода комментариев).
session [default=1]                     pam_permit.so
session requisite                       pam_deny.so
session required                        pam_permit.so
session required        pam_unix.so
session optional                        pam_winbind.so
session optional        pam_systemd.so
session required        pam_mkhomedir.so umask=0022 skel=/etc/skelПрава доступа
Если необходимо разрешить авторизацию в системе только определенным доменным пользователям, то это можно сделать путем ограничения права доступа на основе членства в доменной группе безопасности.
В файле конфигурации /etc/pam.d/common-auth в строке описывающую вызов pam_winbind.so добавляем дополнительный параметр require_membership_of, в котором указываем имя доменной группы безопасности в формате JAKONDO\LinuxAdmins
%Domain\adminsauth    [success=1 default=ignore]      pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass require_membership_of=JAKONDO\LinuxAdminsВ итоге файл должен получится следующий (без вывода комментариев).
auth    [success=2 default=ignore]      pam_unix.so nullok_secure
auth    [success=1 default=ignore]      pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass require_membership_of=JAKONDO\LinuxAdmins
auth    requisite                       pam_deny.so
auth    required                        pam_permit.soДелегирование SUDO
Если необходимо делегирование sudo для какой либо доменной группы безопасности (прим. LinuxAdmins), то необходимо создать файл /etc/sudoers.d/admins (где admins произвольное понятное название) в который прописать следующее:
%LinuxAdmins ALL=(ALL) ALLПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
 
						 
                     
                    
Обсуждение
Нет комментариев.