Предварительная настройка сервера Обновление пакетов Установка необходимых пакетов Отключение SELinux Присваивание серверу доменного имени Настройка сетевого интерфейса Настройка сетевого интерфейса вручную Настройка сетевого интерфейса с помощью утилиты nmtui Создание нового домена под управлением контроллера домена Samba DC Создание резервных копий файлов Настройка конфигурации Kerberos Настройка DNS-сервера BIND Первоначальное полуавтоматическое конфигурирование сервера с помощью утилиты samba-tool Дополнительная настройка сервера Запуск и проверка работоспособности службы samba
Окружение
Перейдите в сеанс пользователя root:
su -
и выполните обновление всех пакетов:
dnf makecache && dnf upgrade
Все дальнейшие действия выполняются с правами пользователя root, если не указано иное.
Для установки необходимых пакетов выполните:
dnf install samba* krb5* bind
На время настройки переведите SELinux в режим уведомлений:
setenforce 0
Статус службы SELinux можно посмотреть командой sestatus.
Замените в файле конфигурации /etc/selinux/config режим enforcing на permissive командой:
enforcing
permissive
sed -i "s/SELINUX=enforcing/SELINUX=permissive/" /etc/selinux/config
После перезагрузки системы служба SELinux будет запущена — в режиме, который указан в конфигурационном файле.
Сервер контроллера домена должен иметь собственное уникальное доменное имя и статический IP-адрес. Назначьте серверу полное доменное имя: например, если короткое имя сервера dc1, то для домена skynet.murom полное имя сервера имеет вид dc1.skynet.murom:
hostnamectl set-hostname dc1.skynet.murom
По умолчанию сетевой интерфейс настроен для получения IP-адреса по DHCP. Нужно установить серверу контроллера домена статический IP-адрес.
Настройку сетевого интерфейса можно выполнить несколькими способами, в данной статье рассматриваются два из них:
Настройки хранятся в файле /etc/NetworkManager/system-connections/<имя_сетевого_интерфейса>.nmconnection. Именуются они, например, как enp0s3 или enp0s4.
В данном примере сетевой интерфейс имеет имя enp0s3.
Откройте конфигурационный файл в текстовом редакторе:
nano /etc/NetworkManager/system-connections/enp0s3.nmconnection
Внесите следующие изменения:
1) измените тип соединения на статический:
method=manual
2) установите значение для игнорирования DNS из DHCP:
ignore-auto-dns=true
3) укажите IP-адрес контроллера, маску подсети и IP-адрес шлюза:
address1=192.168.1.96/24,192.168.1.1
4) укажите в качестве DNS-сервера IP-адрес создаваемого контроллера домена:
dns=192.168.1.96
5) впишите домен поиска (в данном примере это skynet.murom):
skynet.murom
dns-search=skynet.murom;
Итоговый файл настройки должен иметь вид:
[connection] id=enp0s3 uuid=97def639-603a-4167-9613-edd5bd902ef8 type=ethernet interface-name=enp0s3 timestamp=1704763284 [ethernet] [ipv4] address1=192.168.1.96/24,192.168.1.1 dns=192.168.1.96; dns-search=skynet.murom; ignore-auto-dns=true method=manual [ipv6] addr-gen-mode=eui64 method=auto [proxy]
Перезагрузите сетевой интерфейс для применения настроек:
systemctl restart NetworkManager
Для проверки настроек статической IP-адресации воспользуйтесь командой ifconfig или ip addr.
ifconfig
ip addr
Запустите утилиту в консоли:
nmtui
В настройках сетевого интерфейса в конфигурации IPv4 укажите следующие значения:
Проверьте доступные серверы имен, просмотрев файл resolv.conf:
cat /etc/resolv.conf
Вывод команды должен иметь примерно следующий вид:
nameserver 8.8.8.8 nameserver 192.168.1.96 search skynet.murom
Переименуйте файл /etc/smb.conf, он будет создан позднее в процессе выполнения команды samba-tool. Наличие данного файла на момент запуска полуавтоматической конфигурации может вызвать ошибку.
mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
Создайте резервную копию используемого по умолчанию конфигурационного файла kerberos:
cp /etc/krb5.conf /etc/krb5.conf.bak
Проверьте права на доступ к файлу /etc/krb5.conf:
ls -l /etc/krb5.conf
Пользователем-владельцем файла должен быть root, а группой-владельцем – named. Пример корректного вывода:
-rw-r--r-- 1 root named 104 фев 7 11:05 /etc/krb5.conf
При необходимости смените владельцев:
chown root:named /etc/krb5.conf
Откройте файл /etc/krb5.conf:
nano /etc/krb5.conf
В секции [libdefaults] установите имя домена, используемое по умолчанию:
[libdefaults]
default_realm = SKYNET.MUROM
Добавьте в секции [realms] и [domain_realm] информацию об именах домена и сервера:
[realms]
[domain_realm]
[realms] SKYNET.MUROM = { kdc = dc1.skynet.murom admin_server = dc1.skynet.murom } [domain_realm] .skynet.murom = SKYNET.MUROM skynet.murom = SKYNET.MUROM
Пример содержания файла после редактирования:
includedir /etc/krb5.conf.d/ [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] dns_lookup_realm = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true rdns = false pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt spake_preauth_groups = edwards25519 dns_canonicalize_hostname = fallback qualify_shortname = "" default_realm = SKYNET.MUROM default_ccache_name = KEYRING:persistent:%{uid} [realms] SKYNET.MUROM = { kdc = dc1.skynet.murom admin_server = dc1.skynet.murom } [domain_realm] .skynet.murom = SKYNET.MUROM skynet.murom = SKYNET.MUROM
Откройте файл /etc/krb5.conf.d/crypto-policies:
nano /etc/krb5.conf.d/crypto-policies
и приведите его содержание к следующему виду:
[libdefaults]default_tgs_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 RC4-HMAC DES-CBC-CRC DES3-CBC-SHA1 DES-CBC-MD5default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 RC4-HMAC DES-CBC-CRC DES3-CBC-SHA1 DES-CBC-MD5preferred_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 RC4-HMAC DES-CBC-CRC DES3-CBC-SHA1 DES-CBC-MD5
Откройте файл /etc/named.conf:
nano /etc/named.conf
и внесите в блок options { следующие значения параметров (при необходимости, добавив отсутствующие параметры):
options {
listen-on port 53 { 192.168.1.96; }; allow-query { any; }; dnssec-validation no; tkey-gssapi-keytab "/var/lib/samba/bind-dns/dns.keytab"; minimal-responses yes; forwarders { 8.8.8.8; };
где:
192.168.1.96
allow-query
any
dnssec-validation
tkey-gssapi-keytab
minimal-responses
forwarders
Добавьте в конец списка с директивами include строку:
include
include "/var/lib/samba/bind-dns/named.conf";
Файл должен иметь примерно следующий вид:
options { listen-on port 53 { 192.168.1.96; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; secroots-file "/var/named/data/named.secroots"; recursing-file "/var/named/data/named.recursing"; allow-query { any; }; recursion yes; dnssec-validation no; managed-keys-directory "/var/named/dynamic"; geoip-directory "/usr/share/GeoIP"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; tkey-gssapi-keytab "/var/lib/samba/bind-dns/dns.keytab"; minimal-responses yes; forwarders { 8.8.8.8;}; include "/etc/crypto-policies/back-ends/bind.config"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key"; include "/var/lib/samba/bind-dns/named.conf";
Конфигурирование в интерактивном режиме выполняется командой:
samba-tool domain provision --use-rfc2307 --interactive
Описание некоторых опций (параметров) этой команды:
use-rfc2307 – параметр добавляет POSIX атрибуты (UID / GID) на схеме AD. Он понадобится при аутентификации клиентов Linux, BSD, или OS X (в том числе, на локальной машине), в дополнение к Microsoft Windows;
use-rfc2307
interactive – запуск в интерактивном режиме;
interactive
realm – указывает на полное DNS-имя домена, которое настроено в /etc/hosts, в верхнем регистре (в рассматриваемом примере это SKYNET.MUROM);
realm
Domain – краткое имя домена NetBIOS (в примере – SKYNET);
Domain
Server Rules – роль сервера (например, DC – domain controller);
Server Rules
DNS backend – DNS-сервер. Возможные значения – SAMBA_INTERNAL (внутренний DNS сервера), BIND9_FLATFILE, BIND9_DLZ, NONE;
DNS backend
DNS forwarder IP address – данный параметр позволяет указать IP-адрес DNS-сервера, на который будут перенаправлены DNS-запросы, в том случае, когда сервер не сможет их разрешить.
DNS forwarder IP address
Более подробная информация доступна в Wiki-справке проекта Samba по адресу https://wiki.samba.org, на странице “Setting up Samba as an Active Directory Domain Controller”.
Пример сокращённого листинга настройки для тестового домена skynet.murom:
Realm [SKYNET.MUROM]: Domain [SKYNET]: 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 share.ldb 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 Unable to determine the DomainSID, can not enforce uniqueness constraint on local domainSIDs Adding DomainDN: DC=skynet,DC=murom Adding configuration container Setting up sam.ldb schema Setting up sam.ldb configuration data Setting up display specifiers Modifying display specifiers and extended rights 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=skynet,DC=murom Creating DomainDnsZones and ForestDnsZones partitions Populating DomainDnsZones and ForestDnsZones partitions Setting up sam.ldb rootDSE marking as synchronized Fixing provision GUIDs The Kerberos KDC configuration for Samba AD is located at /var/lib/samba/private/kdc.conf A Kerberos configuration suitable for Samba AD has been generated at /var/lib/samba/private/krb5.conf Merge the contents of this file with your system krb5.conf or replace it with this one. Do not create a symlink! Setting up fake yp server settings Once the above files are installed, your Samba AD server will be ready to use Server Role: active directory domain controller ... Hostname:dc1 ... NetBIOS Domain:SKYNET ... DNS Domain: skynet.murom ... DOMAIN SID:S-1-5-21-4010603892-1310842104-1159347701
После запуска автоматической настройки файлы конфигурации будут созданы автоматически.
Настройки сервера находятся в файле /etc/samba/smb.conf. Конфигурирование сервера выполняется путём внесения изменений в этот файл:
nano /etc/samba/smb.conf
Начиная с версии 3.3.0 в Samba есть модуль acl_xattr, который позволяет Samba корректно обрабатывать Windows ACL (Access Control List) и обеспечивает полноценную поддержку прав доступа к файлам.
Для подключения этого модуля добавьте в файл /etc/samba/smb.conf в секцию [global] следующие строки (либо отредактируйте существующие):
[global]
vfs objects = acl_xattr map acl inherit = yes store dos attributes = yes
Для включения автоматического обновления записей в DNS добавьте два параметра в секцию [global]:
allow dns updates = nonsecure nsupdate command = /usr/bin/nsupdate -g
В секцию [global] добавьте поддержку расширений схемы Samba AD (Active Directory):
dsdb:schema update allowed = true
Пример содержания файла /etc/samba/smb.conf с внесёнными дополнительными изменениями:
cat /etc/samba/smb.conf
#Global parameters [global] netbios name = DC1 realm= SKYNET.MUROM server role = active directory domain controller server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsupdate workgroup= SKYNET idmap_ldb:use rfc2307 = yes vfs objects = acl_xattr map acl inherit = yes store dos attributes = yes nsupdate command = /usr/bin/nsupdate -g dsdb:schema update allowed = true [sysvol] path = /var/lib/samba/sysvol read only = No [netlogon] path = /var/lib/samba/sysvol/skynet.murom/scripts read only = No
После внесения изменений в файл /etc/samba/smb.conf выполните проверку:
testparm
Пример вывода команды:
Load smb config files from /etc/samba/smb.conf vfs objects specified without required AD DC module: dfs_samba4 Loaded services file OK. Weak crypto is allowed Server role: ROLE_ACTIVE_DIRECTORY_DC Press enter to see a dump of your service definitions
Запустите и добавьте в автозагрузку службы samba и named:
systemctl enable samba named --now
Проверьте статус служб:
systemctl status samba named
Не запускайте службу winbind вручную на контроллере домена Samba Active Directory. Служба запускается автоматически как подпроцесс samba.
Проверьте работу динамического обновления DNS:
samba_dnsupdate --verbose --all-names
Для более быстрой проверки рекомендуется отключить IPv6. Сделать это можно с помощью утилиты nmtui.
Дата последнего изменения: 08.04.2025
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.
Нажимая «Отправить запрос», вы соглашаетесь с условиями обработки персональных данных.
Вы будете получать только актуальную информацию по обновлению безопасности
Подписываясь на уведомления, вы соглашаетесь с условиями обработки персональных данных.
На ваш почтовый адрес отправлено письмо с подтверждением подписки.