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

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

 

Ручная настройка
  1. Создаём отдельного пользователя с правами администратора и сложным паролем. Имя в этом примере будет RestAdmin (от Restricted Administrator).
  2. Включаем AppLocker, если он ещё не включен, и переводим службу удостоверенных приложений в автоматический запуск, создаём правила по умолчанию.
  3. В каждый раздел AppLocker добавляем запрет для RestAdmin на запуск всего, а разрешённые программы будем добавлять в виде исключений по необходимости.
  4. В локальной политике безопасности устанавливаем параметр «отказать в доступе к этому компьютеру из сети» для пользователя RestAdmin.

Теперь можно запустить «runas /savecred /user:RestAdmin calc» для сохранения пароля и теста, что программа без исключений не запустилась. Далее можно создавать ярлыки для текущего пользователя с запуском runas в свёрнутом виде, который и запустит нужное приложение от имени RestAdmin. К сожалению runas не поддерживает UAC, поэтому нужно будет либо его отключать, либо использовать программу RestAdmin. Альтернативный вариант — использовать промежуточную программу, которая будет получать параметры запуска и запрашивать повышение прав.

 

Автоматическая настройка

Программа RestAdmin сделана для ускорения и автоматизации ручных настроек. Её работа специально ограничена серверными системами, где AppLocker точно работает.

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

Далее для RestAdmin в локальной политике безопасности устанавливается параметр «отказать в доступе к этому компьютеру из сети», таким образом даже при знании пароля сервером нельзя будет управлять по сети — ни подключиться к общим папкам, ни запустить произвольную программу (например через PsExec), ни подключить реестр удалённо, ни зайти на сервер терминалов по RDP, даже локально.

Затем к правилам AppLocker добавляется запрещающее правило на всё для RestAdmin, а если правил по умолчанию не было, то создаются и они. Служба «удостоверенные приложения» настраивается на автоматический запуск (по умолчанию — вручную) и запускается. Важный момент — управлять правилами AppLocker через PowerShell можно только начиная с Server 2012, поэтому для Server 2008 R2 вам нужно будет создать эти политики вручную, т. е. выполнить пункты 2-3 из раздела ручной настройки. Обратите внимание на то, что правила AppLocker начинают работать не мгновенно, а через пару минут после первого запуска службы «удостоверенные приложения» (отследить это можно по журналу приложений и коду 8001), но при последующих перезапусках службы или сервера правила будут работать сразу же.

После этого RestAdmin скопирует себя в каталог Windows (для работы ярлыков нужен именно этот путь) и сообщит об успешной установке. Так как настройка AppLocker через PowerShell в тестах не всегда работала идеально, на всякий случай рекомендуется проверить, что все пункты 1-4 из ручной настройки действительно выполнены безупречно, от этого зависит безопасность сервера.

Теперь программу RestAdmin можно использовать для создания ярлыков к запускаемым программам — если перетянуть мышкой любой exe-файл на RestAdmin.exe (расположенный не по пути Windows\RestAdmin.exe), на рабочем столе тут же создастся ярлык для запуска этой программы в качестве параметра к RestAdmin, и уже запуск указанного exe-файла с такого ярлыка будет происходить от имени ограниченного администратора. Готовый ярлык будет иметь имя и значок целевой программы, его можно переименовать и поместить на рабочий стол определённым пользователям. Также ярлык можно создать вручную.

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

 

Удаление настроек

Чтобы удалить все сделанные изменения, нужно вручную проделать следующие шаги:

  1. Удалить пользователя RestAdmin и его профиль, а также RestAdmin.exe из папки %WinDir% (как правило C:\Windows) и созданные для него ярлыки.
  2. Удалить RestAdmin или его SID из параметра «отказать в доступе к этому компьютеру из сети» локальной политики безопасности.
  3. Удалить запрещающие правила для RestAdmin в каждой из 4-х секций AppLocker и при необходимости отключить AppLocker.

 

Примечания

Начиная с версии 1.1 добавлена поддержка UAC, а для запуска программ также необходимо добавить в исключения AppLocker путь %WinDir%\RestAdmin.exe (добавится автоматически, если вы устанавливаете RestAdmin в первый раз). Начиная с версии 1.2 добавлен запрос на повышение прав для запускаемой программы независимо от манифеста.

Если вы не хотите видеть диалог повышения прав при каждом запуске ярлыка, его можно отключить для всех администраторов в локальной политике безопасности, параметр «контроль учётных записей: поведение запроса на повышение прав для администраторов в режиме одобрения администратором» нужно выставить в положение «повышение прав без запроса».

Обратите внимание, что целевая программа должна быть доступна для чтения пользователем с ограниченными правами.

 

Тестирование

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

Скачать: RestAdmin 1.2 [0.3 MB]

RestAdmin — концепция безопасного Run As Admin

RestAdmin — концепция безопасного Run As Admin: 2 комментария

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

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

Этот сайт защищен reCAPTCHA и применяются Политика конфиденциальности и Условия обслуживания Google.