Найти в Дзене
Евгений Лощаков

Настройка контроллера домена AD DC на платформе Debian

Active Directory Domain Services (AD DS) — это служба каталогов от Microsoft, которая предоставляет централизованную систему для управления пользователями, компьютерами, группами и другими сетевыми ресурсами в доменной среде. Samba 4 — это реализация протоколов Active Directory с открытым исходным кодом, которая включает: Экономические: Технические: Операционные: Корпоративные сети: Образовательные учреждения: Государственные организации: Минимальные требования: Сетевые требования: # Обновление системы sudo apt update && sudo apt upgrade -y # Установка необходимых утилит sudo apt install -y curl wget nano net-tools dnsutils chrony # Настройка hostname sudo hostnamectl set-hostname dc1.company.local # Проверка hostname hostname hostname -f Как настроить сетевой интерфейс можно посмотреть в этой статье Необходимо задать статический IP-адрес, маску, в качестве DNS-сервера указать IP-адрес домена-сервера, а также указать имя домена. # Проверка настроек ip addr show
ping -c 3 google.com
Оглавление

🔹 Теоретическая часть: Основы Active Directory

1.1. Что такое Active Directory Domain Services?

Active Directory Domain Services (AD DS) — это служба каталогов от Microsoft, которая предоставляет централизованную систему для управления пользователями, компьютерами, группами и другими сетевыми ресурсами в доменной среде.

Компоненты Active Directory:

  • Domain Controller (DC) — сервер, хранящий базу данных AD
  • Domain — логическая группа сетевых объектов
  • Forest — коллекция доменов
  • Tree — иерархия доменов с общим пространством имен
  • OU (Organizational Unit) — контейнер для организации объектов

1.2. Архитектура Samba 4 AD DC

Samba 4 — это реализация протоколов Active Directory с открытым исходным кодом, которая включает:

  • Full AD DC functionality — полная совместимость с Windows Server
  • DNS сервер — встроенная служба DNS
  • Group Policy — поддержка групповых политик
  • Kerberos — система аутентификации
  • LDAP — протокол доступа к каталогам

1.3. Преимущества развертывания AD DC на Debian

Экономические:

  • ✅ Отсутствие лицензионных отчислений
  • ✅ Бесплатное использование и распространение
  • ✅ Снижение TCO (Total Cost of Ownership)

Технические:

  • ✅ Стабильность и надежность Debian
  • ✅ Гибкость конфигурации
  • ✅ Интеграция с существующей Linux-инфраструктурой
  • ✅ Поддержка смешанных сред (Windows/Linux)

Операционные:

  • ✅ Единая точка управления аутентификацией
  • ✅ Централизованное управление политиками
  • ✅ Упрощенное развертывание приложений
  • ✅ Улучшенная безопасность

1.4. Сценарии применения

Корпоративные сети:

  • Управление пользователями и компьютерами Windows
  • Централизованная аутентификация
  • Применение групповых политик
  • Единая система DNS

Образовательные учреждения:

  • Управление студенческими учетными записями
  • Контроль доступа к ресурсам
  • Автоматизация развертывания ПО

Государственные организации:

  • Соответствие требованиям безопасности
  • Аудит и мониторинг доступа
  • Разграничение прав доступа

🔹 Практическая часть: Установка и настройка Samba 4 AD DC

🔹 2. Подготовка системы

2.1. Системные требования

Минимальные требования:

  • Debian 11 (Bullseye) или новее
  • 2 GB RAM (рекомендуется 4+ GB)
  • 20 GB свободного места на диске
  • Статический IP-адрес
  • Правильно настроенное DNS имя

Сетевые требования:

  • Статический IP-адрес
  • Постоянное сетевое подключение
  • Возможность настроить обратные зоны DNS

2.2. Предварительная настройка системы

# Обновление системы

sudo apt update && sudo apt upgrade -y

# Установка необходимых утилит

sudo apt install -y curl wget nano net-tools dnsutils chrony

# Настройка hostname

sudo hostnamectl set-hostname dc1.company.local

# Проверка hostname

hostname

hostname -f

2.3. Настройка сетевого интерфейса

Как настроить сетевой интерфейс можно посмотреть в этой статье

Необходимо задать статический IP-адрес, маску, в качестве DNS-сервера указать IP-адрес домена-сервера, а также указать имя домена.

# Проверка настроек

ip addr show
ping -c 3 google.com

-2

2.4. Настройка времени (NTP)

# Установка и настройка chrony

sudo apt install -y chrony

# Редактирование конфигурации

sudo nano /etc/chrony/chrony.conf

Добавить серверы времени:

pool 0.debian.pool.ntp.org iburst

pool 1.debian.pool.ntp.org iburst

pool 2.debian.pool.ntp.org iburst

pool 3.debian.pool.ntp.org iburst

# Разрешение клиентам синхронизации

allow 192.168.1.0/24

-3

Запуск службы:

sudo systemctl enable chrony

sudo systemctl start chrony

# Проверка синхронизации

chronyc sources

chronyc tracking

-4

🔹 3. Установка Samba 4 AD DC

# Установка Samba и зависимостей

sudo apt install -y samba samba-dsdb-modules samba-vfs-modules \

winbind libnss-winbind libpam-winbind libpam-krb5 krb5-config \

krb5-user dnsutils chrony

В область по умолчанию прописываем имя домена по типу

company.local

-5

в серверы Kerberos для вашей области прописываем имя вашего сервера

-6

далее оставляем все по умолчанию

# Установка дополнительных утилит

sudo apt install -y attr acl

3.2. Остановка и отключение служб

# Остановка служб Samba

sudo systemctl stop samba-ad-dc

sudo systemctl stop smbd

sudo systemctl stop nmbd

sudo systemctl stop winbind

# Отключение автозапуска

sudo systemctl disable samba-ad-dc

sudo systemctl disable smbd

sudo systemctl disable nmbd

sudo systemctl disable winbind

# Удаление конфигурации по умолчанию

sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.original

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

# Редактирование конфигурации Kerberos

sudo nano /etc/krb5.conf

В данном файле прописываем имя нашего домена и сервера домена.

[libdefaults]

default_realm = COMPANY.LOCAL

dns_lookup_realm = true

dns_lookup_kdc = true

[realms]

COMPANY.LOCAL = {

kdc = dc1.company.local

admin_server = dc1.company.local

default_domain = company.local

}

[domain_realm]

.company.local = COMPANY.LOCAL

company.local = COMPANY.LOCAL

-7

🔹 4. Настройка контроллера домена

4.1. Провизионинг домена

# Создание нового домена Active Directory

sudo samba-tool domain provision --use-rfc2307 --interactive

Ответы на вопросы (в квадратных скобочках указывается ответ по умолчанию, и если он вам подходит, просто нажмите «Ввод»):

Realm: COMPANY.LOCAL

Domain: COMPANY

Server Role: dc

DNS backend: SAMBA_INTERNAL

DNS forwarder: 77.88.8.8

Administrator password: [надежный пароль]

-8

4.2. Пояснение параметров провизионинга

-9

4.3. Настройка служб после провизионинга

# Копирование конфигурации Kerberos

sudo cp /var/lib/samba/private/krb5.conf /etc/krb5.conf

# Запуск службы Samba AD DC

sudo systemctl enable samba-ad-dc

sudo systemctl start samba-ad-dc

# Проверка статуса

sudo systemctl status samba-ad-dc

4.4. Настройка DNS клиента

На клиенте, который будет подключаться к домену, необходимо в DNS указать IP-адрес сервера.

На Debian

-10

В итоге в файле /etc/resolv.conf должно выводиться следующее:

-11

Если в search и nameserver выдает не те данные, перезагрузите компьютер.

На WIndows 10

-12

4.5. Настройка файервола для работы домена в Debian

Правильная настройка файервола критически важна для обеспечения безопасности домена при сохранении необходимой доступности служб. Рассмотрим настройку как стандартного iptables, так и firewalld.

Настройка через UFW (стандартный файервол)

UFW — это простой интерфейс для управления iptables.

Установка и активация

sudo apt update

sudo apt install ufw

sudo ufw enable

Необходимые порты для Samba/AD

Для корректной работы домена нужно открыть следующие порты:

  • UDP 137, 138 — NetBIOS
  • TCP 139 — SMB
  • TCP 445 — SMB2/SMB3
  • UDP 389 — LDAP
  • TCP 389 — LDAP
  • UDP 636 — LDAPS
  • TCP 636 — LDAPS
  • UDP 88 — Kerberos
  • TCP 88 — Kerberos
  • UDP 53 — DNS
  • TCP 53 — DNS

Команды для открытия портов

sudo ufw allow 137/udp

sudo ufw allow 138/udp

sudo ufw allow 139/tcp

sudo ufw allow 445/tcp

sudo ufw allow 389/tcp

sudo ufw allow 389/udp

sudo ufw allow 636/tcp

sudo ufw allow 636/udp

sudo ufw allow 88/tcp

sudo ufw allow 88/udp

sudo ufw allow 53/tcp

sudo ufw allow 53/udp

Настройка через Firewalld

Firewalld предоставляет более гибкие возможности управления сетевыми зонами.

Установка и активация

sudo apt install firewalld

sudo systemctl enable firewalld

sudo systemctl start firewalld

Настройка необходимых служб

sudo firewall-cmd --permanent --add-service=samba

sudo firewall-cmd --permanent --add-service=ldap

sudo firewall-cmd --permanent --add-service=kerberos

sudo firewall-cmd --permanent --add-service=dns

Открытие конкретных портов

sudo firewall-cmd --permanent --add-port=137/udp

sudo firewall-cmd --permanent --add-port=138/udp

sudo firewall-cmd --permanent --add-port=139/tcp

sudo firewall-cmd --permanent --add-port=445/tcp

sudo firewall-cmd --permanent --add-port=389/tcp

sudo firewall-cmd --permanent --add-port=389/udp

sudo firewall-cmd --permanent --add-port=636/tcp

sudo firewall-cmd --permanent --add-port=636/udp

sudo firewall-cmd --permanent --add-port=88/tcp

sudo firewall-cmd --permanent --add-port=88/udp

sudo firewall-cmd --permanent --add-port=53/tcp

sudo firewall-cmd --permanent --add-port=53/udp

Применение изменений

sudo firewall-cmd --reload

Проверка конфигурации

После настройки важно проверить, что все порты открыты корректно:

Для UFW:

sudo ufw status verbose

Для Firewalld:

sudo firewall-cmd --list-all

-13

🔹 5. Проверка работы домена

5.1. Тестирование Kerberos

# Получение билета Kerberos

kinit administrator@COMPANY.LOCAL

# Просмотр билетов

klist

# Тестирование аутентификации

kinit -V administrator@COMPANY.LOCAL

-14

5.2. Тестирование DNS

# Проверка DNS записей

nslookup dc1.company.local

nslookup company.local

nslookup -type=SRV _ldap._tcp.company.local

nslookup -type=SRV _kerberos._udp.company.local

# Проверка обратных записей

nslookup 192.168.1.1

-15
-16
-17

5.3. Тестирование LDAP

Установка утилиты:

apt install ldap-utils

# Поиск в LDAP

ldapsearch -H ldap://dc1.company.local -x -b "dc=company,dc=local"

-18

# Аутентифицированный поиск

ldapsearch -H ldap://dc1.company.local -D "administrator@company.local" -W -b "dc=company,dc=local"

-19

5.4. Проверка работы Samba

# Проверка домена

sudo samba-tool domain level show

# Проверка информации о домене

sudo samba-tool domain info 192.168.1.1

# Проверка списка пользователей

sudo samba-tool user list

# Проверка рабочей группы

sudo samba-tool group list

-20

🔹 6. Настройка дополнительных служб

6.1. Настройка NTP сервера

# Редактирование конфигурации chrony

sudo nano /etc/chrony/chrony.conf

# Внешние серверы времени

pool 0.debian.pool.ntp.org iburst

pool 1.debian.pool.ntp.org iburst

# Разрешение клиентам домена

allow 192.168.1.0/24

# Локальные часы как резервный источник

#server 127.0.0.1 iburst

#local stratum 10

Перезапуск службы:

sudo systemctl restart chrony

6.2. Настройка DNS зон

# Создание прямой зоны (уже создана автоматически)

sudo samba-tool dns zonelist 192.168.1.1 -U administrator

# Создание обратной зоны

sudo samba-tool dns zonecreate 192.168.1.1 1.168.192.in-addr.arpa -U administrator

# Добавление PTR записи

sudo samba-tool dns add 192.168.1.1 1.168.192.in-addr.arpa 10 PTR dc1.company.local -U administrator

6.3. Настройка DHCP сервера (опционально)

# Установка ISC DHCP сервера

sudo apt install -y isc-dhcp-server

# Редактирование конфигурации

sudo nano /etc/dhcp/dhcpd.conf

# Конфигурация DHCP

authoritative;

subnet 192.168.1.0 netmask 255.255.255.0 {

range 192.168.1.100 192.168.1.200;

option routers 192.168.1.1;

option subnet-mask 255.255.255.0;

option domain-name "company.local";

option domain-name-servers 192.168.1.1;

option netbios-name-servers 192.168.1.1;

default-lease-time 600;

max-lease-time 7200;

}

🔹 7. Управление доменом

7.1. Управление пользователями

# Создание пользователя

sudo samba-tool user create ivanov "Password123!" --given-name="Иван" --surname="Иванов"

# Создание пользователя с дополнительными атрибутами

sudo samba-tool user create petrova "Password123!" --given-name="Мария" --surname="Петрова" --department="IT" --title="Системный администратор"

# Сброс пароля пользователя

sudo samba-tool user setpassword ivanov --newpassword="NewPassword123!"

# Включение/отключение пользователя

sudo samba-tool user enable ivanov

sudo samba-tool user disable petrova

# Просмотр информации о пользователе

sudo samba-tool user show ivanov

-21

7.2. Управление группами

# Создание группы

sudo samba-tool group add "IT Admins"

sudo samba-tool group add "Sales Users"

# Добавление пользователя в группу

sudo samba-tool group addmembers "IT Admins" ivanov

sudo samba-tool group addmembers "Sales Users" petrova

# Просмотр членов группы

sudo samba-tool group listmembers "IT Admins"

# Создание OU (Organizational Unit)

sudo samba-tool ou create "OU=IT,DC=company,DC=local"

sudo samba-tool ou create "OU=Sales,DC=company,DC=local"

-22

7.3. Управление компьютерами

Присоединение компьютера к домену (с клиента)

Перед тем как ввести в домен, убедитесь, что клиентская машина имеет IP-адрес, адрес DNS-сервера, где должен быть указан IP-адрес домена.

-23

В Windows открываем проводник, нажимаем ПКМ по «Этот компьютер» и выбираем свойства, там ищем пункт «Переименовать этот ПК (для опытных пользователей)».

-24

В появившемся окне выбираем «Изменить».

-25

В ней изменяем имя компьютера на подходящее, выбираем селектор «домена» и в нем прописываем имя вашего домена.

-26

Если настройки домена и сети правильные, то выскочит сообщение с просьюой ввести логин и пароль администратора домена

-27

И если все верно появится следующее сообщение

-28

После этого перезагрузите компьютер и войдите под доменным пользователем.

-29
-30

Теперь компьютер подключен к домену.

# Просмотр присоединенных компьютеров

sudo samba-tool computer list

-31

# Удаление компьютера из домена

sudo samba-tool computer delete COMPUTERNAME

🔹 8. Настройка групповых политик

8.1. Установка инструментов управления GPO

# Установка RSAT инструментов (на Windows машине)

# Скачать RSAT для Windows 10/11

# Или использование samba-tool для базового управления

8.2. Создание базовых политик через samba-tool

# Создание GPO (ограниченная поддержка)

sudo samba-tool gpo list

# Управление политиками паролей

sudo samba-tool domain passwordsettings show

-32

sudo samba-tool domain passwordsettings set --min-pwd-length=8

sudo samba-tool domain passwordsettings set --history-length=24

8.3. Настройка политик через Windows RSAT

  1. Установите RSAT на Windows 10/11
  2. Откройте "Group Policy Management"
  3. Подключитесь к домену company.local
  4. Создайте и настройте необходимые политики

🔹 9. Мониторинг и обслуживание

9.1. Мониторинг служб

# Проверка статуса служб

sudo systemctl status samba-ad-dc

sudo systemctl status chrony

# Просмотр логов Samba

sudo tail -f /var/log/samba/log.samba

# Мониторинг DNS запросов

sudo tail -f /var/log/samba/log.dns

9.2. Резервное копирование

#!/bin/bash

# backup-samba-ad.sh

BACKUP_DIR="/backup/samba-ad"

DATE=$(date +%Y%m%d_%H%M%S)

mkdir -p $BACKUP_DIR

# Резервное копирование конфигурации Samba

sudo tar -czf $BACKUP_DIR/samba-config-$DATE.tar.gz /etc/samba/

# Резервное копирование базы данных Samba

sudo tar -czf $BACKUP_DIR/samba-db-$DATE.tar.gz /var/lib/samba/

# Экспорт пользователей и групп

sudo samba-tool user list > $BACKUP_DIR/users-$DATE.txt

sudo samba-tool group list > $BACKUP_DIR/groups-$DATE.txt

echo "Резервные копии созданы в $BACKUP_DIR"

9.3. Восстановление из резервной копии

# Остановка служб

sudo systemctl stop samba-ad-dc

# Восстановление конфигурации

sudo tar -xzf /backup/samba-ad/samba-config-20231215.tar.gz -C /

# Восстановление базы данных

sudo tar -xzf /backup/samba-ad/samba-db-20231215.tar.gz -C /

# Запуск служб

sudo systemctl start samba-ad-dc

🔹 10. Интеграция с Linux клиентами

10.1. Присоединение Linux клиента к домену

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

sudo apt install -y realmd sssd sssd-tools libnss-sss libpam-sss adcli samba-common-bin oddjob oddjob-mkhomedir packagekit

# Присоединение к домену

sudo realm discover company.local

-33

sudo realm join --user=administrator company.local

# Настройка автоматического создания домашних директорий

sudo pam-auth-update --enable mkhomedir

10.2. Проверка присоединения

# Проверка членства в домене

realm list

# Тестирование аутентификации

id administrator@company.local

getent passwd administrator@company.local

getent group "domain users"

# Вход доменного пользователя

su - administrator@company.local

🔹 11. Устранение неисправностей

11.1. Типичные проблемы и решения

-34

11.2. Команды диагностики

# Проверка сетевой связности

ping dc1.company.local

nslookup company.local

# Проверка Kerberos

kinit administrator@COMPANY.LOCAL

klist

# Проверка LDAP

ldapsearch -H ldap://dc1.company.local -x -b "" -s base

# Проверка Samba

sudo smbclient -L localhost -U administrator

🔹 Заключение

Итоги настройки:

Установлен и настроен полнофункциональный контроллер домена
Настроены службы DNS, Kerberos и LDAP
Создана базовая структура домена с пользователями и группами
Настроена интеграция с Windows и Linux клиентами
Реализованы механизмы резервного копирования

Преимущества решения:

  • Полная совместимость с инфраструктурой Windows
  • Централизованное управление пользователями и компьютерами
  • Единая точка аутентификации для всех служб
  • Бесплатное решение с открытым исходным кодом
  • Высокая стабильность и надежность Debian

Рекомендации по эксплуатации:

  1. Регулярно обновляйте систему и пакеты Samba
  2. Мониторьте логи на предмет подозрительной активности
  3. Создавайте резервные копии перед внесением изменений
  4. Тестируйте новые политики в изолированной среде
  5. Документируйте изменения в конфигурации домена

Дальнейшие шаги:

  1. Настройка дополнительных контроллеров домена для отказоустойчивости
  2. Внедрение групповых политик для централизованного управления
  3. Настройка сертификатов и SSL для безопасных соединений
  4. Интеграция с дополнительными службами (Exchange, SharePoint)
  5. Настройка мониторинга и оповещений

Команда для ежедневной проверки здоровья домена:

#!/bin/bash

echo "=== Domain Health Check ==="

echo "Time sync: $(chronyc tracking | grep 'System time')"

echo "DNS resolution: $(nslookup dc1.company.local 2>&1 | grep 'Name:')"

echo "Kerberos: $(klist 2>&1 | grep 'Default principal')"

echo "Samba DC: $(systemctl is-active samba-ad-dc)"

echo "Users: $(samba-tool user list 2>/dev/null | wc -l)"

Теперь ваш контроллер домена Active Directory на Debian готов к работе и обеспечивает централизованное управление сетевой инфраструктурой!