🔹 Теоретическая часть: Основы 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.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
Запуск службы:
sudo systemctl enable chrony
sudo systemctl start chrony
# Проверка синхронизации
chronyc sources
chronyc tracking
🔹 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
в серверы Kerberos для вашей области прописываем имя вашего сервера
далее оставляем все по умолчанию
# Установка дополнительных утилит
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
🔹 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: [надежный пароль]
4.2. Пояснение параметров провизионинга
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
В итоге в файле /etc/resolv.conf должно выводиться следующее:
Если в search и nameserver выдает не те данные, перезагрузите компьютер.
На WIndows 10
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
🔹 5. Проверка работы домена
5.1. Тестирование Kerberos
# Получение билета Kerberos
kinit administrator@COMPANY.LOCAL
# Просмотр билетов
klist
# Тестирование аутентификации
kinit -V administrator@COMPANY.LOCAL
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
5.3. Тестирование LDAP
Установка утилиты:
apt install ldap-utils
# Поиск в LDAP
ldapsearch -H ldap://dc1.company.local -x -b "dc=company,dc=local"
# Аутентифицированный поиск
ldapsearch -H ldap://dc1.company.local -D "administrator@company.local" -W -b "dc=company,dc=local"
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
🔹 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
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"
7.3. Управление компьютерами
Присоединение компьютера к домену (с клиента)
Перед тем как ввести в домен, убедитесь, что клиентская машина имеет IP-адрес, адрес DNS-сервера, где должен быть указан IP-адрес домена.
В Windows открываем проводник, нажимаем ПКМ по «Этот компьютер» и выбираем свойства, там ищем пункт «Переименовать этот ПК (для опытных пользователей)».
В появившемся окне выбираем «Изменить».
В ней изменяем имя компьютера на подходящее, выбираем селектор «домена» и в нем прописываем имя вашего домена.
Если настройки домена и сети правильные, то выскочит сообщение с просьюой ввести логин и пароль администратора домена
И если все верно появится следующее сообщение
После этого перезагрузите компьютер и войдите под доменным пользователем.
Теперь компьютер подключен к домену.
# Просмотр присоединенных компьютеров
sudo samba-tool computer list
# Удаление компьютера из домена
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
sudo samba-tool domain passwordsettings set --min-pwd-length=8
sudo samba-tool domain passwordsettings set --history-length=24
8.3. Настройка политик через Windows RSAT
- Установите RSAT на Windows 10/11
- Откройте "Group Policy Management"
- Подключитесь к домену company.local
- Создайте и настройте необходимые политики
🔹 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
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. Типичные проблемы и решения
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
Рекомендации по эксплуатации:
- Регулярно обновляйте систему и пакеты Samba
- Мониторьте логи на предмет подозрительной активности
- Создавайте резервные копии перед внесением изменений
- Тестируйте новые политики в изолированной среде
- Документируйте изменения в конфигурации домена
Дальнейшие шаги:
- Настройка дополнительных контроллеров домена для отказоустойчивости
- Внедрение групповых политик для централизованного управления
- Настройка сертификатов и SSL для безопасных соединений
- Интеграция с дополнительными службами (Exchange, SharePoint)
- Настройка мониторинга и оповещений
Команда для ежедневной проверки здоровья домена:
#!/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 готов к работе и обеспечивает централизованное управление сетевой инфраструктурой!