Настройка контроллера домена debian

Обновлено: 03.07.2024

Этот вариант может быть полезен для небольших организаций с компьютерами под управлением Windows.
Нет необходимости приобретать недешевую Windows Server для организации AD и CAL лицензии для доступа к контроллеру домена.
В конечном итоге имеем плюшки AD: групповые политики, разграничение прав доступа к ресурсам и т.д.

Я попытался написать подробный алгоритм действий необходимых для организации Active Directory (AD) Domain Controller (DC) на базе Ubuntu Server.

Рассмотрим настройку контроллера домена на примере Ubuntu Server 12.04.4 LTS или Ubuntu Server 13.10, инструкция подходит для обоих вариантов без дополнительных изменений

1. Установка Ubuntu
2. Настройка параметров сетевого адаптера

В конфигурации Вашего сетевого интерфейса, скорее всего, будет

поменяем настройки на использование статичного ip-адреса.
В моем случае они выглядят вот так:

auto eth0
iface eth0 inet static
address 192.168.10.1
netmask 255.255.255.0
gateway 192.168.10.10
dns-nameservers 192.168.10.10
dns-search domain.local domain

После изменения сетевых настроек необходимо перезапустить сетевой сервис

3. Установка необходимых пакетов

Если Вы все же не установили OpenSSH server на первом этапе, это можно сделать командой
Перед установкой чего либо, лучше сначала обновить систему и пакеты командой
Для того, чтобы компьютеры сети сверяли время по нашему серверу установим ntp-сервер

Samba4 будем использовать последней версии и собирать из исходников, так что нам понадобятся пакеты для её сборки и корректной работы.

4. Сборка Samba4

Для корректной работы Samba потребуется поддержка vfs на уровне файловой системы, для этого внесем изменения в /etc/fstab, необходимо добавить user_xattr,acl,barrier=1 в настройки корневого раздела /
должна получится строка, что-то вроде этой:
/dev/mapper/dc1--vg-root / ext4 user_xattr,acl,barrier=1,errors=remount-ro 0 1

после чего необходимо перезагрузить компьютерНе забываем про root права
Скачиваем последнюю стабильную версию Samba из GIT репозитария
конфигурируем, компилируем и устанавливаем Samba Параметр --enable-debug необходим для отображения более подробной информации в логах Samba.

После того, как соберется и установится Samba (это долгое занятие), для удобства её использования, необходимо прописать пути до исполняемых файлов /usr/local/samba/sbin и /usr/local/samba/bin в файлах /etc/sudoers переменная secure_path и /etc/environment переменная PATH, добавив строку :/usr/local/samba/sbin:/usr/local/samba/bin
должна получится строчка что-то вроде этой:

перезагрузимся еще раз (на всякий случай)

5. Поднимаем AD

В качестве DNS сервера AD будем использовать Samba, поэтому отключаем bind командой

Для манипуляций с AD в Samba существует инструмент samba-tool.
Для первоначальной настройки Samba вводим команду

Если на первом этапе Вы правильно указали имя компьютера, все настройки, которые запросит программа, можно оставить поумолчанию.
Во время настройки будет запрошен пароль пользователя Administrator для AD, он должен соответствовать требованиям сложности пароля поумолчанию: хотябы одна буква верхнего регистра, хотябы одна цифра, минимум 8 символов.
Если же пароль не подошел по сложности и Вы увидели ошибку вроде этой:

ERROR(ldb): uncaught exception — 0000052D: Constraint violation — check_password_restrictions: the password is too short. It should be equal or longer than 7 characters!

то перед повторным выполнением первоначальной настройки, необходимо удалить содержимое каталогов /usr/local/samba/private/ и /usr/local/samba/etc/
Если необходимо изменить сложность паролей это можно сделать командой эта команда отключает требование сложности, отключает сроки действия паролей, устанавливает минимальную длину пароля 6 символов

allow dns updates = nonsecure and secure
printing = bsd
printcap name = /dev/null

Это позволит динамически обновлять DNS-записи на сервере, при входе рабочей станции (под управлением windows) в домен и отключит поддержку печати, которая постоянно выдает ошибки в лог.

В файле /etc/resolvconf/resolv.conf.d/head необходимо указать наш DNS-сервер Samba 127.0.0.1
и перезапустить сервис resolvconf
Также установим Kerberos клиенти настроим на AD с помощью файла созданного на этапе samba-tool domain provision
Для автоматического запуска сервиса Samba необходим скрипт:


его необходимо сделать исполняемым
и создать настройки поумолчанию
Перезагружаем компьютер
6. Проверяем работоспособность сервера

У нас должна быть запущена samba после перезагрузки
root 865 0.3 3.0 95408 31748? Ss 18:59 0:00 /usr/local/samba/sbin/samba -D

Name: dc1.domain.local
Address: 192.168.10.1

Domain=[DOMAIN] OS=[Unix] Server=[Samba 4.1.6]
Sharename Type Comment
— — — netlogon Disk
sysvol Disk
IPC$ IPC IPC Service (Samba 4.1.6)
Domain=[DOMAIN] OS=[Unix] Server=[Samba 4.1.6]
Server Comment
— — Workgroup Master
— -------
Warning: Your password will expire in 41 days on Wed Apr 23 18:49:14 2014
Valid starting Expires Service principal
12/03/2014 19:17 13/03/2014 05:17 krbtgt/DOMAIN.LOCAL@DOMAIN.LOCAL
Domain=[DOMAIN] OS=[Unix] Server=[Samba 4.1.6]
. D 0 Wed Mar 12 18:46:48 2014
… D 0 Wed Mar 12 18:49:15 2014

Вот и всё.
Можно вводить в домен клиентов, заводить пользователей.

Управлять AD можно:
частично при помощи samba-tool на Ubuntu
при помощи Administration Tools Pack на Windows XP
при помощи Remote Server Administration Tools (RSAT) на Windows 7 и выше

1. Установка Debian 8

Итак, приступим. Откуда качать и как ставить, я думаю, рассказывать смысла нет. Остановлюсь лишь на ключевых моментах.

В первую очередь, нам нужно настроить сетевой интерфейс, поэтому отказываемся от настройки сети по DHCP

Итак, параметры сети у нас следующие:

адрес сервера: 192.168.1.2;
маска подсети соответственно 255.255.255.0;
шлюз по-умолчанию у нас 192.168.1.1;
DNS-сервер 192.168.1.1
имя сервера debian
имя домена unlis.local

После задания паролей, часовых поясов и разметки диска можно настроить репозитории (скормить apt все три DVD-диска с дистрибутивом при их наличии, либо подключить зеркало из сети):

24

Можно сделать после установки, привести /etc/apt/sources.list к виду

Доходим до шага выбора программного обеспечения, выбираем необходимый минимум

30

2. Настройка сети, файловых систем, репозиториев, установка нужных пакетов

Поставили, загрузились, логинимся под root, или через SSH сначала под обычным пользователем, которого мы создали при установке, потом через su переключаемся на root. Именно, в Debian 8 уже нельзя зайти через SSH сразу под root-ом по паролю, но мы-то с вами знаем, где собака порылась)

Проверяем настройку сети. Для этого смотрим /etc/network/interfaces, изменяем при необходимости

Проверим содержимое /etc/hosts

127.0.0.1 localhost
192.168.1.2 debian.unlis.local debian

В файле /etc/hostname должно быть сокращенное имя хоста

Затем командуем по очереди hostname и hostname -f

Для работы контроллера домена в ядре должна быть поддержка XATTR, SECURITY и POSIX_ACL для файловой системы ext4. По умолчанию она присутствует, необходимо только включить ее для нужных нам файловых систем в файле /etc/fstab (выделено жирным шрифтом):

После перезагрузки необходимо протестировать поддержку XATTR для файловой системы. Выполним:

touch testfile
setfattr -n user.test -v test1 testfile
setfattr -n security.test -v test2 testfile

file: testfile
user.test="test1"

Команда getfattr -n security.test -d testfile должна вернуть:

file: testfile
security.test="test2"

Для проверки поддержки ACL выполним:

touch testfile2
setfacl -m g:adm:rwx testfile2

Команда getfacl testfile2 должна вернуть:

Далее, как правило, нужно обновиться. Если подключали зеркало репозитория при установке, то все уже обновлено. Если нет, то подключаем (см выше про /etc/apt/sources.list), и командуем apt-get update && apt-get upgrade.

После обновления устанавливаем samba4. Также нам понадобится пакет krb5-user, ntp, smbclient, winbind (раньше без него работало, но в новых версиях samba падает) и bind9 (так как мы не будем использовать в качестве DNS сервера встроенный в Samba4), установим вышеперечисленное командой apt-get install samba ntp smbclient krb5-user bind9 winbind. Все необходимые пакеты поставятся сами. При установке krb5-user спросит realm, можно оставить пустым, настроим вручную позже.

3. Настройка samba в качестве контроллера домена.

ERROR(<class 'samba.provision.ProvisioningError'>): Provision failed - ProvisioningError: guess_names: 'server role=standalone server' in /etc/samba/smb.conf must match chosen server role 'active directory domain controller'! Please remove the smb.conf file and let provision generate it

удаляем или перемещаем файл /etc/samba/smb.conf и выполняем команду заново

Realm [UNLIS.LOCAL]: UNLIS.LOCAL
Domain [UNLIS]: UNLIS
Server Role (dc, member, standalone) [dc]: dc
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ
Administrator password: <Пароль_администратора_домена>
Retype password: <Пароль_администратора_домена>
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=unlis,DC=local
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=unlis,DC=local
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
See /var/lib/samba/private/named.conf for an example configuration include file for BIND
and /var/lib/samba/private/named.txt for further documentation required for secure DNS updates
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /var/lib/samba/private/krb5.conf
Setting up fake yp server settings
Once the above files are installed, your Samba4 server will be ready to use
Server Role: active directory domain controller
Hostname: debian
NetBIOS Domain: UNLIS
DNS Domain: unlis.local
DOMAIN SID: S-1-5-21-2700703666-2339786236-4269973824

4. Настройка DNS-сервера.

После установки bind9 проверяем его версию командой named -v, должно вернуться что-то типа BIND 9.9.5-9+deb8u3-Debian (Extended Support Version). То есть версия bind у нас 9.9. Все нижеприведенные настройки будем выполнять именно для этой версии.

Дописываем в конец файла /etc/bind/named.conf

Дописываем в конец файла /etc/bind/named.conf.options после символа >;

И в файле /var/lib/samba/private/named.conf комментируем/раскомментируем строку под нашу версию bind

Для того, чтобы контроллер домена знал всех членов домена по их DNS-именам, внесем изменения в файл /etc/resolv.conf

domain unlis.local
nameserver 192.168.1.2

Можно еще изменить адрес DNS-серверов в файле /etc/network/interfaces

Если установлен пакет resolvconf, то в файле /etc/network/interfaces не можно, а нужно изменить параметр dns-nameservers, а файл /etc/resolv.conf можно вообще не трогать, потому что он будет перезаписан пакетом resolvconf на основании настроек dns-* из файла /etc/network/interfaces (Подсказано читателем).

Если планируется использование bind для пересылки DNS-запросов в Интернет, необходимо настроить адреса forwardes в файле /etc/bind/named.conf.options

4. Настройка Kerberos.

Типовая конфигурация содержится в файле /etc/krb5.conf. В момент создания домена генерируется файл /var/lib/samba/private/krb5.conf, содержащий минимальную конфигурацию, необходимую для работы AD. Можно обойтись и этой конфигурацией, создав символическую ссылку на файл командой ln -sf /var/lib/samba/private/krb5.conf /etc/krb5.conf. Но мы не ищем легких путей, поэтому приводим файл /etc/krb5.conf к виду (первые три строки в секции [libdefaults] и есть минимальная конфигурация)

[libdefaults]
default_realm = UNLIS.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = true
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true

v4_instance_resolve = false
v4_name_convert = <
host = <
rcmd = host
ftp = ftp
>
plain = <
something = something-else
>
>
fcc-mit-ticketflags = true
[realms]
UNLIS.LOCAL = <
kdc = debian
admin_server = debian
default_domain = UNLIS.LOCAL
>

[domain_realm]
.unlis.local = UNLIS.LOCAL
unlis.local = UNLIS.LOCAL

4. Настройка NTP.

Минимальная конфигурация /etc/ntp.conf

driftfile /var/lib/ntp/ntp.drift
logfile /var/log/ntp
ntpsigndsocket /var/lib/samba//ntp_signd/

5. Мы строили-строили, и наконец построили!

После перезагрузки выполним ряд тестов

Sharename Type Comment
--------- ---- -------
netlogon Disk
sysvol Disk
IPC$ IPC IPC Service (Samba 4.1.17-Debian)
Domain=[UNLIS] OS=[Unix] Server=[Samba 4.1.17-Debian]

Name: unlis.local
Address: 192.168.1.2

Valid starting Expires Service principal
16.10.2015 15:07:12 17.10.2015 01:07:12 krbtgt/UNLIS.LOCAL@UNLIS.LOCAL
renew until 17.10.2015 15:07:07

Тестируем обновление DNS-записей

Для управления контроллером домена можно использовать средства удаленного администрирования сервера для Windows 7, для Windows XP Pro + вторая часть.

6. Литерадура
  1. Настройка Samba в качестве контроллера домена
  2. Настройка BIND в качестве DNS-сервера контроллера домена
  3. Синхронизация времени

26 Comments

И в файле /var/lib/samba/private/dns.keytab комментируем/раскомментируем строку под нашу версию bind
>>
И в файле /var/lib/samba/private/named.conf комментируем/раскомментируем строку под нашу версию bind

А вообще спасибо за пошаговую инструкцию.

Ну дык английский учить надо мне)

samba: samba: setproctitle not initialized, please either call setproctitle_init() or link against libbsd-ctor.setproctitle not initialized, please either call setproc$

samba: setproctitle not initialized, please either call setproctitle_init() or link against libbsd-ctor.
samba: setproctitle not initialized, please either call setproctitle_init() or link against libbsd-ctor.
samba: samba: setproctitle not initialized, please either call setproctitle_init() or link against libbsd-ctor.setproctitle not initialized, please either call setproc$

В итоге после установке пакета windbind всё заработала

Apt-get install winbind

Добавьте в инструкцию установку пакета winbind

Дописываем в конец файла /etc/bind/named.conf.options

Нужно так: Дописываем в конец файла перед >; /etc/bind/named.conf.options

и еще если копировать команды с вашего мануала то кавычки неправильные копирует.

Я это понял когда добавил комент.
Спасибо за проделанную работу. :)
Есть пару Вопросов:
1. как добавить списком всех пользователей в AD.
2. как настроить хранение профилей пользователей на отдельный сервер, debian 8.
3. как подключить сетевые диски пользователям с разграничением доступа, сервер debian 8).
Пример: пользователю нужно сетевых 2 диска, 1-й для личных данных, а 2-й для общих.

1. Выполнить ldap-запрос?

Спасибо за статью полёт нормальный если не трудно можно статью как сделать резервный AD так же на samba?
Спасибо!

У меня по вашей статье не завелся DNS.
Тест DNS -не проходит. Подскажите что может быть. ставил Debian 8.6

остальные тесты прошли

Спасибо за статью.
Единственная из известных мне статей про настройку КД на Самбе, которая сработала, по крайней мере виндоус АРМ я в домен ввел нормально.
Поскольку я не волшебник, а только учусь, буду благодарен если Вы подскажите такой момент:
Насколько я понимаю в при вводе ПК в домен на DNS-сервер контролера (bind9) в файле db.domen.local должна появиться A-запись рабочей станции. по крайней мере на Windows Server так имеет место быть. А на debian в bind9 никаких изменений не произошло. С чем это может быть связано?

И вот наблюдаю такую штуку:
Когда дописываю в конец файла /etc/bind/named.conf

Достойный контроллер домена на Linux. (Подробный HowTo) (MDS, Ldap, Samba, Postfix, SQUID)

Полезные советы и программы от пользователей нашего форума.

Достойный контроллер домена на Linux. (Подробный HowTo)

Глава I – Настройка сервера и домена.

Добрый вечер. Хотелось бы поделиться с вами одним интересным моим проектом – Контроллер домена на Linux. В данной теме реализован подробный мануал (Howto) по настройке и внедрению рабочего домена с консолью управления – Mandriva Directory Server.

Немного истории:
Вообще я далеко не профи в *nix системах, но всё таки активно интересуюсь и изучаю их. По поводу домена на linux я слышал множество упрёков и похвал. И вот около года назад задался вопросом поднятия домена на Linux. Во первых просто интересно, а во вторых он абсолютно бесплатен, что и требовала компания где я работал. За год перебрал кучу вариантов, кучу сборок С подобной реализацией на сомнительных диструбутивах, поднял несчётное количество ПАКетов ldap SAmba. Но мне казалось что всё это не то. Либо безумно неудобное управление, либо куча лишнего. Куча лишнего было в готовых дистрибутивах (аля-домен за одну минуту.). Было боязно внедрять их в мою не большую и не маленькую компанию(Более 100 рабочих станций в одном только офисе). Во первых неизвестно что и как разработчики делали с дистрибутивом, во вторых поддержка на иностранном языке ))) А самому разгребать последствия не хочется.

Не так давно, наткнулся на статью Oliver Meyer. По сборке и настройке домена на Debian ИСПользуя консоль управления Mandriva Directory Server. Оказалось то что нужно. Ничего лишнего, простота управления доменом. Есть конечно свои минусы и багги.
Статья Оливера была отличной, но имела свои минусы ( да и вообще она была на немецком ). На основе этой статьи я начал писать свой проект.

Собственно мой проект - это перевод статьи Оливера (безумно спасибо ему!) + я добавил что то своё, поправил некоторые моменты из за которых могли возникнуть большие проблемы, и написал несколько дополнений (групповые политики для настройки рабочих сред пользователей, дополнительные модули для консоли и т.д.)
В итоге получилось . Довольно удачный проект который позволяет, даже мало знающему в Linux человеку, поднять рабочий стабильный PDC с удобной консолью управления, а так же в перспективе написания к этой консоли своих собственных модулей на уровне phyton ИЛИ PHP .

Автор проекта - HidX Максим.
Оригинал статьи Оливера - тут.
Смежная тема во флуде - тут.


Заранее прошу прощения за грамматические ошибки и возможный бред в тексте. Писал по ночам. Буду по возможности что то добавлять и исправлять.

Сам процесс

Итак. Для начала ставим сам Debian. У меня под рукой оказался debian-40r5 - я ставлю его. Стандартная установка. При установке выбрал Русский язык и вбил вручную настройки сети.
В ходе проделанной работы по этому мануалу мы получим:

• OpenLdap сервер.
• Samba сервер в качестве первичного контроллера домена (PDC), а так же файлсервера.
• DNS сервер (Bind).
• Корпоративный DHCP сервер.
• Административная консоль управления службами Mandriva Directory Server.
• Групповые политики для автоматической настройки рабочих станций на Windows (начиная c XP).!
• Корпоративный кэширующий прокси сервер (SQUID).
• Расширенный почтовый сервер Postfix, с поддержкой Imap и POP3 сервера (Dovecot), с проверкой на вирусы и фильтрации почты (Amavis, Spamassassin, ClamAV), SMTP сервером, с поддержкой квот, SSL и TSL.
• Сервер синхронизации времени.
• Сервер печати Cups.
• NFS сервер.
• MMC php плагины.

Планы на ближайшее время. Реализовать

• BDC – Дополнительный (резервный) контроллер домена.
• SQUID - Проверка на вирусы, аутентификация по группам домена, модуль статистики для MDS (на основе lightsquid) - УжЕ готово.


Установки сервера


1. Настройка Debian.

Предполагается что установка Debian прошла без сюрпризов и сервер полностью готов для настройки. Первоначально я буду пользоваться текстовым редактором vim, он в отличие от vi более удобен, но чуть позже, когда мы обновим репозитарии, я поставлю редактор ee т.к. он на мой взгляд самый удобный ( и вообще напоминает о freebsd ). Единственное, в Debian редактор ee немного глючит: может не правильно вставить скопированный текст. Так что лучше проверять конфиги после переноса.. или продолжать пользоваться редактором vim.
Для начала проверим сетевые настройки. А именно файлы hosts, hostname, interfaces, resolv.conf

Что бы не было конфликтов при установке пакетов, идём в ребут.

После перезагрузки проверяем что бы хост нэйм был правильным.

Сеть настроили, теперь приступим за обновления репозитариев для Debian. Собственно настройка производится путём редактирования файла /etc/apt/sources.list. В нём нужно вписать путь к серверу с пакетами.

Ещё ниже добавляем ссылку на сервер Mandriva Directory Server. Оттуда будет ставиться сама главная консоль управления доменом и службами:

Ниже добавляем ссылку на сервер с которого будет ставиться такие пакеты как ClamAV & Spamassassin. Ну и + обновления для них от туда же будет подтягиваться:

Ниже добавляем ссылку на сервер бэкпорт с которого будет ставиться самый свежий пакет Devecot:

Сохраняем и выходим из редактирования файла.

В итоге у меня получился вот такой файл репозитариев /etc/apt/sources.list

Обновляем репозитарии командой:

В конце обновления, система может написать ошибку. Что то вроде этого:

Предлагаю не обращать внимания на это, пакеты всё равно будут устанавливаться с проблемных серверов.

Далее настраиваем поддержку ACL, это необходимо для шар самбы, что бы корректно сохранялись права виндовых машин, что бы эти права наследовались, что бы профиль пользователя Windows перемещался корректно ну и т.д.

В этом файле добавляем опцию ”acl” между опциями defaults,acl,errors=remount-ro, в раздел где будут храниться шары самбы сервера. В моём случае это раздел ”/”.

Далее нужно перемонтировать этот раздел:

После исполнения этой команды должен появиться список разделов с различными опциями. В моём разделе должна стоять опция acl, это означает что поддержка acl включена.
/dev/sda1 on / type ext3 (rw, acl ,errors=remount-ro)

2. Установка необходимого программного обеспечения.

Для начала установим простые утилиты для удобства настройки сервера. Их у меня будет три – это текстовый редактор ee, файловый менеджер Midnight commander и SSH сервер для удобства администрирования. Midnight commander – что то вроде Norton Commander, с ним легко и быстро можно перемещаться по файловой системе сервера, хоть в данном мануале использовать его я практически не буду, тем не менее я считаю что его нужно поставить.

apt-get install ee
apt-get install mc
apt-get install ssh openssh-server

Далее буду редактировать файлы через ee.

После простых утилит, ставим ntp сервер. Он нужен для синхронизации времени. У сервака будет точное время, а так же все рабочии станции пользователей будут синхронизировать часы с этим сервером.

apt-get install ntp

Итак, теперь пришло время установки основного программного обеспечения сервера. На этих программах и будет всё держаться.

К слову – пакет mkisofs нужен для утилиты бэйкапа шар самбы, так что важно его поставить.

Ставим пакеты dovecot

apt-get install -t etch-backports dovecot-common dovecot-imapd dovecot-pop3d

dpkg -i dcc-client_1.2.74-2_i386.deb dcc-common_1.2.74-2_i386.deb

3. Конфигурация домена.

Slapd

Всё, все пакеты и компоненты установлены. Теперь необходимо их настроить. Сначало будем настраивать самое трудное это slapd, samba, nss и т.д. от них зависит работоспособность сервера.

Переносим схемы MMC, которые мы будем прописывать в LDAP. Всего их 6, это схемы dns, dhcp, samba, mail, mmc, printer. По их названию можно понять для чего каждая схема служит.

cp /usr/share/doc/python-mmc-base/contrib/ldap/mmc.schema /etc/ldap/schema/
cp /usr/share/doc/python-mmc-base/contrib/ldap/mail.schema /etc/ldap/schema/
zcat /usr/share/doc/python-mmc-base/contrib/ldap/samba.schema.gz > /etc/ldap/schema/samba.schema
zcat /usr/share/doc/python-mmc-base/contrib/ldap/printer.schema.gz > /etc/ldap/schema/printer.schema
zcat /usr/share/doc/python-mmc-base/contrib/ldap/dnszone.schema.gz > /etc/ldap/schema/dnszone.schema
zcat /usr/share/doc/python-mmc-base/contrib/ldap/dhcp.schema.gz > /etc/ldap/schema/dhcp.schema

Далее пропишем в конфиге Ldap эти схемы

там прямо ниже уже прописанных схем (include /etc/ldap/schema/inetorgperson.schema) вставляем следующее:

Сохраняем и выходим из файла.
Далее нужно получить наш админский пароль от LDAP в шифрованном виде. Шифруем с помощью SSHA.

slappasswd -s example

Я получил вот такую строчку zgbmt9l5XDohI+3FquZbTRLWsJD2+3Pg (у вас он будет другой) открываем блокнот, и сохраняем эту строчку туда, она нам понадобиться. Далее мы снова открываем конфиг Ldap.

Находим в этом же файле строку access to attrs=userPassword,shadowLastChange и изменяем её на следующее:

Далее находим строчку loglevel 0 и вписываем вместо 0 число 256. Это нужно что бы работал журнал в mmc.
В итоге у меня получился вот такой конфиг файла slapd.conf - Сверьте со своим конфигом! :

Теперь правил файл /etc/ldap/ldap.conf добавляя в самый его низ две строчки:

Настройка ldap окончена, рестартим его:

Да, кстати по поводу журналов в mmc. Мы так же должны добавить в файл /etc/syslog.conf следующее (Где то в середине, я думаю вы поймёте куда добавлять):

SAMBA

Теперь перейдём к настройке SAMBA:
Стапаем самбу что бы не было конфликтов.
/etc/init.d/samba stop

Копируем конфиг самбы который идёт в состав mmc:
cp /usr/share/doc/python-mmc-base/contrib/samba/smb.conf /etc/samba/

И переходим к его редактированию:
ee /etc/samba/smb.conf

Конфиг должен быть таким (подставьте свои значения) - Сверьте со своим конфигом! Обязательно проследите что бы последовательность строчек была такой же как в эталоном конфиге (иначе могут быть проблемы.) :

Сохраняем конфиг и выходим.

Теперь нужно протестировать конфиг самбы на ошибки командой testparm:


Всё хорошо. Идём дальше.
Теперь дадим самбе права на чтение ldap базы.
smbpasswd -w example
сервер ответит

Теперь получим SID нашего домена:

net getlocalsid ADSL

В ответ он мне выдаст номер Sid’a. Сохраните его в какой ни будь файл. Он нам понадобится очень скоро.

Проверяем регистрацию сида в Ldap:
slapcat | grep sambaDomainName
В ответ что то типа:

Ура, самба закончилась. Перейдём к конфигурации smbLdap tools. Это так же важная часть домена:
Для начала созданим файлы конфигурации для smbldap-tools.

Сейчас будем настраивать главный файл конфиграции smbldap-tools. В него нужно вставить номер нашего SID , котопрый мы получили чуть выше… А так же подставить свои значения.

Ставим права на конфиг файлы smbldap-tools:

chmod 0644 /etc/smbldap-tools/smbldap.conf
chmod 0600 /etc/smbldap-tools/smbldap_bind.conf

Так. Всё готово. Теперь нужно наполнить нашу ldap базу. А так же создать глобальный аканут администратора ldap. (Administrator).

smbldap-populate -m 512 -a Administrator

Вас попросят ввести пароль администратора. Я ввёл example. Так же, в будующем, нужно будет изменить uid номер учётной записи администратора. Иначе будут проблемы с почтой для этого акаунта.

Дополнительно мы добавим Administrator в группу Domain Users.

smbldap-usermod -u 3000 -G "Domain Users" Administrator

Так. Теперь конфигурируем NSS LDAP. Что бы иметь позможность получать списки и данные Ldap.
Копируем предорженый файл mmc в /etc/nsswitch.conf

cp /usr/share/doc/python-mmc-base/contrib/ldap/nsswitch.conf /etc/nsswitch.conf

После этого создадим необходимые директории для samba. Которые мы указывали в её конфиге:

mkdir -p /home/samba/shares/public/
mkdir /home/samba/netlogon/
mkdir /home/samba/profiles/
mkdir /home/samba/partage/
mkdir /home/samba/archives/

И зададим им соответствующие права:
chown -R :"Domain Users" /home/samba/
chmod 777 /var/spool/samba/ /home/samba/shares/public/
chmod 755 /home/samba/netlogon/
chmod 770 /home/samba/profiles/ /home/samba/partage/
chmod 700 /home/samba/archives/

PAM Ldap

Сделали почти половину. Сейчас займёмся Конфигурацией PAM LDAP. Тут нужно будет добавить поддержку ldap в Pam, путём добавления некоторых строк в файлы pam. Эти файлы должны иметь примерно следующий вид:

После этой надстроки. Мы должны ОБЯЗАТЕЛЬНО перезагрузиться.

Итак. Кульминационный момент. После перезагрузки. Мы должны дать право группе Domain Admins добавлять машины в домен (обязательно в команде замените имя домена на свой.):

net -U Administrator rpc rights grant 'ADSL\Domain Admins' SeMachineAccountPrivilege

Если после выполнения команды ошибок не обнаружилось, то всё хорошо. Настройка домена прошла успешно, теперь остались мелочи… настройка вспомогательных служб сервера.
Если же были выявлены ошибки. То советую не продолжать дальнейшие действия, а искать проблему вашей ошибку. Скорей всего что то не правильно в конфиге samba и slapd. Обязательно проверте каждую строчку конфига и сравните её с этой же строчкой моего мануала.


4. Конфигурация дополнительных служб домена.


Mail

Так. Домен мы настроили, это уже пол дела. Теперь будем настраивать дополнительные службы домена. Это почта, прокси сервер, антивирус, антиспам и т.д. А начнём мы пожалуй с почтового сервера.
Настроим протокол безопасности SSL. Для этого создадим файл конфигурации:

Теперь создадим наш SSL сертификат, используя наш файл конфигурации:
openssl req -x509 -new -config /etc/ssl/mail.cnf -out /etc/ssl/certs/mail.pem -keyout /etc/ssl/private/mail.key -days 365 -nodes -batch
Так. Наш ключик создан. Теперь поставим на него права. Что бы только root имел право его читать:
chmod 600 /etc/ssl/private/mail.key

Далее, настраиваем пакет аутентификации SASL. Его настройка нужна т.к. почтовый сервер Postfix использует его для атентификации юзеров в LDAP.

mkdir -p /var/spool/postfix/var/run/saslauthd/
ee /etc/default/saslauthd

Подключение Debian GNU/Linux 10 (Buster) к домену Active Directory с помощью SSSD/realmd и настройка PAM для аутентификации и авторизации sshd/Apache


Подробное описание процедуры присоединения компьютера с Debian GNU/Linux к домену Active Directory с помощью SSSD и realmd можно найти здесь. Рекомендуется предварительно ознакомится с этим материалом, а также с замечаниями по настройке SSSD в Debian GNU/Linux.

Здесь приведён сокращённый план действий по присоединению Debian GNU/Linux 10 (Buster) к домену Active Directory с помощью SSSD и realmd.

Подготовка

Выполним команду присвоения полного доменного имени в качестве имени хоста, так как по умолчанию в Debian 10 в качестве hostname используется имя узла без доменной части. Это позволит избежать некоторых проблем при вводе компьютера в домен с помощью realmd:

Дополнительно необходимо отредактировать файл /etc/hosts и указать там в качестве IP адреса хоста адрес одного из сетевых интерфейсов. То есть, строку вида:

заменяем на строку вида:

Если требуется, предварительно создаём в домене учётную запись компьютера

Установка realmd/SSSD и ввод в домен

Устанавливаем пакеты необходимые для ввода в домен:

Выполняем обнаружение информации о домене, которое должно отработать без ошибок:

Настраиваем информацию о компьютере, которая будет передана в каталог Active Directory при присоединении к домену.

Выполняем присоединение компьютера к домену Active Directory:

Поддержка Kerberos

Устанавливаем клиентское ПО поддержки Kerberos:

Проверяем наличие и содержимое keytab-файла. В нём, как минимум, должны быть записи типа host/*

Настраиваем конфигурацию клиента Kerberos:

Пример настроенного файла:

Конфигурация SSSD

Настраиваем конфигурацию SSSD:

Пример настроенной конфигурации:

Перезапускаем службу с очисткой кеша sssd:

Выполняем проверку возможности извлечения информации из каталога Active Directory.

Получаем информацию о любой доменной группе безопасности:

Получаем информацию о любом доменной пользователе:

PAM и домашний каталог

Предварительно рекомендуется ознакомится со статьёй Разграничение прав доступа к Linux-системе и её сервисам через доменные группы безопасности с помощью SSSD и PAM, где более подробно описан смысл всех производимых далее настроек системы.

Настраиваем базовую конфигурацию PAM

Правим файл common-session :

В конец файла добавим строку, позволяющую создать домашний каталог в случае его отсутствия:

PAM и доступ на консоль

Создадим свой файл для перечисления учётных записей (доменных и локальных), которым будет разрешёно подключение к консоли компьютера:

Ограничим доступ к файлу:

Отредактируем модуль PAM, определяющий права доступа к консоли компьютера:

Вставляем перед блоком со строкой @include common-account ссылку на вызов авторизации через созданный нами файл ( access-groups-to-login )

Выполняем проверку входа в систему, используя разрешённую и неразрешённую доменную учётную запись. При этом отслеживаем происходящее в механизмах аутентификации/авторизации через системный лог auth.log

PAM и доступ к SSH

Отредактируем PAM-модуль, отвечающий за настроку авторизации при подключении через службу сервера SSH

Вставляем перед блоком со строкой @include common-account ссылку на вызов авторизации через созданный нами файл ( access-groups-to-login )

Выполняем проверку входа в систему через SSH, используя разрешённую и неразрешённую доменную учётную запись. При этом отслеживаем происходящее в механизмах аутентификации/авторизации через системный лог auth.log

PAM и доступ к Apache

Пример создания собственного PAM-модуля для других служб, например, для организации доменной аутентфикации/авторизации в веб-сервере Apache:

Создадим свой файл для перечисления учётных записей (доменных и локальных), которым будет разрешёно подключение к веб-серверу:

Создадим конфигурационный файл - PAM-модуль

Ограничим доступ к файлам:

SSHD и PuTTy

Подробно про пример настройки сквозной проверки подлинности при использовании PuTTY читаем в статье SSO-подключение к серверу Ubuntu Server 14.04 LTS по протоколу SSH с помощью PuTTY с компьютера на базе Windows в домене Active Directory

Включаем сквозную проверку подлинности для прозрачного подключения с PuTTY

Перезапустим службу сервера

Разрешаем sudo для доменных учётных записей.

Создадим отдельный файл для выдачи прав выполнять sudo доменным учётным записям:

Пример содержимого файла с одной доменной группой доступа, которой разрешено выполнять sudo без ограничений:

Ограничим доступ к файлу

Расширение keytab

В случае необходимости настроки Kerberos аутентификациии в домене Active Directory, возможно потребуется дополнительная настройка keytab-файла на Linux системе.

Добавляем записи поддержки Kerberos для веб-сервера (при запросе хешей указываем те же, что указаны для уже существующих SPN-записей)

Перечиваем результат и записываем изменения в keytab-файл:

Проверяем есть ли нужная SPN-запись в домене (на Windows-машине, присоединённой к домену)

Если записи нет, можем добавить (требуются права уровня доменный администратор)

Apache и PAM с Kerberos

Настраиваем конфигурацию Apache для поддержки аутентификации Kerberos

Установка пакетов поддержки PAM/Kerberos в Apache:

Включение модулей Apache:

Пример файла конфигурации Apache:

В данном примере в Apache для доступа к веб-серверу Apache вызывается настроенный нами ранее PAM-модуль apache2 (через файл /etc/pam.d/apache2 ) PAM-модуль в свою очередь вызывает для процедуры аутентификации SSSD и выполняет авторизацию через файл /etc/security/access-groups-to-web

Не забываем на строне Linux-сервера настроить доступ к keytab-файлу

Перезепускаем службу веб-сервера и проверяем результат:

Финиш

По завершении всех процедур настройки можно вернуть имя хоста в исходное состояние, «привычное» для Debain.

После завершения настройки перезагружаем Linux-сервере, чтобы убедиться в успешном автоматическом запуске SSSD и последующей корректной работы аутентификации/авторизации на базе доменных учётных записей.

Дополнительные источники информации:

Проверено на следующих конфигурациях:


Автор первичной редакции:
Алексей Максимов
Время публикации: 13.09.2019 16:43

Читайте также: