Tuesday, January 2, 2007

Выпуск N4. Немного о безопасности в Windows или как из удобной вещи сделать надёжную.

Ну чтож, наша сегодняшняя тема - права доступа в файловой системе. Тема сама по себе не сложная но действительно важная для безопасности системы, и требующая внимательности при её реализации. Устанавливая жёсткие права на диске мы с одной стороны значительно повышаем устойчивость системы к внутренним атакам, когда атакующий уже имеет доступ к машине, но не имеет достаточно полномочий для реализации своих планов; с другой же стороны, мы имеем серьёзную угрозу вызвать неполадки (иной раз очень трудно объяснимые) в работе приложения а нередко и самой операционной системы. Несколько слов о файловых системах официально поддерживаемых Microsoft Windows, практически их две - это старая, добрая, но совсем не защищённая FAT32; и стандартная на сегодняшний день, и даже имеющая наконец совместимость с другими операционными системами (например Linux) NTFS. В FAT не было ни каких механизмов защиты от несанкционированного доступа к файлам, в NTFS появилась возможность устанавливать различные права на доступ, поиск, запуск и изменение файлов, а так же целый ряд дополнительных прав связанных с наследованием и передачей прав контроля. Более того начиная с Win2K, появилась так называемая шифрованная файловая система (EFS), которая позволяет криптовать таблицы файловой системы и информацию находящуюся в самих файлах. Этот механизм был предложен для защиты информации в off-line режиме, когда на компьютере запущена другая OS имеющая прямой доступ к данным на диске. К сожалению, на сегодняшний день, мы не можем считать это панацеей, и даже WinXP SP2 где этот вопрос был значительно усилен, не может противостоять специализированным системам доступа. Основной причиной такой ситуации является то что по причинам удобства работы, ключи криптования хранятся там же где и данные, а именно на самом локальном диске. Кстати, Microsoft рекомендует хранить копии сертификатов на отдельном носителе, поскольку при случайном их разрушении, доступ к данным (по заявлениям MS, но с некоторым допущением в жизни) будет безвозвратно утерян. Возможно так же постоянное хранение сертификата на внешнем носителе или на специальном сервере в домене, но по понятным причинам это может вызывать неудобства в виде отсутствия доступа к информации в нужный момент. Существует так же дополнительное ограничение на совместное использование файлов защищённых EFS - предоставление совместного доступа, путём добавления сертификатов, возможно только для файлов (не для директорий) и только отдельным юзерам (не группам). Думаю, на сегодняшний день, для обеспечения надёжной зашиты информации стоит воспользоваться разработками сторонних фирм. В заключении несколько слов о частном, но очень важном, случае криптования файлов - криптование SAM. Как известно, SAM это то самое место где Windows хранит пароли в зашифрованном виде. Сами эти файлы так же могут быть зашифрованными (по умолчанию начиная с Win2K) с помощью дополнительного ключа по MD5 протоколу. Обычно ключ тоже сохраняется на диске по специальному алгоритму. С помощью утилиты syskey он может быть удалён из системы или защищён дополнительным паролем. В этом случае после начала загрузки, но до авторизации в компьютер должна быть вставлена дискета (или другой носитель) с ключом, или введён пароль защиты ключа соответственно.

Хочу отметить что этот метод не защищает от разрушающих методов взлома, когда SAM администратора или другого пользователя разрушается, после чего производится безпарольный вход.

И так, после этого небольшого введения перейдём непосредственно к установлению прав на объекты в файловой системе NTFS. Права делятся на основные и расширенные, основные практически являются стандартными фиксированными наборами расширенных прав, предназначенными для определённой цели. NTFS так же поддерживает запрещающие права - т.е. правила которые запрещают те или иные действия пользователю. Их приоритет всегда выше чем у разрешающих. Основные: Полый контроль, Изменение, Запись, Чтение_и_Выполнение, Чтение. Их предназначение понятно из названий. Расширенные: Полый контроль, Исполнять файл (для директории - использовать в пути), читать (список файлов - поиск), читать основные атрибуты, читать расширенные атрибуты, писать (создавать файлы в директории), изменять данные (создавать поддиректории), устанавливать основные права, устанавливать расширенные права, удалять вложенные объекты (поддиректории и файлы), удалять (сами объекты), читать права, изменять права, передавать владение.

При установке прав можно делегировать их на ниже лежащие объекты - файлы и поддиректории, а также любые их сочетания (директория и поддиректории, директория и файлы и т.п.). Будьте очень внимательны при делегировании (особенно рекурсивном). Ошибки могут привести к серьёзным пробелам в безопасности системы, или к её не работоспособности. Microsoft распространяет специальные политики для восстановления прав "по умолчанию", однако, если ваш сервер выполняет дополнительные задачи (к примеру - веб сервер на базе IIS) этого может оказаться недостаточно. Последнее маленькое замечание, кроме прав доступа у файла существует так же, владелец. Этот пользователь имеет полный контроль над файлом независимо от того в какой группе он находится и какие права доступа выставлены в разделе security. Это необходимо помнить в том случае, если вы случайно удалили всех пользователей из списка прав доступа. В таком случае только владелец (не администратор, а именно владелец) сможет назначить новые права доступа.

На этом мы пожалуй закончим подготовительную часть и перейдём к рекомендациям по установки уровня безопасности доступа к файлам.

И так (для случая когда с:\ - системный диск):

  • C:\ - Administrators - полный контроль, SYSTEM - изменять, Users - читать и запускать. Распространить на всю глубину заменяя приведущее.
  • C:\autoexec.bat - Administrators - полный контроль, SYSTEM - изменять. Заменить приведущее, отменить наследование сверху.
  • C:\boot.ini - Administrators - полный контроль, SYSTEM - изменять. Заменить приведущее, отменить наследование сверху.
  • C:\config.sys - Administrators - полный контроль, SYSTEM - изменять. Заменить приведущее, отменить наследование сверху.
  • C:\io.sys - Administrators - полный контроль, SYSTEM - изменять. Заменить приведущее, отменить наследование сверху.
  • C:\msdos.sys - Administrators - полный контроль, SYSTEM - изменять. Заменить приведущее, отменить наследование сверху.
  • C:\ntdetect.com - Administrators - полный контроль, SYSTEM - изменять. Заменить приведущее, отменить наследование сверху.
  • C:\ntld - Administrators - полный контроль, SYSTEM - изменять. Заменить приведущее, отменить наследование сверху.
  • C:\Program Files - Administrators - полный контроль, SYSTEM - изменять, Users - читать и запускать. Распространить на всю глубину заменяя приведущее.
  • C:\Documents and Settings\ - Administrators - полный контроль, SYSTEM - изменять, "CREATOR OWNER" - полный контроль. Распространить на всю глубину заменяя приведущее.
  • C:\Documents and Settings\Administrator - Administrators - полный контроль, SYSTEM - изменять. Распространить на всю глубину заменяя привидущее.
  • C:\Documents and Settings\All Users - Administrators - полный контроль, SYSTEM - изменять, Users - читать и запускать. Распространить на всю глубину заменяя приведущее.
  • C:\Documents and Settings\Default Users - Administrators - полный контроль, SYSTEM - изменять, Users - читать и запускать. Распространить на всю глубину заменяя приведущее. (Для AllUsers и DefaultUsers очень важно дать права на чтение для группы Users. В противном случае могут возникнуть проблемы при локальном входе в систему у не административных пользователей.
  • C:\WINNT (для общего случая используйте %SystemRoot%) - Administrators - полный контроль, SYSTEM - изменять, Users - читать и запускать. Распространить на всю глубину заменяя приведущее.
  • C:\WINNT\Debug - Administrators - полный контроль, SYSTEM - изменять. Распространить на всю глубину заменяя привидущее.
  • C:\WINNT\Registration - Administrators - полный контроль, SYSTEM - изменять, Users - читать и запускать. Распространить на всю глубину заменяя приведущее.
  • C:\WINNT\Repair - Administrators - полный контроль, SYSTEM - изменять, Users - читать и запускать. Распространить на всю глубину заменяя приведущее.
  • C:\WINNT\system32 - Administrators - полный контроль, SYSTEM - изменять, Users - читать и запускать. Распространить на всю глубину заменяя приведущее.
  • C:\WINNT\system32\*.msc - Administrators - полный контроль, заменяя приведущее.
  • C:\WINNT\System32\Config - Administrators - полный контроль, SYSTEM - изменять, заменяя привидущее.
  • C:\WINNT\system32\IAS - Administrators - полный контроль, SYSTEM - изменять, заменяя привидущее.
  • C:\WINNT\system32\Setup - Administrators - полный контроль, SYSTEM - изменять, заменяя привидущее.
  • C:\WINNT\System32\Spool - Administrators - полный контроль, SYSTEM - изменять, Users
  • C:\WINNT\system32\spool\Drivers - Administrators - полный контроль, SYSTEM - изменять, Users - читать и запускать, заменяя приведущее.
  • C:\WINNT\system32\spool\Printers - Administrators - полный контроль, SYSTEM - изменять, заменяя привидущее.
  • C:\WINNT\system32\Dllcache - Administrators - полный контроль, SYSTEM - изменять, заменяя привидущее.
  • C:\WINNT\Temp - Administrators - полныйконтроль, SYSTEM - изменять, "CREATOR OWNER" - изменять. Распространить на всю глубину заменяя приведущее.
  • D:\ (и все остальные разделы) - Administrators - полный контроль, SYSTEM - изменять, Users - читать и запускать. Распространить на всю глубину заменяя приведущее.Обратите внимание на порядок изменения прав доступа к директориям, он важен для получения в результате установки необходимого результата.

Если у вас на сервере имеются пользователи с не интерактивным входом в систему (например веб пользователи IIS), бы можете установить Deny на полный контроль, он без распространения на всю глубину, на следующие директории:

C:\
C:\WINNT
C:\WINNT\Debug
C:\WINNT\Installer
C:\WINNT\Repair
C:\WINNT\Security
C:\WINNT\system32
C:\WINNT\System32\inetsrv
C:\WINNT\system32\Dllcache
C:\WINNT\system32\drivers
C:\WINNT\system32\os2
C:\WINNT\system32\Web

Ну что-ж на этом можно закончить очередной выпуск. В заключение только хочу сказать, если в вашей системе есть дополнительные сервисы которые используют специальные учётные записи, обратите внимание на права для них предустановленные. Однако если после hardening-а аппликация всё-же перестала работать (а это не редко, к сожалению) воспользуйтесь утилитой filemon для поиска недоступных путей.


Cледующий раз:
Открой тайну ключика! Работаем с registry

Если ваши советы и комментарии интересны всем, буду рад увидеть их здесь.
С личными просьбами и предложениями, добро пожаловать на e-mail


No comments: