Приховуємо папки недоступні користувачеві за допомогою Access-Based Enumeration (ABE) в Windows Server

технологія Access-based Enumeration (ABE - Перерахування на підставі доступу) дозволяє на загальних мережевих ресурсах (кулях) приховати від користувачів файли і папки, до яких у них відсутня права доступу на читання на рівні NTFS. Тим самим можна забезпечити додаткову конфіденційність даних, що зберігаються в мережевому каталозі (за рахунок приховування структури та імен каталогів і файлів), поліпшити юзабіліті для користувача, якому в процесі роботи з мережевим каталогом не буде доступний широкому зайва інформація (тим більше доступ до якої у нього все одно відсутній) і, найголовніше, захистимо системного адміністратора від постійних питань користувачів "чому мене не пускає в цю папку!!". Спробуємо детальніше розібратися в цій технології і особливості її налаштування і використання в різних версіях Windows.

зміст:

  • Особливості доступу до загальних мережних папок Windows
  • Обмеження Access Based Enumeration
  • Використання ABE в Windows Server 2008/2008 R2
  • Налаштування Access Based Enumeration в Windows Server 2012 R2 / 2016
  • Налаштування Access Based Enumeration в Windows Server 2003
  • Управління ABE з командного рядка
  • Управління Access Based Enumeration за допомогою PowerShell
  • Access-Based Enumeration в Windows 10 / 8.1 / 7

Особливості доступу до загальних мережних папок Windows

Одним з недоліків мережевих папок Windows є той факт, що за замовчуванням всі користувачі при перегляді вмісту загальної папки могли, як мінімум, бачити її структуру та список що містяться в ній файлів і каталогів, в тому числі тих, доступ до яких на рівні NTFS у них відсутня (при спробі відкрити такий файл або папку користувач отримує помилку доступу "Доступ заборонений / Access Denied"). Так чому б не приховати від користувача ті каталоги і файли, до яких у нього все одно немає доступу? Допомогти в цьому завданні повинна технологія Access Based Enumeration (ABE). Включивши ABE на загальній мережевий папці можна домогтися того, щоб різні користувачі бачили різний список каталогів і файлів в одній і тій же мережевий кулі, заснований індивідуальних правах доступу користувача до цих папок (ACL).

Яким чином відбувається взаємодія між клієнтом і сервером при зверненні до спільної папки:

  • Клієнт звертається до сервера з запитом на доступ до цікавого для його каталогу в загальній мережевий папці;
  • служба LanmanServer на сервері перевіряє, чи є у користувача права доступу до даного каталогу на рівні дозволів файлової системи NTFS;
  • Якщо доступ дозволений (перегляд вмісту / читання / запис), користувач бачить список вмісту каталогу;
  • Потім користувач за такою ж схемою може відкрити конкретний файл або вкладений каталог (ви можете подивитися, хто відкрив конкретний файл в мережевій папці так). Якщо доступу до папки немає, користувач отримує відповідне повідомлення.

З цієї схеми ясно, що сервер спочатку показує користувачеві весь вміст папки, а перевірку прав доступу на конкретний об'єкт здійснює тільки після спроби доступу до його вмісту.

Функціонал Access Based Enumeration (ABE) дозволяє реалізувати перевірку прав доступу на об'єкти файлової системи до того, як користувачу відправляється список вмісту папки. Отже, в кінцевий список потраплятимуть тільки ті об'єкти, до яких у користувача є хоча б права Read на рівні NTFS, а все недоступні ресурси просто не відображаються (ховаються).

Тобто користувач одного відділу (наприклад, складу) в одному і тому ж мережевому каталозі (\\ filesrv1 \ docs) буде бачити один список папок і файлів. Як ви бачите, у користувача відображаються тільки дві папки: Public і Sklad.

У користувачів іншого департаменту, наприклад, ІТ (які включені в іншу групу безпеки Windows), відображається інший список вкладених каталогів. Крім каталогів Public і Sklad у даних користувачів в мережевій теці видно ще 6 директорій.

Основний недолік використання ABE на файлових серверах - додаткове навантаження на сервер. Особливо це можна відчути на високонавантажених файлових серверах. Чим більше кількість об'єктів в просматриваемом каталозі, і чим більше кількість користувачів відкривають файли на ньому, тим більше затримка. За заявою Microsoft в разі наявності в видимій частині каталозі 15000 об'єктів (файлів і каталогів), швидкість відкриття папки сповільнюється на 1-3 секунди. Саме тому, при проектуванні структури загальних папок, рекомендується приділити велику увагу створенню чіткої та ієрархічної структури підпапок, в цьому випадку уповільнення швидкості відкриття каталогів буде непомітним.

Примітка. Варто розуміти, що Access Based Enumeration не приховує від користувача сам список загальних мережевих ресурсів (куля) на файловому сервері, а діє тільки по відношенню до їх вмісту. Якщо потрібно приховати від користувача саме мережеву папку, необхідно в кінець назви загальної папки додати символ $.

Управляти ABE можна з командного рядка (утиліта abecmd.exe), З графічного інтерфейсу, PowerShell або через спеціальний API.

Обмеження Access Based Enumeration

Access-based Enumeration в Windows не працює в випадках:

  1. Якщо в якості файл-сервера використовується Windows XP або Windows Server 2003 без Service Pack;
  2. При локальному перегляді каталогів (безпосередньо з сервера). Наприклад, користувач, підключившись до RDS сервера буде бачити всі локальні папки, якщо даний сервер використовується і як файловий сервер);
  3. Для членів локальної групи адміністраторів файлового сервера (вони завжди бачать повний список файлів).

Використання ABE в Windows Server 2008/2008 R2

У Windows Server 2008 / R2 для використання функціоналу Access Based Enumeration ніяких додаткових компонентів встановлювати не потрібно, тому що можливість управління функціоналом ABE вже вбудована в графічний інтерфейс Windows. Щоб включити Access-based Enumeration для конкретної папки в Windows Server 2008/2008 R2, відкрийте mmc консоль управління Share and Storage Management (Start -> Programs -> Administrative Tools -> Share and Storage Management). Перейдіть у вікно властивостей потрібної кулі. Потім перейдіть у вікно розширених налаштувань (кнопка Advanced) І включіть опцію Enable access-based enumeration.

Налаштування Access Based Enumeration в Windows Server 2012 R2 / 2016

Налаштування ABE в Windows Server 2012 R2 / 2016 також виконується просто. Щоб включити Access Based Enumeration необхідно спочатку, природно, встановити роль файлового сервера (File And Storage Services), а потім в консолі Server Manager перейти в властивості загальної папки.

І в розділі Settings включити опцію Enable access-based enumeration.

Налаштування Access Based Enumeration в Windows Server 2003

У Windows Server 2003 (знята з підтримки) технологія ABE стала підтримуватися починаючи з Service Pack1. Щоб включити Access-based Enumeration в Windows Server 2003 SP1 (і вище), потрібно завантажити і встановити пакет _http: //www.microsoft.com/en-us/download/details.aspx? Id = 17510. В процесі установки необхідно вказати, чи потрібно автоматично включити ABE для всіх загальних папок на сервері, або настройка буде проводитися в індивідуальному порядку. Якщо обраний другий пункт, то після закінчення установки пакета, у властивостях загальних папок з'явиться нова вкладка Access-based Enumeration.

Щоб активувати ABE для конкретної папки, включіть в її властивостях опцію Enable access-based enumeration on this shared folder.

Також відзначимо, що в Windows 2003 підтримується використання Access Based Enumeration на основі DFS, однак налаштувати його можна тільки з командного рядка за допомогою утиліти cacls.

Управління ABE з командного рядка

Настройками Access-based Enumeration можна управляти з командного рядка за допомогою утиліти Abecmd.exe. Дана утиліта входить в пакет Access-based Enumeration для Windows Server 2003 SP1 (посилання вище).

утиліта Abecmd.exe дозволяє активувати ABE відразу для всіх каталогів або ж персонально. Наступна команда включить Access-Based Enumeration відразу для всіх куля:

abecmd / enable / all

Або для конкретної папки (наприклад, кулі з ім'ям Docs):

abecmd / enable Docs

Управління Access Based Enumeration за допомогою PowerShell

Для управління настройками Access Based Enumeration для конкретних папок можна використовувати PowerShell модуль SMBShare (встановлений за замовчуванням в Windows 10 / 8.1 і Windows Server 2016/2012 R2). Виведемо властивості конкретної мережевої папки:

Get-SmbShare Install | fl *

Зверніть увагу на значення атрибута FolderEnumerationMode. У нашому випадку його значення - Unrestricted. Це означає, що ABE відключений для цієї папки.

Можна перевірити статус ABE для всіх мережевих папок сервера:

Get-SmbShare | Select-Object Name, FolderEnumerationMode

Щоб включити ABE для папки, виконайте:

Get-SmbShare Install | Set-SmbShare -FolderEnumerationMode AccessBased

Ви можете включити Access Based Enumeration для всіх опублікованих мережевих папок (в тому числі адміністративних куля ADMIN $, C $, E $, IPC $), виконайте:

Get-SmbShare Install | Set-SmbShare -FolderEnumerationMode AccessBased

Щоб відключити ABE, виконайте:

Get-SmbShare Install | Set-SmbShare -FolderEnumerationMode Unrestricted

Access-Based Enumeration в Windows 10 / 8.1 / 7

Багатьом користувачем, особливо в домашніх мережах, також хотілося б мати можливість скористатися функціоналом Access-Based Enumeration. Проблема полягає в тому, що в клієнтських ОС Microsoft відсутня як графічний, так і командний інтерфейс управління "Перерахуванням на основі доступу".

У Windows 10 (Server 2016) і Windows 8.1 (Server 2012R2) для управління Access-based Enumeration можна використовувати PowerShell (див. Розділ вище). У старіших версіях Windows, вам необхідно встановити останню версію PowerShell (> = 5.0) або використовувати утиліту abecmd.exe з пакету для Windows Server 2003, прекрасно працює і на клієнтських ОС. Оскільки пакет Windows Server 2003 Access-based Enumeration на Windows 10 / 8.1 / 7 не встановлюється, доведеться спочатку встановити його на Windows Server 2003, а потім скопіювати його з каталогу C: \ windows \ system32 в такий же каталог на клієнті. Після цього включити ABE можна за сценарієм з командним рядком, описаного вище.

Примітка. У корпоративному середовищі ABE чудово поєднується з папками DFS, приховуючи від користувача "непотрібні" папки і надаючи більш зручну структуру дерева загальних папок. Включити ABE на просторі імен DFS можна за допомогою консолі DFS Management або утиліти dfsutil.exe:
dfsutil property abde enable \\

Крім того, ви можете включати ABE на комп'ютерах домену AD за допомогою групових політик. Для цього використовується GPP в секції: Computer Configuration -> Preferences -> Windows Settings -> Network Shares).

Як ви бачите, у властивостях мережевої папки є опція Access-Based Enumeration, якщо змінити значення на Enable, для всіх загальних папок, створених за допомогою даної GPO буде включений режим ABE.