С установкой MS Windows 2012R2 всё просто и более менее понятно. В интернете есть 1001 мануал по развертыванию домена на Windows как с помощью GUI так и средствами Powershell, поэтому повторять лишний раз не буду, оставлю только ссылку на офф. документацию, для любопытствующих и тех кто захочет освежить память.
Однако один важный момент в данном пункте всё таки есть. На сегодняшний день Samba не умеет работать со схемами каталога выше 2008R2.
Заголовок спойлера
Вернее разработчиками данная поддержка заявлена в качестве экспериментальной. Но на практике попытка ввода самбы в качестве второго DC в существующий домен Windows со схемой 69 — встретит вас следующей ошибкой
DsAddEntry failed with status WERR_ACCESS_DENIED info (8567, ‘WERR_DS_INCOMPATIBLE_VERSION’)
Проблема в том, что Windows 2012 и 2012R2 используют инструменты WMI для работы с доменами и лесами, стабильная поддержка которых анонсирована только к версии Samba 4.11, которая должна выйти до конца этого года.
Из этого следует, что единственным вариантом для введения самбы в домен AD, развернутый на 2012R2 сервере, является понижение схемы с 69 до 47. Разумеется на рабочей инфраструктуре без веских причин этого делать не надо, но у нас тут тестовый стенд, так что почему бы собственно и нет.
Ставим Альт Сервер 8.2. Во время установки выбираем профиль «Сервер Samba-DC (контроллер AD)». На развернутом сервере производим полное обновление системы, и устанавливаем пакет task-samba-dc, который потянет за собой всё необходимое
# apt-get install task-samba-dc
Если вдруг task-samba-dc, вопреки заверениям документации Альта откажется ставить всё необходимое сам.
# apt-get install python-module-samba-DC samba-DC-common samba-DC-winbind-clients samba-DC-winbind samba-DC-common-libs libpytalloc-devel
Далее переходим к настройке Kerberos и получению тикета. Открываем файл krb5.conf, переходим в раздел [libdefaults], и приводим к следующему виду:
# vim /etc/krb5.conf
dns_lookup_kdc = true
dns_lookup_realm = true
default_realm = TEST.LOCAL
Запрашиваем билет
# kinit administrator
Password for administrator@TEST.LOCAL:
Проверяем список полученых тикетов Kerberos
# klist
Ticket cache: KEYRING:persistent:0:0
Default principal: administrator@TEST.LOCAL
Valid starting Expires Service principal
16.05.2019 11:51:38 16.05.2019 21:51:38 krbtgt/TEST.LOCAL@TEST.LOCAL
renew until 23.05.2019 11:51:35
Теперь удаляем или переименовываем существующий конфиг самбы.
# mv smb.conf smb.conf.bak1
И наконец вводим в домен AD вторым контроллером:
# samba-tool domain join test.local DC -U"TEST\administrator"
Успешный ввод будет сопровождаться следующим логом
Finding a writeable DC for domain 'test.local'
Found DC DC1.TEST.LOCAL
Password for [TEST\administrator]:
Reconnecting to naming master e31d7da6-8f56-4420-8473-80f2b3a31338._msdcs.TEST. LOCAL
DNS name of new naming master is DC1.TEST.LOCAL
workgroup is TEST
realm is TEST.LOCAL
Adding CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL
Adding CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC =TEST,DC=LOCAL
Adding CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN =Configuration,DC=TEST,DC=LOCAL
Adding SPNs to CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL
Setting account password for DC2$
Enabling account
Calling bare provision
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
A Kerberos configuration suitable for Samba AD has been generated at /var/lib/sa mba/private/krb5.conf
Provision OK for domain DN DC=TEST,DC=LOCAL
Starting replication
Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objects[402/1426] linked _values[0/0]
Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objects[804/1426] linked _values[0/0]
Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objects[1206/1426] linke d_values[0/0]
Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objects[1608/1426] linke d_values[0/0]
Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objects[1743/1426] linke d_values[0/0]
Analyze and apply schema objects
Partition[CN=Configuration,DC=TEST,DC=LOCAL] objects[402/2240] linked_values[0/ 24]
Partition[CN=Configuration,DC=TEST,DC=LOCAL] objects[804/2240] linked_values[0/ 24]
Partition[CN=Configuration,DC=TEST,DC=LOCAL] objects[1206/2240] linked_values[0 /24]
Partition[CN=Configuration,DC=TEST,DC=LOCAL] objects[1608/2240] linked_values[0 /24]
Partition[CN=Configuration,DC=TEST,DC=LOCAL] objects[1772/2240] linked_values[2 4/24]
Replicating critical objects from the base DN of the domain
Partition[DC=TEST,DC=LOCAL] objects[109/110] linked_values[26/29]
Partition[DC=TEST,DC=LOCAL] objects[394/5008] linked_values[29/29]
Done with always replicated NC (base, config, schema)
Replicating DC=DomainDnsZones,DC=TEST,DC=LOCAL
Partition[DC=DomainDnsZones,DC=TEST,DC=LOCAL] objects[42/42] linked_values[0/0]
Replicating DC=ForestDnsZones,DC=TEST,DC=LOCAL
Partition[DC=ForestDnsZones,DC=TEST,DC=LOCAL] objects[20/20] linked_values[0/0]
Exop on[CN=RID Manager$,CN=System,DC=TEST,DC=LOCAL] objects[3] linked_values[0]
Committing SAM database
Adding 1 remote DNS records for DC2.TEST.LOCAL
Adding DNS A record DC2.TEST.LOCAL for IPv4 IP: 192.168.90.201
Adding DNS CNAME record 6ff1df40-cbb5-41f0-b7b3-53a27dde8edf._msdcs.TEST.LOCAL for DC2.TEST.LOCAL
All other DNS records (like _ldap SRV records) will be created samba_dnsupdate o n first startup
Replicating new DNS records in DC=DomainDnsZones,DC=TEST,DC=LOCAL
Partition[DC=DomainDnsZones,DC=TEST,DC=LOCAL] objects[1/42] linked_values[0/0]
Replicating new DNS records in DC=ForestDnsZones,DC=TEST,DC=LOCAL
Partition[DC=ForestDnsZones,DC=TEST,DC=LOCAL] objects[1/20] linked_values[0/0]
Sending DsReplicaUpdateRefs for all the replicated partitions
Setting isSynchronized and dsServiceName
Setting up secrets database
Joined domain TEST (SID S-1-5-21-3959064270-1572045903-2556826204) as a DC
В оснастке ADUC должна появиться запись о новом DC в домене TEST.LOCAL, а в диспетчере DNS — новая А запись, соответствующая DC2.
Для начала проверим работу службы репликации каталогов (DRS)
# samba-tool drs showrepl
Все попытки репликации в выводе должны быть успешными. В списке объектов KCC, в течение 15 минут после ввода, должен появится наш DC1 на Windows
Default-First-Site-Name\DC2
DSA Options: 0x00000001
DSA object GUID: 0e9f5bce-ff59-401e-bdbd-fc69df3fc6bf
DSA invocationId: 017997b5-d718-41d7-a3f3-e57ab5151b5c
==== INBOUND NEIGHBORS ====
DC=ForestDnsZones,DC=test,DC=local
Default-First-Site-Name\DC1 via RPC
DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
Last attempt @ Mon May 27 12:56:31 2019 MSK was successful
0 consecutive failure(s).
Last success @ Mon May 27 12:56:31 2019 MSK
DC=DomainDnsZones,DC=test,DC=local
Default-First-Site-Name\DC1 via RPC
DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
Last attempt @ Mon May 27 12:56:32 2019 MSK was successful
0 consecutive failure(s).
Last success @ Mon May 27 12:56:32 2019 MSK
CN=Schema,CN=Configuration,DC=test,DC=local
Default-First-Site-Name\DC1 via RPC
DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
Last attempt @ Mon May 27 12:56:32 2019 MSK was successful
0 consecutive failure(s).
Last success @ Mon May 27 12:56:32 2019 MSK
DC=test,DC=local
Default-First-Site-Name\DC1 via RPC
DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
Last attempt @ Mon May 27 12:56:32 2019 MSK was successful
0 consecutive failure(s).
Last success @ Mon May 27 12:56:32 2019 MSK
CN=Configuration,DC=test,DC=local
Default-First-Site-Name\DC1 via RPC
DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
Last attempt @ Mon May 27 12:56:33 2019 MSK was successful
0 consecutive failure(s).
Last success @ Mon May 27 12:56:33 2019 MSK
==== OUTBOUND NEIGHBORS ====
DC=ForestDnsZones,DC=test,DC=local
Default-First-Site-Name\DC1 via RPC
DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
Last attempt @ Thu May 23 16:40:03 2019 MSK was successful
0 consecutive failure(s).
Last success @ Thu May 23 16:40:03 2019 MSK
DC=DomainDnsZones,DC=test,DC=local
Default-First-Site-Name\DC1 via RPC
DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
Last attempt @ Thu May 23 16:40:03 2019 MSK was successful
0 consecutive failure(s).
Last success @ Thu May 23 16:40:03 2019 MSK
CN=Schema,CN=Configuration,DC=test,DC=local
Default-First-Site-Name\DC1 via RPC
DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
Last attempt @ Thu May 23 16:40:08 2019 MSK was successful
0 consecutive failure(s).
Last success @ Thu May 23 16:40:08 2019 MSK
DC=test,DC=local
Default-First-Site-Name\DC1 via RPC
DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
Last attempt @ Thu May 23 16:40:08 2019 MSK was successful
0 consecutive failure(s).
Last success @ Thu May 23 16:40:08 2019 MSK
CN=Configuration,DC=test,DC=local
Default-First-Site-Name\DC1 via RPC
DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
Last attempt @ Mon May 27 12:12:17 2019 MSK was successful
0 consecutive failure(s).
Last success @ Mon May 27 12:12:17 2019 MSK
==== KCC CONNECTION OBJECTS ====
Connection --
Connection name: 6d2652b3-e723-4af7-a19f-1ee48915753c
Enabled : TRUE
Server DNS name : DC1.test.local
Server DN name : CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=local
TransportType: RPC
options: 0x00000001
Warning: No NC replicated for Connection!
Предупреждение «No NC replicated for Connection!» можно смело игнорировать. Оно появляется из за того, что при регистрации нового DC самба неверно устанавливает некоторые флаги репликации.
Так же неплохо будет проверить репликацию LDAP.
# samba-tool ldapcmp ldap://dc1.test.local ldap://dc2.test.local -Uadministrator
Указанная выше команда сравнит значения атрибутов объектов всего каталога на DC1 и DC2.
Пример успешной репликации
* Comparing [DOMAIN] context...
* Objects to be compared: 249
* Result for [DOMAIN]: SUCCESS
* Comparing [CONFIGURATION] context...
* Objects to be compared: 1750
* Result for [CONFIGURATION]: SUCCESS
* Comparing [SCHEMA] context...
* Objects to be compared: 1739
* Result for [SCHEMA]: SUCCESS
* Comparing [DNSDOMAIN] context...
* Objects to be compared: 42
* Result for [DNSDOMAIN]: SUCCESS
* Comparing [DNSFOREST] context...
* Objects to be compared: 20
* Result for [DNSFOREST]: SUCCESS
В ряде случаев атрибуты объектов на разных контроллерах могут отличаться, и вывод команды даст об этом знать. Но далеко не во всех случаях это будет признаком проблемы с репликацией.
Следующим этапом необходимо вручную настроить стабильную репликацию каталога SysVol.
Дело в том, что самба пока не поддерживает DFS-R, впрочем как не поддерживала более раннюю FRS. Поэтому для репликации между DC Samba и Windows единственным на сегодняшний день рабочим решением является односторонняя репликация средствами утилиты Robocopy из комплекта Windows Server 2003 Resource Kit Tools.
Разработчики самбы, во избежание проблем с совместимостью, рекомендуют сначала установить комплект утилит на обычную рабочую станцию, и после этого скопировать Robocopy на контроллер в папку «C:\Program Files (x86)\Windows Resource Kits\Tools\»
После установки, в планировщике задач на контроллере с Windows создаём задание на выполнение репликации со следующими параметрами:
— Выполнять для всех пользователей
— Триггер на выполнение Ежедневно каждые 5 минут в течение дня
— В действиях прописываем путь к утилите robocopy, в качестве аргументов указываем:
\\DC1\SYSVOL\test.local\ \\DC2\SYSVOL\test.local\ /mir /sec
В конкретном случае копируем содержимое каталога SysVol с DC1 на DC2.
Содержание статьи:
- 1 Подготовка системы (Debian 9 Stretch)
- 1.1 Настройка Active Directory (Windows Server 2012 R2)
- 1.2 Настройка Kerberos
- 2 Установка и настройка Samba, Winbind
- 3 Общие папки (Shared Folders)
Как известно система лицензирования Microsoft штука не дешевая и поэтому рассмотрим как установить файловый сервер Samba 4.5 с интеграцией Active Directory на Debian 9 Stretch.
Исходные данные:
- Контроллер домена (DC1) на Windows Server 2012 R2, домен JAKONDA.LOCAL
- Система по файловый сервер (datastore1) на Debian 9 Stretch
Подготовка системы (Debian 9 Stretch)
Перед началом выполнения ниже описанных действий обновляем систему до актуального состояния:
apt-get update && apt-get upgrade -y
Указываем FQDN (Fully Qualified Domain Name) имя системы, в файле (/etc/hostname):
datastore1.jakonda.local
Так же файл (/etc/hosts) приводим к виду таким образом, чтобы в нём была запись с полным доменным именем компьютера и с коротким именем, ссылающаяся на один из внутренних IP:
127.0.0.1 localhost 127.0.1.1 datastore1.jakonda.local datastore1
Настраиваем синхронизацию времени с контроллером домена, выполняем установку NTP, выполняем синхронизацию времени с контроллером домена:
apt-get install ntp ntpdate ntpdate dc1.jakonda.local
Более подробно о синхронизации времени на Debian 8 Jessie/Ubuntu Server 14.04 можно почитать в этой статье
Настройка Active Directory (Windows Server 2012 R2)
В DNS зону (JAKONDA.LOCAL), добавляем A-запись файлового сервера:
Создаем служебного пользователя (прим. datastore1), с бесконечным срок действия пароля.
Создаем KEYTAB-файл (необходим для аутентификации пользователей в Active Directory). В командной строке с правами администраторы выполняем команду (соблюдая регистр):
ktpass -princ HTTP/datastore1.jakonda.local@JAKONDA.LOCAL -mapuser datastore1@JAKONDA.LOCAL -pass Aa1234567 -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -out C:\datastore1.keytab
Полученный KEYTAB-файл, передаем любым удобным способом на файловый сервер (расположение KEYTAB-файла на моем файловом сервере — /root/datastore1.keytab). Как передать файл посредством утилиты PuTTY можно прочитать тут
Настройка Kerberos
Установка пакетов для поддержки аутентификации Kerberos:
apt-get install krb5-user
В ходе установки может появится запрос указать область по-умолчанию для Kerberos, область необходимо его указать в заглавном виде (прим. JAKONDA.LOCAL)
Файл конфигурации 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 = JAKONDA.LOCAL default_keytab_name = /root/datastore1.keytab dns_lookup_kdc = false dns_lookup_realm = false forwardable = true ticket_lifetime = 24h [realms] JAKONDA.LOCAL = { kdc = dc1.jakonda.local default_domain = JAKONDA.LOCAL admin_server = dc1.jakonda.local } [domain_realm] .jakonda.local = JAKONDA.LOCAL jakonda.local = JAKONDA.LOCAL
Соответственно подставляем название своего домена вместо jakonda.local/JAKONDA.LOCAL
Проверка работы Kerberos, выполним авторизацию в Active Directory:
kinit -kV -p HTTP/datastore1.jakonda.local Using default cache: /tmp/krb5cc_0 Using principal: HTTP/datastore1.jakonda.local@JAKONDA.LOCAL Authenticated to Kerberos v5
Удаляем полученный билет:
kdestroy
Установка и настройка Samba, Winbind
Устанавливаем необходимые пакеты:
apt-get install samba cifs-utils winbind libnss-winbind -y
Конфигурационный файл Samba (/etc/samba/smb.conf) приводим к виду:
[global] # ОБЩИЕ ПАРАМЕТРЫ СЕТЕВОЙ ШАРЫ realm = JAKONDA.LOCAL workgroup = JAKONDA security = ads encrypt passwords = yes 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 # Конфигурация по-умолчанию для локальных пользователей и групп idmap config * : backend = tdb idmap config * : range = 3000-7999 # Конфигурация для домена JAKONDA и его пользователей и групп idmap config JAKONDA : backend = rid idmap config JAKONDA : range = 10000-999999 # ПАРАМЕТРЫ WINBIND winbind enum users = yes winbind enum groups = yes winbind refresh tickets = yes winbind use default domain = yes # ПОДКЛЮЧЕНИЕ МОДУЛЕЙ VFS (Virtual File System) vfs objects = acl_xattr # Поддержка Windows ACLs map acl inherit = yes store dos attributes = yes # ОТКЛЮЧЕНИЕ ПОДДЕРЖКИ СЕТЕВЫХ ПРИНТЕРОВ load printers = no show add printer wizard = no printcap name = /dev/null disable spoolss = yes # ПАРАМЕНТЫ ЛОГИРОВАНИЯ log level = 0 vfs:1
Обращаю внимание что в параметрах realm, workgroup указываем название своего домена. Подробное описание используемых параметров можно по этой ссылке.
Так как в Linux по-умолчанию установлен лимит на 1024 одновременно открытых файлов, а в Windows он 16384, поэтому увеличим лимит в Debian до значения 16384.
В файле (/etc/security/limits.conf) дописываем в самый конец строки:
* - nofile 16384 root - nofile 16384
Перезагружаем систему для применения изменений:
reboot
Выполним проверку конфигурации на ошибки, командой:
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@jakonda.local
Вывод об успешном присоединении к домену:
Enter jakonda@jakonda.local's password: Using short domain name -- JAKONDA Joined 'DATASTORE1' to dns domain 'jakonda.local'
Теперь чтобы система использовала 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: compat winbind group: compat winbind shadow: compat 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 JAKONDA via RPC calls succeeded
Для проверки видит ли Winbind пользователей и группы из Active Directory, выполним команды:
wbinfo -u wbinfo -g
Если в ходе выполнения данных команд в консоль были выведены пользователи и группы из Active Directory, то это значит что Winbind работает правильно.
Так же удостоверится в корректной работе Winbind можно запросив данные по доменному пользователю (прим. ранее созданного пользователя datastore1):
id datastore1 uid=14389(datastore1) gid=10513(пользователи домена) группы=10513(пользователи домена),14389(datastore1),10001(BUILTIN\users)
Общие папки (Shared Folders)
Так как мы интегрируем Samba с Active Directory, то и управление правами доступа на общие папки будет гораздо удобней назначать из ОС Windows.
Учетные записи которые могут настраивать права на общие папки, нуждаются в привилегиях SeDiskOperatorPrivilege. Чтобы посмотреть текущий список привилегий на хосте, выполним команду:
net rpc rights list accounts -U'JAKONDA\jakonda'
Результат выполнения:
BUILTIN\Print Operators No privileges assigned BUILTIN\Account Operators No privileges assigned BUILTIN\Backup Operators No privileges assigned BUILTIN\Server Operators No privileges assigned BUILTIN\Administrators SeMachineAccountPrivilege SeTakeOwnershipPrivilege SeBackupPrivilege SeRestorePrivilege SeRemoteShutdownPrivilege SePrintOperatorPrivilege SeAddUsersPrivilege SeDiskOperatorPrivilege SeSecurityPrivilege SeSystemtimePrivilege SeShutdownPrivilege SeDebugPrivilege SeSystemEnvironmentPrivilege SeSystemProfilePrivilege SeProfileSingleProcessPrivilege SeIncreaseBasePriorityPrivilege SeLoadDriverPrivilege SeCreatePagefilePrivilege SeIncreaseQuotaPrivilege SeChangeNotifyPrivilege SeUndockPrivilege SeManageVolumePrivilege SeImpersonatePrivilege SeCreateGlobalPrivilege SeEnableDelegationPrivilege Everyone No privileges assigned
Выдадим разрешение SeDiskOperatorPrivilege группе «Администраторы домена» (Domain Admins), командой:
net rpc rights grant 'JAKONDA\Domain Admins' SeDiskOperatorPrivilege -U'JAKONDA\jakonda' ENTER JAKONDA\JAKONDA'S PASSWORD: SUCCESSFULLY GRANTED RIGHTS.
Теперь можно приступать к созданию общих папок. Для примера рассмотрим создание общей папки PUBLIC.
Создаем папку и выставляем права доступа на нее:
mkdir -p /samba/public chown "администраторы домена":"пользователи домена" /samba/public chmod 770 /samba/public
В файле конфигурации Samba (/etc/samba/smb.conf) описываем параметры общей папки:
[PUBLIC] path = /samba/public read only = no # Аналог технологии Access-based Enumeration(ABE — Перечисление на основании доступа) hide unreadable = yes # hide unwriteable files = yes
Если необходимо сделать общую папку невидимой, то в параметрах необходимо в название общей папки символ $ — [PUBLIC$]. В этом случае общая папка не будет видна при обзоре сети и войти в нее можно будет указав полный путь к ней.
Если необходимо задать наследование владельца от родительской папки для создаваемых файлов и папок, то делается это параметром: inherit owner = yes
Для применения изменений перечитываем конфигурацию Samba, командой:
/etc/init.d/smbd reload
Далее все настройку прав доступа выполняем из оснастки Управление компьютером (Computer Manager).
Запускаем от администратора Управление компьютером (Computer Manager) (Меню ПУСК -> Выполнить -> compmgmt.msc). Подключится к другому компьютеру… и указываем компьютер
После подключения к системе, переходим в «Общие папки» — «Общие ресурсы» и видим нашу общую папку PUBLIC, далее привычным методом выставляем все необходимые права доступа на нее.
Так же через оснастку Управление компьютером (Computer Manager) удобно смотреть активные пользовательские сеансы и какие файлы открыты в общих папках. При необходимости можно завершить пользовательский сеанс или закрыть открытый файл.
Для тех у кого есть желание поблагодарить, могут воспользоватся формой ниже:
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА
Загрузка…
Сетевой протокол SMB (Server Message Block) используется для предоставления совместного удаленного доступа к файлам, принтерам и другим устройствам через порт TCP 445. В этой статье мы рассмотрим: какие версии (диалекты) протокола SMB доступны в различных версиях Windows (и как они соотносятся с версиями samba в Linux); как определить версию SMB на вашем компьютере; и как включить/отключить клиент и сервер SMBv1, SMBv2 и SMBv3.
Содержание:
- Версии протокола SMB в Windows
- Как проверить поддерживаемые версии SMB в Windows?
- Вывести используемые версии SMB с помощью Get-SMBConnection
- Об опасности использования SMBv1
- Включение и отключение SMBv1, SMBv2 и SMBv3 в Windows
Версии протокола SMB в Windows
Есть несколько версии протокола SMB (диалектов), которые последовательно появлялись в новых версиях Windows:
Для реализации протокола SMB в Linux/Unix системах используется samba. В скобках мы указали в каких версиях samba поддерживается каждый диалект SMB.
- CIFS — Windows NT 4.0;
- SMB 1.0 — Windows 2000;
- SMB 2.0 — Windows Server 2008 и Windows Vista SP1 (поддерживается в Samba 3.6);
- SMB 2.1 — Windows Server 2008 R2 и Windows 7 (поддерживается в Samba 4.0);
- SMB 3.0 — Windows Server 2012 и Windows 8 (поддерживается в Samba 4.2);
- SMB 3.02 — Windows Server 2012 R2 и Windows 8. 1 (не поддерживается в Samba);
- SMB 3.1.1 – Windows Server 2016 и Windows 10 (не поддерживается в Samba).
Начиная с версии Samba 4.14, по умолчанию используется SMB2.1.
При сетевом взаимодействии по протоколу SMB между клиентом и сервером используется максимальная версия протокола, поддерживаемая одновременно и клиентом, и сервером.
Ниже представлена сводная таблица, по которой можно определить версию протокола SMB, которая выбирается при взаимодействии разных версий Windows:
Операционная система | Win 10, Server 2016 | Windows 8.1, Server 2012 R2 |
Windows 8, Server 2012 |
Windows 7, Server 2008 R2 |
Windows Vista, Server 2008 |
Windows XP, Server 2003 и ниже |
Windows 10 ,
Windows Server 2016 |
SMB 3.1.1 | SMB 3.02 | SMB 3.0 | SMB 2.1 | SMB 2.0 | SMB 1.0 |
Windows 8.1 , Server 2012 R2 |
SMB 3.02 | SMB 3.02 | SMB 3.0 | SMB 2.1 | SMB 2.0 | SMB 1.0 |
Windows 8 , Server 2012 |
SMB 3.0 | SMB 3.0 | SMB 3.0 | SMB 2.1 | SMB 2.0 | SMB 1.0 |
Windows 7, Server 2008 R2 |
SMB 2.1 | SMB 2.1 | SMB 2.1 | SMB 2.1 | SMB 2.0 | SMB 1.0 |
Windows Vista, Server 2008 |
SMB 2.0 | SMB 2.0 | SMB 2.0 | SMB 2.0 | SMB 2.0 | SMB 1.0 |
Windows XP, 2003 и ниже | SMB 1.0 | SMB 1.0 | SMB 1.0 | SMB 1.0 | SMB 1.0 | SMB 1.0 |
К примеру, при подключении клиентского компьютера с Windows 8.1 к файловому серверу с Windows Server 2016 будет использоваться протокол SMB 3.0.2.
Согласно таблице Windows XP, Windows Server 2003 для доступа к общим файлам и папкам на сервере могут использовать только SMB 1.0, который в новых версиях Windows Server (2012 R2 / 2016) может быть отключен. Таким образом, если в вашей инфраструктуре одновременно используются компьютеры с Windows XP (снятой с поддержки), Windows Server 2003/R2 и сервера с Windows Server 2012 R2/2016/2019, устаревшие клиенты не смогут получить доступ к файлам и папкам на файловом сервере с новой ОС.
Если Windows Server 2016/2012 R2 с отключенным SMB v1.0 используется в качестве контроллера домена, значить клиенты на Windows XP/Server 2003 не смогут получить доступ к каталогам SYSVOL и NETLOGON на контроллерах домена и авторизоваться в AD.
На старых клиентах при попытке подключиться к ресурсу на файловом сервере с отключенным SMB v1 появляется ошибка:
The specified network name is no longer available
Как проверить поддерживаемые версии SMB в Windows?
Рассмотрим, как определить, какие версии протокола SMB поддерживаются на вашем компьютере Windows.
В Windows 10, 8.1 и Windows Server 2019/2016/2012R2 вы можете проверить состояние различных диалектов SMB протокола с помощью PowerShell:
Get-SmbServerConfiguration | select EnableSMB1Protocol,EnableSMB2Protocol
Данная команда вернула, что протокол SMB1 отключен (
EnableSMB1Protocol=False
), а протоколы SMB2 и SMB3 включены (
EnableSMB1Protocol=True
).
Обратите внимание, что протоколы SMBv3 и SMBv2 тесно связаны между собой. Нельзя отключить или включить отдельно SMBv3 или SMBv2. Они всегда включаются/отключаются только совместно, т.к. используют один стек.
В Windows 7, Vista, Windows Server 2008 R2/2008:
Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}
Если в данной ветке реестра нет параметров с именами SMB1 или SMB2, значить протоколы SMB1 и SMB2 по умолчанию включены.
Также в этих версиях Windows вы можете проверить, какие диалекты SMB разрешено использовать в качестве клиентов с помощью команд:
sc.exe query mrxsmb10
SERVICE_NAME: mrxsmb10 TYPE : 2 FILE_SYSTEM_DRIVER STATE : 4 RUNNING (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0
sc.exe query mrxsmb20
SERVICE_NAME: mrxsmb20 TYPE : 2 FILE_SYSTEM_DRIVER STATE : 4 RUNNING (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0
В обоих случаях службы запущены (
STATE=4 Running
). Значит Windows может подключаться как к SMBv1, так и к SMBv2 серверам.
Вывести используемые версии SMB с помощью Get-SMBConnection
Как мы говорили раньше, компьютеры при взаимодействии по протоколу SMB используют максимальную версию, поддерживаемую как клиентом, так и сервером. Для определения версии SMB, используемой для доступа к удаленному компьютеру можно использовать командлет PowerShell
Get-SMBConnection
:
Версия SMB, используемая для подключения к удаленному серверу (ServerName) указана в столбце Dialect.
Можно вывести информацию о версиях SMB, используемых для доступа к конкретному серверу:
Get-SmbConnection -ServerName servername
Если нужно отобразить, используется ли SMB шифрование (появилось в SMB 3.0), выполните:
Get-SmbConnection | ft ServerName,ShareName,Dialect,Encrypted,UserName
В Linux вывести список SMB подключения и используемые диалекты в samba можно командой:
$ sudo smbstatus
Чтобы на стороне сервера вывести список используемых клиентами версий протокола SMB и количество клиентов, используемых ту или иную версию протокола SMB, выполните команду:
Get-SmbSession | Select-Object -ExpandProperty Dialect | Sort-Object -Unique
В нашем примере имеется 825 клиентов, подключенных к серверу с помощью SMB 2.1 (Windows 7/Windows Server 2008 R2) и 12 клиентов SMB 3.02.
С помощью PowerShell можно включить аудит версий SMB, используемых для подключения:
Set-SmbServerConfiguration –AuditSmb1Access $true
События подключения затем можно извлечь из журналов Event Viewer с помощью PowerShell:
Get-WinEvent -LogName Microsoft-Windows-SMBServer/Audit
Об опасности использования SMBv1
Последние несколько лет Microsoft из соображений безопасности планомерно отключает устаревший протокол SMB 1.0. Связано это с большим количеством критических уязвимостей в этом протоколе (вспомните историю с эпидемиями вирусов-шифровальщиков wannacrypt и petya, которые использовали уязвимость именно в протоколе SMBv1). Microsoft и другие IT компании настоятельно рекомендуют отказаться от его использования.
Однако отключение SMBv1 может вызвать проблемы с доступом к общий файлам и папкам на новых версиях Windows 10 (Windows Server 2016/2019) с устаревших версий клиентов (Windows XP, Server 2003), сторонних ОС (Mac OSX 10.8 Mountain Lion, Snow Leopard, Mavericks, старые версии Linux), различных старых NAS устройствах.
Если в вашей сети не осталось legacy устройств с поддержкой только SMBv1, обязательно отключайте эту версию диалекта в Windows.
В том случае, если в вашей сети остались клиенты с Windows XP, Windows Server 2003 или другие устройства, которые поддерживают только SMBv1, их нужно как можно скорее обновить или тщательно изолировать.
Включение и отключение SMBv1, SMBv2 и SMBv3 в Windows
Рассмотрим способы включения, отключения различных версий SMB в Windows. Мы рассматриваем отдельно включение клиента и сервера SMB (это разные компоненты).
Windows 10, 8.1, Windows Server 2019/2016/2012R2:
Отключить клиент и сервер SMBv1:
Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol
Отключить только SMBv1 сервер:
Set-SmbServerConfiguration -EnableSMB1Protocol $false
Включить клиент и сервер SMBv1:
Enable-WindowsOptionalFeature -Online -FeatureName smb1protocol
Включить только SMBv1 сервер:
Set-SmbServerConfiguration -EnableSMB1Protocol $true
Отключить сервер SMBv2 и SMBv3:
Set-SmbServerConfiguration -EnableSMB2Protocol $false
Включить сервер SMBv2 и SMBv3:
Set-SmbServerConfiguration -EnableSMB2Protocol $true
Windows 7, Vista, Windows Server 2008 R2/2008:
Отключить SMBv1 сервер:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 –Force
Включить SMBv1 сервер:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 –Force
Отключить SMBv1 клиент:
sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi
sc.exe config mrxsmb10 start= disabled
Включить SMBv1 клиент:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb10 start= auto
Отключить SMBv2 сервер:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 0 -Force
Включить SMBv2 сервер
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 1 –Force
Отключить SMBv2 клиент:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi
sc.exe config mrxsmb20 start= disabled
Включить SMBv2 клиент:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb20 start= auto
Для отключения сервера SMBv1 на всех компьютерах независимо от версии Windows можно распространить параметр реестра типа REG_DWORD с именем SMB1 и значением 0 (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters)на через GPO.
Для отключения SMBv2 нужно в этой же ветке установить параметр SMB2=0.
Для отключения SMBv1 клиента нужно распространить такой параметр реестра:
- Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mrxsmb10
- Name: Start
- Type: REG_DWORD
- Value: 4
При отключении SMB 1.0/CIFS File Sharing Support в Windows вы можете столкнуться с ошибкой “0x80070035, не найден сетевой путь”, ошибкой при доступе к общим папкам, и проблемами обнаружения компьютеров в сетевом окружении. В этом случае вместо служба обозревателя компьютеров (Computer Browser) нужно использовать службы обнаружения (линк).
Данная страница находится в разработке. Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной. |
Установка доверительных отношений между Windows 2012R2 и SambaDC
Исходные данные
- Домен Windows:
Имя домена - WIN.DOM Контроллер домена - DC1.WIN.DOM IP address - 172.16.100.124 ОС контроллера домена - Windows Server 2012R2 Уровень работы домена - 2012R2
- Домен Linux:
Имя домена - LIN.LOC Контроллер домена - DC2.LIN.LOC IP address - 172.16.100.135 ОС контроллера домена - Alt 9 Server Уровень работы домена - 2012_R2 Версия Samba - 4.12.11
Основная задача — описать процесс создания двухсторонних доверительных отношений между доменами на базе Windows AD и Samba DC. Проверить возможность входа пользователей и групп одного домена в другой и наоборот.
Настройка на стороне Windows
1. Для службы DNS создать сервер условной перессылки
PS$ Add-DnsServerConditionalForwarderZone -Name lin.loc -MasterServers 172.16.100.135 -ReplicationScope Forest
2. Создание двухстороннего транзитивного подключения
В домене win.dom открываем «Диспетчер серверов», и кликаем на «Средства» — «Active Directory — Домены и Доверие»:
В открывшемся окне в контекстном меню домена WIN.DOM выбирать «Свойства». Откроется окно свойств, в котором необходимо перейти во вкладку «Отношения доверия» и нажать на «Создать отношение доверия»:
В открывшемся мастере создания отношения доверия вводим имя домена Samba DC. В данном случае LIN.LOC:
На следующей вкладке «Тип доверия» выбираем «Доверие леса»:
Далее во кладке «Направление отношения доверия» выбираем «Двухстороннее»:
В открывшемся окне «Стороны отношения доверия» мы выбираем, на каком из доменов мы применяем настройку. В нашем случае у нас есть права администратора для обоих доменов, поэтому выбираем пункт «Для данного и указанного домена».
Если был выбран параметр «Только для данного домена», то необходимо будет задать Trust Secret Key, который в дальнейшем будет использоваться при создании доверительного отношения на стороне Samba DC.
На следующем этапе мастер свяжется с доменом LIN.LOC (если он доступен), и запросит логин и пароль от пользователя с правами установки доверительных отношений в домене LIN.LOC:
Далее на вкладке «Уровень проверки подлинности исходящего доверия — Локальный лес» выбираем «Проверка подлинности в лесу»:
Тоже самое выбираем и на следующей вкладке «Уровень проверки подлинности исходящего доверия — Указанный лес».
После очередного нажатия на кнопку «Далее» мастер в окне «Выбор доверия завершен» выдаст уведомление о том, что готов создать новое отношение доверия, и покажет краткую сводку по выбранным параметрам. Соглашаемся с параметрами, после чего должно появиться уведомление о том, что создание доверия успешно завершено:
После нажатия на «Далее» появится окно «Подтверждение исходящего доверия», а после него «Подтверждение входящего отношения доверия». Здесь и в первом и во втором окне оставляем «Нет, не подтверждаю это исходящее/входящее отношение доверие», так как на стороне Samba DC доверие нами еще не создавалось:
Настройка на стороне Linux
Предполагается, что домен уже настроен согласно документации, и функционирует с настроенным BIND9_DLZ в качестве DNS-backend.
1. Создать сервер условной перессылки для службы DNS. Для этого добавить в конец файла /etc/bind/ddns.conf следующие строки:
zone "win.dom" in { type forward; forwarders { 172.16.100.124; }; };
2. Проверяем возможность получения билета Kerberos в домене WIN.DOM:
# kinit admin@WIN.DOM # klist Ticket cache: KEYRING:persistent:0:0 Default principal: admin@WIN.DOM Valid starting Expires Service principal 31.03.2021 22:25:36 01.04.2021 08:25:36 krbtgt/WIN.DOM@WIN.DOM renew until 07.04.2021 22:25:30
3. Создание двухстороннего транзитивного подключения:
# samba-tool domain trust create win.dom --type=forest --direction=both --create-location=both -Uadmin@WIN
Внимание! Для входа в доверенный домен через SSSD надо использовать тип связи external, а не forest.
В случае использования Trust Secret Key в параметре —create-location нужно заменить опцию both на local, тогда после ввода пароля администратора, Samba DC прежде чем создать доверительные отношения сначала запросит Trust Key, созданный ранее при настройке в Windows.
В общем случае ваш вывод после ввода указанной команды должен быть примерно похож, на представленный ниже
LocalDomain Netbios[LIN] DNS[lin.loc] SID[S-1-5-21-1859323732-4157578351-390439025] RemoteDC Netbios[DC1] DNS[DC1.WIN.DOM] ServerType[PDC,GC,LDAP,DS,KDC,TIMESERV,CLOSEST,WRITABLE,GOOD_TIMESERV,FULL_SECRET_DOMAIN_6,ADS_WEB_SERVICE,DS_8,__unknown_00008000__] Password for [admin@WIN]: RemoteDomain Netbios[WIN] DNS[WIN.DOM] SID[S-1-5-21-534750258-3577407189-1049577339] Creating remote TDO. Remote TDO created. Setting supported encryption types on remote TDO. Creating local TDO. Local TDO created Setting supported encryption types on local TDO. Setup local forest trust information... Namespaces[2] TDO[WIN.DOM]: TLN: Status[Enabled] DNS[*.WIN.DOM] DOM: Status[Enabled] DNS[WIN.DOM] Netbios[WIN] SID[S-1-5-21-534750258-3577407189-1049577339] Setup remote forest trust information... Namespaces[2] TDO[lin.loc]: TLN: Status[Enabled] DNS[*.lin.loc] DOM: Status[Enabled] DNS[lin.loc] Netbios[LIN] SID[S-1-5-21-1859323732-4157578351-390439025] Validating outgoing trust... OK: LocalValidation: DC[\\DC1.WIN.DOM] CONNECTION[WERR_OK] TRUST[WERR_OK] VERIFY_STATUS_RETURNED Validating incoming trust... OK: RemoteValidation: DC[\\dc2.lin.loc] CONNECTION[WERR_OK] TRUST[WERR_OK] VERIFY_STATUS_RETURNED Success.
Настройка SSSD
В файл /etc/sssd/sssd.conf добавляем доверенный домен:
[domain/LIN.LOC/WIN.DOM] use_fully_qualified_names = false
Перезапускаем sssd:
Проверка:
# getent passwd petrov
petrov@win.dom:*:1588801103:1588801103:Petr Petrov:/home/win.dom/petrov:/bin/bash
Подводные камни и ограничения
1. Не применяются правила фильтрации SID
2. Вы не можете добавить пользователей и группы доверенного домена в доменные группы доверяющего домена.
3. Для входа в доверенный домен через SSSD надо использовать тип связи External, а не Forest.
4. Убедитесь, что NetBIOS имена доменов отличаются. Т.е. домен MYDOMAIN.WIN и MYDOMAIN.NEW будут иметь одинаковое короткое имя — MYDOMAIN. Это приведет к невозможности установки доверительных отношений.
Ссылки
- https://www.kania-online.de/wp-content/uploads/2019/06/trusts-tutorial-en.pdf
- http://us1.samba.org/samba/docs/man/Samba-HOWTO-Collection/InterdomainTrusts.html
- https://docs.pagure.org/sssd.sssd/design_pages/subdomain_configuration.html