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