Страницы
Что такое Access-based Enumeration (ABE)
Мне часто приходится слышать вполне логичный вопрос от своих слушателей: «Почему Windows показывает пользователям ВСЕ файлы из общих папок, несмотря на то, что к большей их части у пользователя все равно нет доступа?»
Ответ на вопрос и способ решения проблемы описаны в этой статье. В процессе написания и тестирования открыл для себя много интересного.
Теория
Встроенный в Windows механизм отображения общих папок уходит своими корнями в дремучие времена клиентов DOS и сервера Microsoft LAN Manager. В то время и количество сетевых ресурсов было небольшим, и вычислительные возможности систем ограничены. Поэтому алгоритмы предоставления информации о сетевых ресурсах были предельно простыми и, по большому счету, они не изменились до сегодняшнего дня.
Упрощенно, последовательность обращения к файлу в «шареной папке» выглядит так:
- клиент, обращаясь к серверу LAN Manager (сервис LanmanServer в современных Windows), получает список всех общих папок, находящихся на нем;
- пользователь выбирает название общей папки и пытается к ней подключиться;
- сервер проверяет, есть ли у пользователя разрешение на выбранную общую папку и, при наличии разрешения, высылает клиенту список всех файлов и папок в ней находящихся;
- пользователь выбирает интересующий его файл и пытается его открыть;
- сервер проверяет, есть ли у пользователя права доступа к выбранному файлу и, если они есть, высылает пользователю сам файл.
Исходя из указанной выше последовательности видно, что сервер проверяет клиентские права доступа на файлы и папки уже ПОСЛЕ того, как пользователь получает список доступных ресурсов и выбирает один из них.
Функционал Access-based Enumeration (ABE) позволяет решить проблему избыточного отображения файлов и папок на сетевых ресурсах, к которым у конечного пользователя все равно нет доступа.
После активации ABE сервер начинает проверять права пользователя на ресурсы ДО ТОГО, как высылает клиенту список имеющихся в общей папке ресурсов. Соответственно, в список попадают только те файлы и папки, которые пользователь может открыть, и ничего лишнего пользователь больше не видит.
Пример того, как общая папка Docs с включенной опцией ABE выглядит со стороны клиента .
. а вот, что на самом деле лежит в папке Docs (после отключения ABE):
Разница существенная .
Практика
В русскоязычном интерфейсе Windows термин Access-based Enumeration (ABE) переводится как «Перечисление на основе доступа«.
Опция ABE доступна для настроек общих папок, начиная с Windows Vista. Windows XP функционал ABE не поддерживает. ABE может также применяться и для пространства имен DFS (Distributed File System). Детали ниже.
ABE и Windows Server 2003 / R2
В Windows Server 2003 функционал Access-based Enumeration появился вместе с Service Pack 1. Средства настройки ABE, тем не менее, в Service Pack не встроены. Скачать их можно тут.
В процессе установки средств управления ABE мастер предлагает включить ABE на все имеющиеся папки или включить ABE в индивидуальном режиме позже.
После установки пакета в свойствах всех папок на Windows Server 2003 появляется вкладка Access-based Enumeration. На ней можно включить/отключить ABE индивидуально для каждой общей папки или для всех имеющихся папок сразу.
Обратите внимание, что для всех созданных после установки ABE общих папок функция ABE будет ОТКЛЮЧЕНА и на новых папках ее нужно активировать принудительно
Access-Based Enumeration in Windows 10 / 8.1 / 7
Many users, especially in home or SOHO networks, also would like to use Access-Based Enumeration features. The problem is that Microsoft client OSs have neither graphical, nor command interface to manage Access-Based Enumeration.
In Windows 10 (Server 2016) and Windows 8.1 (Server 2012R2), you can use PowerShell to manage Access-based Enumeration (see the section above). In older versions of Windows, you need to install the latest version of PowerShell (>= 5.0) or use the abecmd.exe utility from the Windows Server 2003 package, it works fine on client OSs. Since the Windows Server 2003 Access-based Enumeration package is not installed on Windows 10, 8.1 or 7, you have to install it first on Windows Server 2003, and then copy it from the C:windowssystem32 directory to the same folder on the client. After that, you can enable ABE according with the commands described above.
In addition, you can enable ABE on computers in the AD domain using GPO. This can be done using GPP in the section: Computer Configuration -> Preferences -> Windows Settings -> Network Shares).
Access-Based EnumerationEnable
Как спрятать папку в Windows
Проблема в защите информации от посторонних глаз очень актуальная если доступ к вашему компьютеру имеют родственники, коллеги или друзья. У вас наверняка есть файлы не предназначенные для публичного просмотра. В этой статье речь пойдёт о том как скрыть и защитить такую информацию.
Способы, которые я покажу, не скроют папку от продвинутого пользователя ПК, но от неопытных защита будет надёжной. Эффективную защиту может обеспечить шифрование. Как его сделать написано в конце данной инструкции.
В дополнении ко всем методам я рекомендую хранить папку глубоко в каталогах компьютера с неприметным названием.
Хочу заметить, что существуют более эффективные методы защиты данных. Например, создать архив и установить пароль. Всё же просто скрыть тоже один из методов. Примеры использования будут проходить в системе Windows 7.
Скрыть в настройках Windows
Самый простой способ — это отключить показ скрытых папок. Любой кто знаком с данной настройкой легко сможет обнаружить скрытую папку.
Для этого перейдите в меню Пуск >> Панель управления (сделайте вид крупными значками) >> Параметры папок.
Затем войдите во вкладку «Вид» и поставьте галочку в «Не показывать скрытые файлы, папки и диски» как на изображении ниже.
Здесь отметьте «Скрытый» атрибут и сохраните результат.
Это скроет папку. Чтобы её увидеть, понадобится снова включить отображение скрытых элементов.
В этом видео показан ещё 1 способ с применением num цифр на клавиатуре (могут отсутствовать), который позволит сделать имя и значок невидимыми на рабочем столе. Отлично подойдёт для использования с остальными методами.
Изменение внешнего вида
Вся суть заключается в изменение имени и значка. Покажу на примере своей. Вот так выглядит моя скрытая папка.
Чтобы её сделать зайдите в свойства.
Выберите вкладку «Настройка» и в ней найдите кнопку «Сменить значок» как на изображении ниже.
Внешне никто не догадается, что у вас там хранятся какие-то файлы. Можно эффективно комбинировать с двумя другими.
Продвинутый способ
В этом способе нужно запаковать папку и картинку в архив. Изменить программу для открытия по умолчанию и поменять значок. При двойном щелчке будет открываться изображение, а при открытии с помощью архиватора откроется спрятанная папка.
Перед этим следует подготовиться. В параметрах папок сделайте невидимым расширения если их видно.
Затем переименуйте его под название изображения и зайдите в свойства. Здесь нужно будет изменить приложение с помощью которого будет открываться архив.
Выберите приложение, которым вы обычно открываете изображения.
Половина дела сделано, но значок выглядит неестественно. Нужно это исправить. Скачайте утилиту для изменения значков и запустите. Она не требует установки. Перейдите в расширение файлов.
Войдите в категорию иконок.
Здесь в поиске введите расширение вашего архива. У меня ZIP.
Теперь выберите иконку, которая отображается у остальных изображений.
Должно получиться примерно как у меня. Теперь, чтобы попасть в скрытую папку, выберите в контекстном меню >> открыть с помощью >> проводник Windows (или архиватором). При простом открытии будет показываться картинка.
Но к сожалению есть 2 недостатка:
- Иконка и программа для открытия меняется у всех архивов с определенным расширением.
- Тип файла не скрывается в свойствах.
Если вам не будут мешать эти недостатки, то смело пользуйтесь.
Программа Запретный файл
Эта программа не скрывает, а шифрует папку тем самым обеспечивает надёжную защиту информации. Очень удобно и можно использовать в связке с другими способами. Главное не забыть пароль для расшифровки.
Получить доступ можно будет только с помощью пароля и этой программы. Если вы его забудете, то навсегда потеряете файлы.
Я покажу пример использования на своей папке (sitemozg). Скачайте её и распакуйте архив. Запустите исходник. Перед вами появится окно, в котором нужно указать путь к папке.
Укажите путь.
Так как программа не требует установки то, её можно хранить на флешке.
Ко всем файлам хранящимся в этой папке добавится расширение .ciphered.
Процесс открытия так же прост. Запустите программу и во вкладке «Расшифровка» укажите путь до папки, а затем введите пароль. Нажмите «Расшифровать» как на изображении ниже.
Затем зайдите в неё и вы увидите, что расширение (.ciphered) пропало и можно спокойно работать с файлами. Не забудьте снова зашифровать когда закончите работу.
Каким способом вы воспользовались?
- Просто запретил отображение скрытых папок. 0%, 00 0 – 0% из всех
- Изменил внешний вид. 0%, 00 0 – 0% из всех
- Сделал невидимой на рабочем столе (как в видео). 0%, 00 0 – 0% из всех
- Воспользовался продвинутым способом. 0%, 00 0 – 0% из всех
- Зашифровал программой. 0%, 00 0 – 0% из всех
Настройка Access Based Enumeration (ABE) в Windows Server 2016
По умолчанию, когда пользователь открывает некую общую сетевую папку на сервере (предполагаем, что у пользователя есть право на доступ к сетевой шаре), SMB отображает ему полный список каталогов и файлов, которые находятся в ней. Функционал Windows «перечисление на основе доступа» (Access Based Enumeration – ABE) позволяет в сетевой папке скрыть от пользователя те файлы и папки, на которые у него отсутствуют NTFS разрешения.
Технология Access Based Enumeration впервые появилась еще в Windows Server 2003 SP1 и помогает предотвратить просмотр пользователями списков чужих файлов и папок.
Процесс доступа к сетевой папке в среде Windows выполняется следующим образом:
- Пользователь обращается к серверу и запрашивает доступ к общей сетевой папке
- Служба LanmanServer на сервере (именно она отвечает за предоставление доступа к файлам по SMB) проверяет, есть ли у пользователя необходимые разрешений на доступ к данной сетевой папке. Если доступ имеется, служба возвращает список пользователю список с содержимым папки
- Затем пользователь может выбрать и попытаться открыть необходимый ему файл или папку
- Сервер проверяет, имеет ли пользователь необходимые NTFS права на доступ к данному элементу. Если у пользователя есть необходимые разрешения, он открывает нужный объект. Если у пользователя не достаточно прав — возвращается ошибка отказа в доступе.
Согласно этому алгоритму сервер сначала возвращает пользователю список всего содержимого папки, а проверка наличия прав доступа к отдельным файлам и папкам выполняется только при обращении к ним. При включении ABE, служба LanmanServer вернет пользователю не все содержимое папки, а только те объекты файловой системы, на которые у пользователя есть права (Read или List contents).
Некоторые особенности ABE:
- ABE управляет только списком содержимого общей папки, но не скрывает сами шары от пользователей. Поэтому, когда пользователь подключается к серверу (\server-name), он увидит все имеющиеся на нем шары. Чтобы создать скрытую шару, нужно добавить в конец ее имени знак $, например SecretFolder$
- При локальном или RDP входе пользователя на сервер, ABE не работает
- Члены локальной группы «Администраторы» всегда видят полное содержимое сетевой папки
ABE включается для каждой сетевой папки по отдельности. Чтобы настроить ABE, откройте консоль Server Manager и выберите роль «File and Storage Services» (роль уже должна быть установлена).
Затем перейдите в раздел «Shares» и выберите из списка сетевую папку, для которой необходимо включить ABE. Щелкните правой кнопкой по папке и выберите «Properties».
В окне свойств папки перейдите на вкладку Settings и включите опцию Enable access-based enumeration.
Кроме того, вы можете включить перечисление на основе доступа на сетевом ресурсе с помощью PowerShell командлета Set-SmbShare:
Set-SmbShare -Name «Share» -FolderEnumerationMode AccessBased
В том случае, если вы управляете общими папками централизованно с помощью GPO (секция Computer Configuration -> Preferences -> Windows Settings -> Network Shares), вы можете включить ABE в ее свойствах (скрин ниже).
В качестве небольшой иллюстрации работы ABE. На скриншоте ниже показано как выглядит содержимое сетевой папки, для которой включен ABE для системного администратора сервера.
А так в проводнике выглядит та же самая папка для менеджера из отдела управления активами.
Таким образом, технология ABE облегчает жизнь как пользователям, так и администраторам. Пользователи не видят лишнюю и избыточную информацию в проводнике, а администратору не нужно больше отвечать на вопросы пользователи об отсутствии доступа к той или иной папке.
Однако у технологии Access Based Enumeration есть и небольшой недостаток — дополнительная нагрузка на сервер. Нагрузка зависит от количества пользователей сервера, количества объектов в общих папках и сложности ACL. При высокой загрузке сервера, скорость открытия папок на файловом сервере может значительно снижаться.
Управление Access Based Enumeration с помощью PowerShell
Для управления настройками Access Based Enumeration для конкретных папок можно использовать PowerShell модуль SMBShare (установлен по-умолчанию в Windows 10/8.1 и Windows Server 2016/ 2012 R2). Выведем свойства конкретной сетевой папки:
Обратите внимание на значение атрибута 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
Справочники
Этот параметр политики определяет, какие дополнительные разрешения будут назначены для анонимных подключений к устройству. Windows позволяет анонимным пользователям выполнять определенные действия, такие как список имен учетных записей домена и сетевых акций. Это удобно, например, когда администратор хочет предоставить доступ пользователям в доверенного домена, который не поддерживает взаимное доверие. Однако даже при включенном параметре политики анонимные пользователи будут иметь доступ к ресурсам с разрешениями, которые явно включают встроенную группу ANONYMOUS LOGON.
Этот параметр политики не влияет на контроллеры домена.
Неправильное использование этого параметра политики — распространенная ошибка, которая может привести к потере данных или проблемам с доступом к данным или безопасностью.
Возможные значения
-
Enabled
-
Отключено
Администратор не может получить дополнительные разрешения для анонимных подключений к устройству. Анонимные подключения будут зависеть от разрешений по умолчанию. Однако неавторизованный пользователь может анонимно перечислять имена учетных записей и использовать эти сведения для попытки угадать пароли или выполнить атаки соцтехники.
-
Не определено
Значения по умолчанию
В следующей таблице перечислены фактические и эффективные значения по умолчанию для этой политики. Значения по умолчанию также можно найти на странице свойств политики.
Тип сервера или объект групповой политики | Значение по умолчанию |
---|---|
Default Domain Policy | Не определено |
Политика контроллера домена по умолчанию | Не определено |
Параметры по умолчанию для автономного сервера | Отключено |
Dc Effective Default Параметры | Отключено |
Действующие параметры по умолчанию для рядового сервера | Отключено |
Действующие параметры по умолчанию для клиентского компьютера | Отключено |
How to Enable Access-Based Enumeration (ABE) on Windows Server?
Access-based Enumeration (ABE) allows to hide objects (files and folders) from users who don’t have NTFS permissions (Read or List) on a network shared folder in order to access them. Thus you can provide additional confidentiality of data stored in a shared folder (due to hiding the structure and names of folders and files), improve its usability since users won’t see odd data (they don’t have access to) and, what’s more important, save a system administrator from constant questions of users “Why I cannot access this folder. ”. Let’s try to consider this technology, configuration peculiarities and use of ABE in various Windows versions in details.
Использование 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.
Преимущества и ограничения унаследованных разрешений
Существует два основных преимущества использования унаследованных разрешений для управления тем, кто из пользователей может просматривать папки в пространстве имен DFS:
- Можно быстро применить унаследованные разрешения к множеству папок, не прибегая к использованию сценариев.
- Можно применять унаследованные разрешения к корням пространства имен и папкам без конечных объектов.
Несмотря на преимущества, с унаследованными разрешениями в пространствах имен DFS связан ряд ограничений, которые делают их неприменимыми для большинства сред:
- Изменения унаследованных разрешений не реплицируются на другие серверы пространства имен. Таким образом, использовать унаследованные разрешения имеет смысл только применительно к изолированным пространствам имен или в средах, где можно реализовать стороннюю систему репликации для обеспечения синхронизации списков управления доступом (ACL) на всех серверах пространства имен.
- Оснастка «Управление DFS» и команда Dfsutil не позволяют просматривать или изменять унаследованные разрешения. Таким образом, для управления пространством имен в дополнение к оснастке «Управление DFS» или команде Dfsutil необходимо использовать проводник или команду Icacls.
- При использовании унаследованных разрешений невозможно изменить разрешения папки с конечными объектами, кроме как с помощью команды Dfsutil. Пространства имен DFS автоматически удаляют разрешения с папок с конечными объектами, заданные с использованием других средств или методов.
- При задании разрешений для папки с конечными объектами, когда вы используете унаследованные разрешения, список управления доступом, который вы установили для папки с конечными объектами, объединяется с разрешениями, наследуемыми от родителя папки в файловой системе. Необходимо изучить оба набора разрешений, чтобы определить, каковы будут результирующие разрешения.
Примечание
При использовании унаследованных разрешений проще всего задать разрешения для корней пространства имен и папок без конечных объектов. Затем эти унаследованные разрешения можно использовать для папок с конечными объектами, чтобы они наследовали все разрешения от своих родителей.
Managing Access Based Enumeration Using PowerShell
You can use the SMBShare PowerShell module (installed by default in Windows 10/ 8.1 and Windows Server 2016/2012 R2) to manage the settings of Access Based Enumeration for specific folders. Let’s list the properties of a specific shared folder:
FolderEnumerationModeUnrestricted
You can check the status of ABE for all shared folders of the server:
Get-SmbShare | Select-Object Name,FolderEnumerationMode
To enable ABE for a specific folder:
Get-SmbShare Install | Set-SmbShare -FolderEnumerationMode AccessBased
Get-SmbShare | Set-SmbShare -FolderEnumerationMode AccessBased
To disable ABE use the command:
Get-SmbShare Install | Set-SmbShare -FolderEnumerationMode Unrestricted
Implementing Access-Based Enumeration on Windows Server 2003
In Windows Server 2003 (not supported now), ABE became supported starting from Service Pack 1. To enable Access-based Enumeration in Windows Server 2003 SP1 (or later), you have to download and install a package following this link http://www.microsoft.com/en-us/download/details.aspx?id=17510. During installation you have to specify whether ABE will be enabled for all shared folders on your server or you’ll configure it manually. If you choose the second option, a new tab, Access-based Enumeration, will appear in the network share properties after the installation.
To activate ABE for a certain folder, check the option Enable access-based enumeration on this shared folder in its properties.
It’s important to mention that Windows 2003 supports DFS-based Access Based Enumeration, but it can be configured only from the command prompt using cacls.
Managing Access Based Enumeration Using PowerShell
You can use the SMBShare PowerShell module (installed by default in Windows 10/ 8.1 and Windows Server 2016/2012 R2) to manage the settings of Access Based Enumeration for specific folders. Let’s list the properties of a specific shared folder:
Note the value of the FolderEnumerationMode attribute. In our case, its value is Unrestricted. This means that ABE is disabled for this folder.
You can check the status of ABE for all shared folders of the server:
To enable ABE for a specific folder:
You can enable Access Based Enumeration for all published network folders (including administrative shares ADMIN$, C$, E$, IPC$,…) by running the command:
To disable ABE use the command:
Access-based Enumeration (ABE) или раздаём права на директории правильно
Удивительно, но несмотря на то, что Access-based Enumeration (ABE) появился ещё во времена Windows 2003 (SP1) (в русской редакции эта функция называется «Перечисление на основе доступа»), данной функцией пользуются до сих пор крайне небольшое количество системных администраторов, хотя данный функционал может достаточно сильно сберечь нервы, не отвечая постоянно на вопрос пользователя «а почему меня не пускает в папку Х?». Об этой полезной функции сегодня мы и поговорим.
Немного поговорим о теории и на пальцах разберём как происходит общение между клиентом и сервером в вопросе предоставления файловых данных: — клиент обращается к серверу с запросом на доступ к определённой директории — сервер проверяет — есть ли у пользователя разрешение на доступ к этой директории — если у пользователя доступ к директории (чтение/листинг) разрешён — пользователи видит директории/файлы в этой директории — по той же схеме пользователь запрашивает доступ к другим директориям/файлам т.е. можно сделать вывод что проверка прав доступа производится после показа всего содержимого, что не всегда есть хорошо. Расскажу вот абстрактную историю из жизненного опыта: приходит на работу жена ген.директора и пытается совать нос во все дела компании, и естественно хочет получить доступ ко всем данным компании, хранящимся на файловом сервере. С одной стороны — доступ ей давать никто особо и не хочет, по тому что не надо ей туда лезть (ну как максимум — доступ на чтение, но это крайний случай), с другой стороны — жена генерального директора это вам не рядовой менеджер организации и просто так запрос не отклонишь. Но ведь она не в курсе — а что именно хранится на файловом сервер и какая структура данных там существует. Именно в такой ситуации нам и поможет ABE, она позволяет проверять права доступа до обращения к директориям/файлам в директории. Т.е. пользователь заходит в корневую директорию, допустим share и видит всего пару директорий, когда на самом деле все остальные сотрудники (ну кому это положено) видят полную структуру директорий и файлов. Соответственно не возникает вопросов что нет доступа в директорию Х и выдайте мне срочно-срочно права на полный доступ. Это один из тех примеров, когда IT подразделению приходится решать не совсем их проблемы, но чем можно очень сильно облегчить собственную жизнь. Но в принципе эта технология позволяет предотвратить несанкционированные действия в сторону файлового сервера. Ведь многие из вас ни раз встречали среди офисных сотрудников «мини-хакеров», как я люблю их называть. Которые любят позапускать сетевые сканеры, поискать дыры на ваших серверах и вообще — занимаются не работой, а членовредительством. Настройка в Windows (у меня в данном случае свеженький 2012) достаточно проста: Включаем данную функцию:
Настройка в linux ещё более проста, она сводится к включению ABE в конфиге samba: access based share enum = yes и выдать так же правильные права на директории.
Что хотелось бы сказать в конце: Как можно уже логически догадаться — чем больше директорий в корневой директории — тем медленее будет осуществляться доступ к данным. Продумывайте более иерархичной. Microsoft заявляет, что при наличии 15000 файлов осуществляется падение скорости открытия папки на 1-3 секунды. ABE отлично сочетается с DFS, для более удобного администрирования сетевых ресурсов. Облегчайте жизнь себе и своим последователям, делайте администрирование простым, быстрым и удобным.
Это пожалуй первое упоминание Windows Server в моём блоге, но это не значит что я как то игнорирую эту ОС в своей работе, или не знаю её, или она мне на столько не нравится. Да, может быть это конечно в какой то мере и так, но с выходом Windows Server 2012 моё мнение несколько изменилось в лучшую сторону, эта система стала для меня более удобной (ну разве что мне не хватает кнопки пуск и меня бесит Метро-интерфейс) и интересной в плане работы с ней. Так что, возможно, теперь упоминания о ней будут чаще проскакивать в моём блоге