Access-based Enumeration или как скрыть содержимое общих папок
Технология Access-based Enumeration (доступ на основе разрешений) позволяет на общих сетевых ресурсах (шарах) скрыть от пользователей файлы и папки, к которым у них отсутствует NTFS-доступ. Тем самым можно обеспечить дополнительную конфиденциальность информации, хранящейся в сетевом каталоге (за счет скрытия структуры и имен каталогов и файлов), улучшить юзабилити для пользователя, которому в процессе работы с сетевым каталогом не будет отображаться лишняя информация (тем более доступ к которой у него все равно отсутствует) и, самое главное, оградим системного администратора от постоянных вопросов пользователей «почему меня не пускает в эту папку!!». Попробуем детальнее разобраться в этой технологии и особенностях ее настройки и использования в различных версиях Windows.
Немного теории
Одним из недостатков сетевых папок Windows является тот факт, что по-умолчанию все пользователи при просмотре дерева общей папки могли, как минимум, видеть ее структуру и список содержащихся в ней файлов и каталога, в том числе тех, доступ к которым на уровне NTFS у них отсутствует (при попытке открыть такой файл или папку пользователь получает ошибку доступа «Access Denied»). Так почему бы не скрыть от пользователя те каталоги и файлы, к которым у него все равно нет доступа? Помочь в этой задаче должна технология Access-based Enumeration. Включив ABE на общей сетевой папке можно добиться того, чтобы разные пользователи видели различный список каталогов и файлов в одной и той же сетевой шаре, основанный индивидуальных правах доступа пользователя к этим папкам (ACL)..
Каким образом происходит взаимодействие между клиентом и сервером при обращении к общей папке:
- Клиент обращается к серверу с запросом на доступ к интересующего его каталогу в общей папке
- Сервер проверяет, есть ли у пользователя на уровне NTFS права доступа к данному каталогу
- Если доступ разрешен (просмотр содержимого/чтение/запись), пользователь видит список содержимого каталога
- Затем пользователь по такой же схеме запрашивает доступ к конкретному файлу или вложенному каталогу, если доступа к папке нет, пользователь получает соответствующее предупреждение
Из этой схемы ясно, что сервер сначала показывает пользователю все содержимое папки, а проверку прав доступа осуществляет только после попытки доступа к его содержимому.
Функционал Access-based Enumeration (ABE) позволяет реализовать проверку прав доступа на объекты файловой системы до того, как пользователю отправляется список содержимого папки. Следовательно, в конечный список будут попадать только те объекты, к которым у пользователя есть доступ на уровне NTFS, а все недоступные ресурсы — скрываются.
Т.е. пользователь одного отдела (например, склада) в одном и том же каталоге будет видеть один список папок и файлов.
А пользователи другого департамента, например ИТ, — другой .
Основной недостаток использования ABE на файловых серверах – дополнительная нагрузка на сервер. Особенно это можно почувствовать на высоконагруженных файловых серверах. Чем больше количество объектов в просматриваемом каталоге, и чем больше количество пользователей, тем больше задержка. По заявлению Microsoft в случае наличия в отображаемом каталоге 15000 объектов (файлов и каталогов), скорость открытия папки замедляется на 1-3 секунды. Именно поэтому, при проектировании структуры общих папок, рекомендуется уделить большое внимание созданию четкой и иерархической структуры подпапок, в этом случае замедление скорости открытия каталогов будет незаметным.
Примечание. Стоит понимать, что Access-based Enumeration не скрывает от пользователя сам список общих ресурсов (шар) на файловом сервере, а действует только по отношению к их содержимому. Если нужно скрыть от пользователя именно шару, необходимо в конец названия общей папки добавить символ $.
Управлять ABE можно из командной строки (утилита abecmd.exe), из графического интерфейса или через специальный API.
Ограничения ABE
Access-based Enumeration в Windows не работает в случаях:
- Если в качестве файл-сервера используется Windows XP или Windows Server 2003 без Service Pack
- При локальном просмотре каталогов (непосредственно с сервера)
- Для членов локальной группы администраторов (они всегда видят полный список)
ABE в Windows Server
В 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.
В Windows Server 2008/R2 никаких дополнительных компонентов устанавливать не нужно, т.к. возможность управления функционалом ABE уже встроена в графический интерфейс Windows. Чтобы включить Access-based Enumeration для конкретной папки в Windows Server 2008, откройте mmc консоль управления Share and Storage Management (Start –> Programs –> Administrative Tools ->Share and Storage Management). Перейдите в окно свойств нужной шары. Затем перейдите в окно расширенных настроек (кнопка Advanced) и включите опцию Enable access-based enumeration.
Access-based enumeration в Windows Server 2012
Настройка ABE в новой Windows Server 2012 также крайне проста. Чтобы включить ABE в Windows Server 2012, необходимо сначала, естественно, установить роль File And Storage Services,а затем в консоли Server Manager перейти в свойства общей папки.
И в разделе Settings включить опцию Enable access-based enumeration.
Управление 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
ABE в клиентских ОС: Windows Vista, Windows 7, Windows 8 и выше
Многим пользователем, особенно в домашних сетях, также хотелось бы иметь возможность воспользоваться функционалом Access-Based Enumeration. Проблема заключается в том, что в клиентских ОС Microsoft отсутствует как графический, так и командный интерфейс управления «Перечислением на основе доступа». К счастью, утилита abecmd.exe, входящая в состав пакета для Windows Server 2003, прекрасно работает и на клиентских ОС. Т.к. пакет Windows Server 2003 Access-based Enumeration на Windows 8/7/Vista не устанавливается, придется сначала установить его на Windows Server 2003, а затем скопировать его из каталога C:\windows\system32 в такой же каталог на клиенте. После этого включить ABE можно по сценарию с командной строкой, описанному выше.
Примечание. В корпоративной среде ABE замечательно сочетается с папками DFS, скрывая от пользователя «ненужные» папки и предоставляя более удобную структуру дерева общих папок. Включит ABE на DFS можно с помощью консоли DFS Management или утилиты dfsutil.exe:
dfsutil property abde enable \\<namespace root>
Только полноправные пользователи могут оставлять комментарии. Аутентифицируйтесь пожалуйста, используя сервисы.