Samba server windows server 2012 r2

Установка и ввод нового контроллера

С установкой 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

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 по умолчанию включены.

проверить какие версии smb включены в windows

Также в этих версиях 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
:

Get-SMBConnection вывести в powershell версии smb, исопльзуемые для подключения

Версия 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

Get-SmbSession Получить количество клиентов, использующих разные версии SMB

В нашем примере имеется 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

Set-SmbServerConfiguration - powershell отключить SMBv2 и SMBv3

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 сервер в windows 7 через powershell

Включить 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) нужно использовать службы обнаружения (линк).

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Установка доверительных отношений между 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 — Домены и Доверие»:

Server manager.png

В открывшемся окне в контекстном меню домена WIN.DOM выбирать «Свойства». Откроется окно свойств, в котором необходимо перейти во вкладку «Отношения доверия» и нажать на «Создать отношение доверия»:

Properties win dom.png

В открывшемся мастере создания отношения доверия вводим имя домена Samba DC. В данном случае LIN.LOC:

Trust name.png

На следующей вкладке «Тип доверия» выбираем «Доверие леса»:

Trust type.png

Далее во кладке «Направление отношения доверия» выбираем «Двухстороннее»:

Direction of trust.png

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

Если был выбран параметр «Только для данного домена», то необходимо будет задать Trust Secret Key, который в дальнейшем будет использоваться при создании доверительного отношения на стороне Samba DC.

Sides of trust.png

На следующем этапе мастер свяжется с доменом LIN.LOC (если он доступен), и запросит логин и пароль от пользователя с правами установки доверительных отношений в домене LIN.LOC:

User name and password.png

Далее на вкладке «Уровень проверки подлинности исходящего доверия — Локальный лес» выбираем «Проверка подлинности в лесу»:

Outgoing trust authentication level local forest.png

Тоже самое выбираем и на следующей вкладке «Уровень проверки подлинности исходящего доверия — Указанный лес».

После очередного нажатия на кнопку «Далее» мастер в окне «Выбор доверия завершен» выдаст уведомление о том, что готов создать новое отношение доверия, и покажет краткую сводку по выбранным параметрам. Соглашаемся с параметрами, после чего должно появиться уведомление о том, что создание доверия успешно завершено:

Trust creation complete.png

После нажатия на «Далее» появится окно «Подтверждение исходящего доверия», а после него «Подтверждение входящего отношения доверия». Здесь и в первом и во втором окне оставляем «Нет, не подтверждаю это исходящее/входящее отношение доверие», так как на стороне Samba DC доверие нами еще не создавалось:

Confirm outgoing trust.png

Настройка на стороне 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

  • Samba linux windows не может получить доступ
  • Samsung np300e5c как установить windows 7
  • Samsung np300e5a драйвера windows 10 64 bit
  • Sam файл windows 10 где лежит
  • Samsung notes приложение для windows