Настройка Windows для работы приложений с привилегиями стандартного пользователя
Понедельник, 11 - Июль - 2011 Оставьте комментарий
1. Для чего вообще нужно настраивать права доступа?
Разделение привилегий — фундамент безопасности и защиты от вирусов. Обычно все пользователи компьютера имеют индивидуальные логины, которые делятся на две категории —административные, предназначенные для настройки системы; и стандартные, предназначенные для ежедневной работы. Администраторы могут всё — инсталлировать или убирать программы, менять драйвера, заражать компьютер вирусами и т.д. А рядовые пользователи могут бродить по Интернету, работать с документами и электронной почтой, смотреть фильмы. Вот только сломать в системе ничего не могут.
Что делает работу столь безопасной? У рядовых пользователей недостаточно прав на инсталляцию программ, за счёт чего и в системе напортачить не получится. И вирусом её заразить не удастся, ведь вирус – такая же компьютерная программа, как и все остальные.
Однако, постоянно приходится сталкиваться с программистами, далёкими от проблем безопасности. Написанные ими программы обязательно хотят себе нечто большее, чем им положено по статусу, за счёт чего работают некорректно, а иной раз вообще отказываются запускаться с привилегиями рядового пользователя. Заставить программиста переделать его продукт обычно не представляется возможным, поэтому в большинстве случаев такие проблемы несложно решаются отслеживанием и корректировкой прав с помощью Windows Auditing.
2. Что же такое Аудит и как он нам поможет?
Встроенная в Windows система аудита позволяет отслеживать и записывать в журнал события различного рода. Не все события будут нас интересовать, поэтому полное слежение включать не следует; да и нагрузка аудита на систему довольна ощутима. Мы применим только ту часть, что отслеживает попытки доступа к файлам и реестру.
Что именно отличает программу, требующую повышенных привилегий, от обычных программ?
-
она хочет изменять данные в защищённых папках (Windows, Program Files);
-
она хочет изменять данные в защищённых областях реестра (ключ HKLM\Software).
Аудит позволяет обнаружить, доступ к каким именно файлам, каким конкретно папкам или ключам реестра требуется программе для работы. Мы сможем расширить права только над этими папками, не назначая пользователям полный доступ на всё-всё подряд и не выдавая им административных привилегий.
Система Аудита встроена во все операционные системы Microsoft Windows NT: Windows XP/Vista/7, Windows Server 2000/2003/2008. К сожалению, в системах серии Windows Home аудит спрятан глубоко, и его настраивать слишком сложно.
3. Отлично, как мне всё это включить и настроить?
Для включения аудита зайдите в систему с правами администратора и выполните команду Start → Run → gpedit.msc. В разделе Computer Configuration раскройте папку Windows Settings → Security Settings → Local Policies → Audit Policies.
Дважды щёлкните по политике Audit object access (Аудит доступа к объектам) и выберите галочку Failure. Этот параметр включает механизм слежения за неудавшимися попытками доступа к файлам и реестру. Действительно, ведь отслеживаемой нами программе, будучи запущенной со стандартными привилегиями, не удастся получить успешный доступ к тем или иным объектам. К каким именно — это мы и захотим узнать.
Простого включения Аудита недостаточно, мы также должны указать, за доступом к каким именно объектам мы намерены следить. Обычно проблемные программы пытаются получить доступ к файлам, находящимся на системном диске (C:\) и реестру (HKEY_LOCAL_MACHINE\Software). Вызовите свойства системного диска и на закладке Security (Безопасность) → Advanced (Дополнительно) → Auditing (Аудит) добавьте слежение за неким пользователем, от лица которого вы будете тестировать работоспособность программы:
Заранее угадать, каких именно прав не хватило, невозможно, поэтому укажите слежение за всеми событиями отказа в доступе (Failed: Full Control). Неудачные попытки любого типа доступа от лица этого пользователя будут заноситься в журнал.
Также, включите слежение за неудачными попытками доступа к машинному реестру. Для этого выполните команду Start → Run → Regedit и, щёлкнув правой кнопкой мыши поверх папки HKEY_LOCAL_MACHINE\Software, вызовите команду Permissions. Действуя по аналогии с аудитом системного диска, назначьте слежение за безуспешными попытками любого типа доступа к ключу Software со стороны тестового пользователя:
Событий отказа в доступе может быть довольно много, поэтому следует отрегулировать размер журнала Security (Безопасность), в который они будут записываться. Для этого выполните команду Start → Run → eventvwr.msc. В появившемся окне вызовите свойства журнала Security и укажите следующие параметры:
-
Maximum Log Size = 65536 KB (для рабочих станций) или 262144 (для серверов);
-
Overwrite events as needed.
На самом деле, указанные цифры не являются гарантированно точными, а подбираются опытным путём для каждого конкретного случая.
4. Настройки выполнены, что делать дальше?
Запустите просмотрщик журнала Security (Start → Run → eventvwr.msc). Заметив время на часах, попытайтесь один раз запустить проблемную программу от лица тестового пользователя. Это можно сделать, не выходя из сессии Администратора, щёлкнув правой кнопкой по ярлыку программы → Run As. Выполните все необходимые действия для воспроизведения сбоя программы или появления сообщения об ошибке. Увидев первые же признаки сбоя, работу с ней прекратите и переключитесь на просмотр журнала.
Журнал может быть заполнен событиями, прямого отношения к проблеме не имеющими. Щёлкнув правой кнопкой по журналу Security, выберите команду View → Filter и отфильтруйте просмотр по следующим критериям:
-
Event Source: Security;
-
Category: Object Access;
-
Event Types: Failure Audit;
-
Event ID: 560;
Просмотрите список отфильтрованных событий, начиная с того момента времени, когда вы запустили программу на исполнение. Не все события требуют реакции администратора и расширения прав. Обратите внимание на следующие поля внутри каждой записи:
-
Image File Name. Название программы, которой не хватило прав. Это должно быть имя исполняемого модуля искомой проблемной программы;
-
Object Name. Название той папки, файла или ключа реестра, доступ к которой не удался;
-
Accesses. Набор запрашиваемых программой прав.
Программа может запрашивать у системы сразу несколько типов доступа — например, Read+Write+Delete. Однако, при нехватке разрешений на хотя бы одно из запрашиваемых прав, запрос на доступ может быть отклонён весь целиком. Просмотрите, каких именно разрешений и на какой именно объект может не хватать программе для успешной работы.
Расширьте доступ к объектам согласно нуждам программы. Если программе требуется создавать новые файлы в определённом каталоге, укажите разрешения Read+Write для этого каталога. Если требуется изменять всё содержимое каталога, укажите разрешение Modify. Не применяйте разрешение Full Control для пользователей — оно включает в себя право изменять права доступа. Таковая функция должна быть доступна только членам группы Administrators и самой операционной системе (SYSTEM).
Протестируйте, как внесённые в структуру разрешений изменения отразились на работоспособности программы. По окончании процедуры регулировки прав отключите Аудит, чтобы не нагружать систему ненужным уже слежением, а журнал — событиями, которые никто не читает. Задокументируйте новую структуру разрешений — возможно, эта информация пригодится в будущем вам или другим администраторам.
Last Content Update: 22-Sep-2010