четверг, 9 июня 2011 г.

Сокрытое на самом видном месте

Это перевод Hiding in Plain Sight. Автор: Реймонд Чен.

Как запретить проводнику Windows отображать файлы, к которым у пользователя нет доступа? Воспользуйтесь приведенными в этой статье советами, чтобы посторонние не увидели ваши скрытые файлы.

Проводник Windows показывает содержимое каталога файловой системы так, как это предписано файловой системой. Элементы файловой системы, отмеченные как скрытые, проводник по умолчанию не отображает.

Список скрываемых Проводником файлов можно менять в панели "Свойства папки", можно даже включить отображение скрытых и системных элементов. Но одного Проводник не умеет — скрывать элементы, к которым у пользователя нет доступа.

Как уже говорилось, принимая решение об отображении тех или иных элементов, проводник полагается на файловую систему. Если каталог содержит недоступную подпапку, функция перечисления элементов файловой системы на это не обращает внимание. Вы запрашивали список содержимого каталога? Получите!

Убедиться в этом легко — достаточно открыть окно командной строки и выполнить команду dir. Вы получите список содержимого каталога независимо от того, есть ли у вас доступ к отдельным элементам или нет. Функции перечисления файловой системы интересует только разрешение FILE_LIST_DIRECTORY, которое в пользовательском интерфейсе называется разрешением "Список содержимого папки". Пользователь, которому предоставили такое разрешение, может видеть содержимое каталога.

Почему же в Проводнике нет возможности отфильтровать элементы, к которым у пользователя нет доступа? С одной стороны, такая функция замедлила бы перечисление каталога. Проводнику пришлось бы для каждого элемента, возвращенного функцией FindNextFile, выполнять проверку безопасности файла на предмет того, есть ли у пользователя разрешение на доступ. При перечислении файлов на удаленном компьютере (это стандартная ситуация) это означает один или, возможно, два полных сетевых запроса с получением ответа для каждого элемента.

Перечисление каталога с 1000 файлов, на которое обычно уходило только 12 сетевых запросов, теперь потребует 1012 запросов. Если это сетевой сервер на другом конце земного шара с временем отклика 500 миллисекунд, отображение каталога, на которое обычно уходит шесть секунд, займет три минуты.

Еще одна серьезная проблема: попытка опросить каждый файл, чтобы решить, есть ли у пользователя разрешение на доступ, может привести к большому количеству ошибок доступа, а это означает много записей в журнале аудита безопасности. Такие записи — источник беспокойства в компаниях, где пристально следят за журналами аудита.

Попытки доступа генерируют много лишней информации, из-за которой становится труднее обнаруживать реальную угрозу безопасности. Если реализовать такую функцию, каждый пользователь будет выглядеть, как хакер, систематически проверяющий каждый файл в системе в поиске слабых списков управления доступом.

При первых попытках применить вход в систему в стиле Windows XP для входа в домены также столкнулись с подобной проблемой, создаваемой администраторам. Изначально Windows XP автоматически разрешала пользователю вход в систему, если у него был пустой пароль. Для этого выполняется попытка входа пользователя в систему с использованием пустого пароля. В случае ошибки отображается запрос на ввод пароля.

Такой алгоритм приводил к появлению в журналах безопасности массы сообщений о неудачных попытках входа в систему из-за неправильного пароля. Это вызывало беспокойство ИТ-администраторов и не только из-за того, что стало намного сложнее распознать среди этого шума настоящие попытки взлома пароля, но и по той причине, что такой процесс повышал вероятность случайной блокировки пользователями своих учетных записей из-за слишком большого числа неудачных попыток входа в систему.

Когда пользователи просили команду разработчиков проводника Windows добавить такую возможность, члены команды разъясняли, какие проблемы с этим связаны. Но и подсказывали решение — надо задавать более широкие критерии. Вместо того, чтобы просить Проводник Windows выполнить фильтрацию, можно реализовать фильтрацию на уровне файловой системы.

Традиционное обходное решение задачи сокрытия от пользователей файлов, к которым у них нет доступа, заключается в размещении этих файлов в подкаталоге, на который у пользователей нет никаких разрешений. В Windows Server 2003 SP 1 появилась новая функция — перечисление на основе доступа (Access-based Enumeration, ABE). Если настроить ее на общей папке, сервер будет отфильтровывать файлы и каталоги, к которым у пользователей нет доступа.

Так как эта функция реализована в системном перенаправителе, то она доступна только на общих папках. Доступ к локальным папкам осуществляется, как обычно. Так как серверу приходится выполнять дополнительную работу, перечисление каталога занимает чуть больше времени. До передачи информации клиенту нужно проверить каждый элемент. За более подробной информацией отсылаем читателя к документу, посвященному перечислению на основе доступа.

Комментариев нет:

Отправить комментарий

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.