Ввод 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ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Обсуждение
Нет комментариев.