Групповая политика. Разрешить запуск файлов только из определенных мест

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

Давайте рассмотрим как она работает.

Зразу же после запуска программы у вас может появиться следующее сообщение.

Это сообщение означает что в системе отсутствует административная учетная запись защищенная паролем. Поэтому если у вас появилось данное сообщение, просто найдите в панели управления раздел который отвечает за учетные записи: «Учетные записи пользователей» и установите пароль на учетную запись администратора. А так же этой функцией можно воспользоваться прямо из программы, нажав на на кнопку «Да», которая вызовет необходимое окно настройки из системы.

После того как пароль будет установлен можно обновить список Админов, нажав на кнопку со стрелками в окне программы, или же просто перезапустить утилиту. На тот случай если административных учетных записей у вас несколько, то в выпадающем списке можно будет выбрать ту, от имени которой и будут запускаться все программы/приложения. Теперь чтобы выполнить настройку утилиты в режиме редактирования необходимо будет ввести пароль выбранной административной учетной записи.

В дальнейшем эти учетные данные будут использоваться утилитой для запуска программ от имени администратора.

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

Главное — убедиться что она будет запускаться от имени Админа, на тот случай если там установлена иная настройка.

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

Когда обычные пользователи будут использовать RunAsTool, то они не увидят режима редактирования. Для этих пользователей будет доступно только простое окно с иконками программ, которые они смогут запускать с административными правами. Но в том случае если возникнет необходимость вернуться в режим редактирования и изменить список программ или другие настройки, то это легко можно будет сделать через меню «Файл» -> «Включить режим редактирования», на что утилита попросит повторно ввести пароль.

В работоспособности этого метода можно легко убедиться с помощью диспетчера задач, поскольку там отображается информация о пользователе, запустившем тот или другой процесс/приложение. Где явно становиться видно как приложения в одной учетной записи, запускаются от имени другого пользователя.

Многие программы при запуске требуют повышения прав (значок щита у иконки), однако на самом деле для их нормальной работы прав администратора не требуется (например, вы вручную предоставили необходимые права пользователям на каталог программы в ProgramFiles и ветки реестра, которые используются программой). Соответственно, при запуске такой программы из-под простого пользователя, если на компьютере включен контроль учетных записей, появится запрос UAC и от пользователя потребует ввести пароль администратора. Чтобы обойти этот механизм многие просто отключают UAC или предоставляют пользователю права администратора на компьютере, добавляя его в группу локальных администраторов. Естественно, оба этих способа небезопасны.

Зачем обычному приложению могут понадобится права администратора

Права администратора могут потребоваться программе для модификации неких файлов (логи, конфигурации и т.д.) в собственной папке в C:\Program Files (x86)\SomeApp). По умолчанию у пользователей нет прав на редактирование данного каталога, соответственно, для нормальной работы такой программы нужны права администратора. Чтобы решить эту проблему, нужно под администратором на уровне NTFS вручную назначить на папку с программой право на изменение/запись для пользователя (или группы Users).

Примечание . На самом деле практика хранения изменяющихся данных приложения в собственном каталоге в C:\Program Files неверна. Правильнее хранить данные приложения в профиле пользователя. Но это вопрос уже о лени и некомпетентности разработчиков.

Запуск программы, требующей права администратора от обычного пользователя

Ранее мы уже описывали, как можно , с помощью параметра RunAsInvoker. Однако этот метод недостаточно гибкий. Также можно воспользоваться с сохранением пароля админа /SAVECRED (также небезопасно). Рассмотрим более простой способ принудительного запуска любой программы без прав администратора (и без ввода пароля админа) при включенном UAC (4,3 или 2 уровень ).

Для примера возьмем утилиту редактирования реестра — regedit.exe (она находится в каталоге C:\windows\system32). При запуске regedit.exe появляется окно UAC и, если не подтвердить повышение привилегии, редактор реестра не запускается.

Создадим на рабочем столе файл run-as-non-admin.bat со следующим текстом:

cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"

Теперь для принудительного запуска приложения без права администратора и подавления запроса UAC, просто перетащите нужный exe файл на этот bat файл на рабочем столе.

После этого редактор реестра должен запустится без появления запроса UAC. Открыв диспетчер процессов, и добавим столбец Elevated (С более высоким уровнем разрешений), вы увидите, что в системе имеется процесс regedit.exe с неповышенным статусом (запущен с правами пользователя).

Попробуйте отредактировать любой параметр в ветке HKLM. Как вы видите доступ на редактирование реестра в этой ветке запрещен (у данного пользователя нет прав на запись в системные ветки реестра). Но вы можете добавлять и редактировать ключи в собственной ветке реестра пользователя — HKCU.

Аналогичным образом можно запускать через bat файл и конкретное приложение, достаточно указать путь к исполняемому файлу.

run-app-as-non-admin.bat

Set ApplicationPath="C:\Program Files\MyApp\testapp.exe"
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %ApplicationPath%"

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

Windows Registry Editor Version 5.00


@="cmd /min /C \"set __COMPAT_LAYER=RUNASINVOKER && start \"\" \"%1\"\""

После этого для запуска любого приложения без прав админа достаточно выбрать пункт «» в контекстном меню.

Переменная окружения __COMPAT_LAYER и параметр RunAsInvoker

Переменная окружения __COMPAT_LAYER позволяет устанавливать различные уровни совместимости для приложений (вкладка Совместимость в свойствах exe файла). С помощью этой переменной можно указать настройки совместимости, с которыми нужно запускать программу. Например, для запуска приложения в режиме совместимости с Windows 7 и разрешением 640×480, установите:

set __COMPAT_LAYER=Win7RTM 640x480

Из интересных нам опций переменной __COMPAT_LAYER выделим следующие параметры:

  • RunAsInvoker - запуск приложения с привилегиями родительского процесса без запроса UAC.
  • RunAsHighest - запуск приложения с максимальными правами, доступными пользователю (запрос UAC появляется если у пользователя есть права администратора).
  • RunAsAdmin - запуск приложение с правами администратора (запрос AUC появляется всегда).

Т.е. параметр RunAsInvoker не предоставляет права администратора, а только блокирует появления окна UAC.

Чтобы как-то уменьшить вероятность заражения вирусами нужно разрешить запуск исполняемых файлов определенным пользователям только из определенных мест, а именно
c:\program files
c:\windows
с сетевых дисков, в моем случае к этим дискам у этих пользователей права только на чтение, поэтому эти файл проверенны.

Возможность определения политики ограничения программного обеспечения (Software Restriction Policies SRP) для своих клиентских компьютеров, чтобы контролировать разрешенные и запрещенные для запуска программы

Делаю через групповую политику.

1. Создал GPO (Group Policy Object)

рис. 1

2. Добавил пользователей к к которым будет применяться эта политика.

рис.2

3. Редактирую созданную политику. Политики применяю к User, поэтому изменяю в User Configuration.
Открываем User Configuration - Windows Settings - Security Setting - Software Restrictions Polices
Сначала выдает что нужно сначала ее создать.

рис.3

Создаем ее, правой кнопкой мыши

рис.4

4. По умолчанию эта политика разрешает запускать без ограничений, поэтому идем в
Security Level и устанавливаем политику по умолчанию запрещающую запуск с любого места.

рис.6

Правда она запрещает не все, а добавляет пару правил, которые изменять не рекомендуется, если не понимаете что это такое, иначе будут проблемы. и эти правила создаются в папке Additional Rules

рис.7

5. В папке Additional Rules добавляем свои правила, откуда можно запускать исполняемые файлы. Правой кнопкой, создаем новый путь

рис.8

Я добавил %PROGRAMFILES%\* (это путь к папке Program Files)

рис. 9

рис.10

Теперь проверяем.
Заходим под учетной записью пользователя которому мы назначили эту политику.
Или если уже вы зашли на компьютер под этой учеткой, то можно просто обновить групповую политику: из командной строки
gpupdate /Force

Проверил, выясняется что приложения запускаются из указанных папок, но тут оказалось, что если пытаться запускать программу с ярлыка (пуск - программы - microsoft office) а сам ярлык находиться в папке которая из которой нельзя запускать программы, то программа тоже не запускается, поэтому разрешаю еще и папки

%ALLUSERSPROFILE%\* (размещение Пуск -> Программы в профиле «All Users»)
C:\Documents and Settings\Default User\Start Menu\* (размещение Пуск ->
C:\Documents and Settings\Default User\Desktop\* (размещение Рабочего стола в профиле «Default User»)
C:\Documents and Settings\Default User\Главное меню\* (размещение Пуск -> Программы в профиле «Default User»)
C:\Documents and Settings\Default User\Рабочий стол\* (размещение Рабочего стола в профиле «Default User»)
%USERPROFILE%\Start Menu\* (размещение Пуск ->
%USERPROFILE%\Главное меню\* (размещение Пуск -> Программы в профиле залогиневшегося пользователя)
%USERPROFILE%\Desktop\* (размещение Рабочего стола в профиле залогиневшегося пользователя)
%USERPROFILE%\Рабочий стол\* (размещение Рабочего стола в профиле залогиневшегося пользователя)

Еще разрешаю сетевые места откуда можно запускать
\\nameserver\folder\*

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

Ограничения SRP

Необходимо также учесть некоторые ограничения SRP. Область действия политики ограничения программного обеспечения (Software Restriction Policies) – это не вся операционная система, как вы могли ожидать. SRP не применяется для следующего кода:

* Драйвера или другое установленное программное обеспечение в режиме ядра
* Любая программа, выполняемая под учетной записью SYSTEM
* Макрос внутри документов Microsoft Office (у нас есть другие способы для их блокировки с использованием политик групп)
* Программы, написанные для common language runtime (эти программы используют политику Code Access Security Policy)

Некоторые действия обычных программ могут классифицироваться Kaspersky Total Security как опасные. Если Kaspersky Total Security блокирует работу программы, а вы уверены в ее безопасности, добавьте программу в список доверенных или создайте для нее правило исключений .

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

Чтобы добавить программу в список доверенных, выполните следующие действия:

  1. В окне Настройка перейдите в раздел Защита и выберите Угрозы и исключения .
  1. В окне Параметры угроз и исключений нажмите на ссылку Указать доверенные программы .

  1. В окне Доверенные программы нажмите на кнопку Добавить .

  1. Укажите исполняемый файл доверенного приложения, нажав на ссылку Обзор или выбрав программу из списка (отображаются запущенные в данный момент программы).

  1. В окне Исключения для программы определите параметры применения правила, установив необходимые флажки:
    • Не проверять открываемые файлы - исключать из проверки все файлы, которые открываются процессом доверенного приложения.
    • Не контролировать активность программы Мониторинг активности любую активность (в том числе и подозрительную), которую выполняет доверенное приложение.
    • Не наследовать ограничения родительского процесса (программы) - активность программы контролируется согласно правилам, заданным пользователем. Если флажок снят, программа подчиняется правилам программы, которая ее запустила.
    • Не контролировать активность дочерних программ - исключать из проверки в рамках работы компонента Мониторинг активности любую активность (в том числе и подозрительную), которую выполняют дочерние процессы доверенного приложения.
    • Разрешить взаимодействия с интерфейсом Kaspersky Total Security .
    • Не проверять весь трафик - исключать из проверки на вирусы и спам сетевой трафик, инициируемый доверенным приложением. При установленном флажке Не проверять весь трафик НЕ проверяется трафик указанного приложения только на вирусы и спам . Однако это не влияет на проверку трафика компонентом Сетевой экран , в соответствии с параметрами которого анализируется сетевая активность данной программы.
    • Для исключения из проверки только зашифрованного сетевого трафика нажмите на ссылку Не проверять весь трафик и выберите Не проверять зашифрованный трафик , таким образом будет выбран только зашифрованный трафик (с использованием протокола SSL/TSL )
    • Кроме того, вы можете ограничить исключение конкретным удаленным IP-адресом / портом:
      • Чтобы не проверять определенный IP-адрес, установите флажок Только для указанных IP-адресов , а затем введите в поле IP-адрес.
      • Чтобы не проверять определенные порты, установите флажок Только для указанных портов ивведите в поле порты через запятую.
  2. В окне Исключения для программы нажмите на кнопку Добавить .

  1. Закройте окна программы.

В Kaspersky Total Security по умолчанию в доверенные программы с параметром Не проверять зашифрованный сетевой трафик добавлен файл %SystemRoot%\system32\svchost.exe - исполняемый файл системного сервиса Microsoft Windows Update . Защищенный трафик этого сервиса недоступен для проверки любому антивирусному ПО. В случае, если для этого сервиса не будет создано разрешающее правило, работа этого сервиса будет завершена с ошибкой.



Статьи по теме