Содержание статьи:
Ниже опишу как ввести linux систему Debian 10 в домен Windows с помощью Kerberos, Samba, Winbind.
Исходные данные:
- Контроллер домена (DC1) на Windows Server 2019, домен SYSOS.LOCAL
- Linux система (datastore1) на Debian 10 Buster
Подготовка системы
Перед началом выполнения ниже описанных действий обновляем систему до актуального состояния:
apt-get update && apt-get upgrade -y
Указываем FQDN (Fully Qualified Domain Name) имя системы, в файле /etc/hostname
:
datastore1.sysos.local
Так же файл /etc/hosts
приводим к виду таким образом, чтобы в нём была запись с полным доменным именем компьютера и с коротким именем, ссылающаяся на один из внутренних IP:
127.0.0.1 localhost 192.168.1.10 datastore1.sysos.local datastore1
Настройка синхронизации времени
Если разница будет более 5 минут, то будет не возможно получить билет от Kerberos. Настраиваем синхронизацию времени с контроллером домена, выполняем установку NTP:
apt-get install ntp ntpdate
В файле конфигурации /etc/ntp.conf
, добавляем в него информацию о вашем сервере времени (в моем случае указываю контролер домена):
# You do need to talk to an NTP server or two (or three). server dc1.sysos.local
Перезапускаем службу времени:
/etc/init.d/ntp restart
Для единовременной синхронизации можно воспользоваться командой:
ntpdate dc1.sysos.local
Настройка Kerberos
Установка пакетов для поддержки аутентификации Kerberos:
apt-get install krb5-user
Файл конфигурации 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 = SYSOS.LOCAL dns_lookup_kdc = false dns_lookup_realm = false forwardable = true ticket_lifetime = 24h [realms] SYSOS.LOCAL = { kdc = dc1.sysos.local default_domain = SYSOS.LOCAL admin_server = dc1.sysos.local } [domain_realm] .sysos.local = SYSOS.LOCAL sysos.local = SYSOS.LOCAL
Проверка работы Kerberos, выполним авторизацию в Active Directory (kinit jakonda@SYSOS.LOCAL
):
kinit jakonda@SYSOS.LOCAL Password for jakonda@SYSOS.LOCAL:
Проверить можно получен ли билет или нет, можно командой (klist
):
klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: jakonda@SYSOS.LOCAL Valid starting Expires Service principal 10/27/21 11:24:00 10/27/21 21:24:00 krbtgt/SYSOS.LOCAL@SYSOS.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 = SYSOS.LOCAL workgroup = SYSOS security = ads netbios name = datastore1 server string = %h server domain master = no local master = no preferred master = no os level = 0 domain logons = no dns proxy = no socket options = TCP_NODELAY unix charset = UTF-8 dos charset = 866 # Конфигурация для домена SYSOS.LOCAL и его пользователей и групп idmap config * : backend = tdb idmap config * : range = 3000-7999 idmap config SYSOS : backend = rid idmap config SYSOS : 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
Так как в Linux по-умолчанию установлен лимит на 1024 одновременно открытых файлов, а в Windows он 16384, поэтому увеличим лимит в Debian до значения 16384.
В файле /etc/security/limits.conf
дописываем в самый конец строки:
* - nofile 16384 root - nofile 16384
Перезагружаем систему для применения изменений!.
Выполним проверку конфигурации на ошибки, командой:
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@sysos.local
Вывод об успешном присоединении к домену:
Enter jakonda@sysos.local's password: Using short domain name -- SYSOS Joined 'DATASTORE1' to dns domain 'sysos.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
Для централизованного назначения определенным доменным пользователями возможность выполнения sudo
(Административных действий в Linux-системе), создадим отдельный файл в котором укажем доменную группу безопасности в которую уже будут входить нужные пользователи.
Создаем файл /etc/sudoers.d/admins
со следующим содержанием:
%ServerAdmins ALL=(ALL) ALL
Если есть желание разрешить доступ к авторизации в систему только определенным доменным пользователям, то можно указать возможность авторизации на основе членства доменной группе безопасности.
Для этого в файле конфигурации /etc/pam.d/common-auth
в строку описывающую вызов pam_winbind.so
добавляем дополнительный параметр require_membership_of
, в котором указываем имя доменной группы безопасности в формате SYSOS\ServerAdmins
auth [success=1 default=ignore] pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass require_membership_of=SYSOS\ServerAdmins
В итоге файл должен получится следующий (без вывода комментариев):
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=SYSOS\ServerAdmins auth requisite pam_deny.so auth required pam_permit.so
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Оставить ответ