## Настройка прав на службу Windows
По умолчанию обычные пользователи (без прав администратора) не могут управлять системными службами Windows. Это означает, что пользовали не могут остановить, запустить (перезапустить), изменить настройки и разрешения служб Windows.
В этой статье мы покажем, как настроить правами на службы Windows. В качестве примера мы покажем, как предоставить обычному пользователю, без прав администратора локального, права на запуск, остановку и перезапуск определенной службы Windows.
## Ошибка системы 5. Доступ запрещен

В Windows есть несколько способов предоставления пользователю прав на службу. Какой из них проще и удобнее – решать Вам.
## Управление Windows Defender Firewall через PowerShell
Эта статья посвящена основам управления настройками и правилами встроенного Windows Defender Firewall из командной строки PowerShell. Мы рассмотрим, как включать/отключать брандмауэр для различных профилей, создавать, редактировать и удалять правила, экспортировать/импортировать правила Windows Firewall с помощью PowerShell.
Для управления настройками Windows Firewall обычно используется отдельная графическая MMC оснастка `wf.msc` (Control Panel -> System and Security -> Windows Defender Firewall -> Advanced settings). Большинство операций по настройке и управлению параметрами Windows Firewall можно выполнять из командной строки PowerShell. Для этого, начиная с версии Windows PowerShell 5.1, можно использовать встроенный модуль **NetSecurity**.
Полный список командетов в модуле NetSecurity можно вывести с помощью команды:Get-Command -Module NetSecurity

Раньше для управления правилами и настройками Брандмауэра Windows использовалась команда `netsh advfirewall firewall`.
## Вирус Windows Powershell
PowerShell - это важнейшая функция, разработанная корпорацией Майкрософт, чтобы помочь опытным ИТ-специалистам автоматизировать административные задачи и настраивать свои системы. Сама по себе она не может быть вредной.
Однако у вас могут возникнуть проблемы, если **Powershell.exe вирус** заменит ваш оригинальный Powershell. Одна из опасностей вируса **Windows Powershell** заключается в том, что его бывает трудно обнаружить, и многие пользователи сталкиваются с ним в течение длительного времени.
Сегодня мы расскажем обо всем, что вам нужно знать о вирусе Powershell, и поможем вам научиться его удалять.
## В этой статье
1. 🚀 Используйте инструмент для восстановления данных
2. 🚀 Создайте резервную копию своих данных
3. 🚀 Зашифруйте конфиденциальные данные
4. 🚀 Регулярно обновляйте свой антивирусВирус Windows PowerShell
Вирус Windows PowerShell – это вредоносный скрипт или программа, которая использует Windows PowerShell для отображения и запуска нежелательных всплывающих окон. Всплывающие окна появляются по разным каналам.
Вот некоторые из наиболее распространенных возможностей:
- Загрузка подозрительных инструментов или программного обеспечения;
- Открытие подозрительных электронных писем, содержащих вредоносные файлы или вложения;
- Нажатие на уведомления в вашем веб-браузере;
- Другие подозрительные действия или источники.
Как распознать вирус Windows PowerShell
Распознать вирус Windows PowerShell несложно, если знать, на что обращать внимание. Однако, если целью вируса является отслеживание вашей активности и кража данных, у вас могут возникнуть трудности с определением того, что ваше устройство заражено.
Вот несколько признаков, на которые следует обратить внимание при попытке определить, есть ли на вашем компьютере вирус PowerShell:
- Следите за появлением нежелательной рекламы или всплывающих окон при использовании компьютера;
- Проверьте, не работает ли ваше устройство медленно (включая подключение к Интернету). Если ваш диск, процессор или оперативная память загружены слишком сильно, возможно, у вас вирус;
- Появляются новые значки;
- Ваши файлы или папки были перемещены в другое место или удалены;
- В вашем диспетчере задач запущены подозрительные процессы;
- Вы получаете ненужные уведомления или запросы на обновление программного обеспечения, которого у вас нет или которым вы не пользуетесь;
- В вашем центре уведомлений время от времени появляются фишинговые формы.
Как удалить вирус Windows PowerShell
Для удаления вируса Windows PowerShell можно использовать несколько способов. Ниже приведены точные инструкции по каждому из них.
Верните браузеру настройки по умолчанию

Проверка наличия вируса и его удаление

Сброс критически важных системных операций
Удаление вируса через Панель управления
Использование безопасного режима
Использование антивирусного программного обеспечения
Сброс настроек браузера и защитные меры от вируса powershell.exe
Сброс настроек вашего браузера к настройкам по умолчанию может помочь вам отключить вирус powershell.exe и удалить все вредоносные плагины или инструменты, работающие в браузере. Это может быть временным решением, которое поможет вам уменьшить дальнейший ущерб, но вам также следует использовать постоянные решения для полного удаления вируса.
Сброс настроек браузера
Процесс возврата вашего браузера к настройкам по умолчанию зависит от используемого вами браузера, но все они похожи. Поскольку большинство пользователей Windows используют Google Chrome, рассмотрим следующие шаги:
- Откройте Google Chrome.
- Нажмите на три точки в правом верхнем углу и выберите Настройки.

- Нажмите Сбросить настройки, а затем Восстановить настройки к исходным значениям по умолчанию.

- Нажмите Сбросить настройки еще раз.

Используйте антивирус или средство защиты от вредоносных программ
Один из первых методов, который вам следует попробовать при обнаружении вируса Windows Powershell, – это использовать средство защиты от вредоносных программ или антивирусное программное обеспечение. Вы можете попробовать выполнить полную проверку с помощью Защитника Windows, прежде чем использовать сторонний антивирус или средство удаления вредоносных программ.
Шаги:
- Нажмите Пуск и введите Безопасность Windows.
- Нажмите Безопасность Windows.

- Когда откроется окно Безопасность Windows, нажмите Защита от вирусов и угроз.

- Нажмите на Параметры проверки в разделе Текущие угрозы.

- Выберите Полная проверка и нажмите Проверить сейчас.

- Дождитесь завершения процесса (это может занять несколько часов, в зависимости от вашего устройства и хранилища).
Если вы по-прежнему не можете обнаружить вирус, вы можете воспользоваться антивирусными программами сторонних производителей. Шаги аналогичны: просканируйте свое устройство и удалите угрозы, когда они будут обнаружены.
Воспользуйтесь восстановлением системы
Если вы используете функцию восстановления системы Windows и у вас есть доступная точка восстановления, вы можете использовать этот параметр для восстановления системы до состояния, когда вирус еще не был обнаружен. Этот параметр может работать, только если вы вовремя заметили вирус. Откат к предыдущей точке восстановления может оказаться неэффективным, если она существует уже давно.
Как использовать восстановление системы в Windows:
- Нажмите на Пуск и введите Восстановление системы.
- Нажмите на Создать точку восстановления.

- Нажмите Восстановление системы.

- Нажмите Далее, чтобы продолжить процесс.

- Нажмите на Показать больше точек восстановления, чтобы просмотреть все точки восстановления. Выберите нужную и нажмите Далее.

- Подтвердите выбор точки восстановления в следующем окне. Нажмите Готово, а затем Да. Чтобы изменения вступили в силу, потребуется перезагрузить ваше устройство.

Переустановите операционную систему Windows
Если вы не можете удалить powershell.exe вирус с любым из исправлений, упомянутых выше, единственным оставшимся способом является переустановка вашей операционной системы. Ниже приведены шаги по переустановке вашей операционной системы Windows:
- Загрузите официальное средство создания Windows Media Tool.
- Вставьте в компьютер пустой USB-накопитель.
- Запустите средство создания носителей и выберите Создать установочный носитель для другого ПК.

- Нажмите Далее, выберите язык, редакцию и архитектуру и нажмите Далее.

- Выберите USB-накопитель, вставленный в ваш компьютер, и нажмите Далее.
- Подождите, пока программа загрузит все файлы Windows и создаст загрузочный диск. (имейте в виду, что этот процесс может занять некоторое время).
- Перезагрузите компьютер и откройте BIOS, нажав F2, F9, F10 или DEL, в зависимости от вашего устройства.

- Перейдите в настройки загрузки и выберите свой USB-накопитель в качестве первого варианта загрузки.

- Сохраните настройки и выйдите из BIOS.

- Установка начнется на вашем устройстве. Следуйте инструкциям и переустановите.
[Бонус] Как избежать потери данных из-за вирусов
Ни одно решение не поможет предотвратить потерю данных в случае вирусной атаки. Однако, чем больше решений вы используете, тем выше шансы предотвратить потерю данных или просто иметь возможность восстановить утраченные данные. Вот несколько рекомендаций, которые вам следует внедрить:
🚀 Используйте инструмент для восстановления данных
- После запуска Wondershare Recoverit нажмите Жесткие диски и папки и выберите диск, пораженный вирусом.

- Wondershare Recoverit автоматически просканирует диск на наличие отсутствующих файлов и покажет их в режиме реального времени.

- Нажмите Предварительный просмотр, чтобы узнать, обнаружила ли программа нужные файлы. Когда будете готовы, нажмите Восстановить.

- Назовите файл, выберите место сохранения и нажмите Сохранить, когда все будет готово.

🚀Создайте резервную копию своих данных
🚀Шифруйте конфиденциальные данные
Как упоминалось ранее, вирус Windows Powershell часто действует как программа-вымогатель и шифрует ваши файлы, запрашивая у вас деньги, прежде чем вернуть их вам. Однако вы можете использовать тот же подход, зашифровав свои файлы, чтобы никто не смог украсть ваши данные.
🚀Регулярно обновляйте свой антивирус
Обновления антивирусов и программного обеспечения необходимы. Все они содержат критические исправления для системы безопасности, которые могут решить, заражать ваше устройство или поддерживать его в чистоте.
Заключение
Если вы хотите удалить вирус Windows Powershell.exe со своего компьютера, попробуйте восстановить настройки браузера по умолчанию, просканировать систему антивирусом, выполнить восстановление системы или переустановить ОС Windows.
Кроме того, уделите время разработке более эффективной стратегии безопасности для предотвращения будущих заражений, включая шифрование данных, их восстановление и резервное копирование, а также регулярные обновления антивируса.
Часто задаваемые вопросы
Существуют ли какие-либо конкретные способы защиты от вирусов Powershell?
Убедитесь, что ваш Powershell обновлен, следите за подозрительными действиями, применяйте общие правила безопасности и политики ограничения выполнения. Вам также следует использовать надежный антивирус и регулярно обновлять его.
Могу ли я удалить Powershell?
Вы можете удалить Powershell, но вирус может не позволить вам выполнить это действие, если ваше устройство уже заражено. Эти вирусы могут искать в вашей системе другие инструменты, которые они могут использовать.
Является ли Powershell вредоносным инструментом?
Нет, PowerShell сам по себе не является вредоносным ПО. Однако этот инструмент могут использовать различные типы вирусов.
Все привет! В уходящем году хочу оставить небольшой след про такой сильный язык программирования, как PowerShell. Вероятно, уже в следующем году, ввиду тенденции отказа от Windows систем в нашей стране, моя практика в этой области закончится, а за пару лет активности, так и не собрался с силами опубликовать что-то подобное. Кода тут не будет, для этого у меня есть отдельная работа с заметками, цель статьи, еще раз подчеркнуть реальные возможности данного языка, где я буду ссылаться на работы, которые я старался делать универсальными, а так же сделаю акцент на полезных модулях.
Буквально два года назад, имея базовые знания навигации в консоли Linux, написание несложных batch-файлов и небольшой опыт VBScript открыл для себя PowerShell, и после этого я уже в прямом смысле этого слова, не мог остановиться реализовывать свои идеи, правда, такое дело очень затягивает. В один момент решился завести канал на GitHub и там же по сей день виду работу с заметками, где за это время накопилось более 6 тысяч строк из описания работы cmdlet (PowerShell-команд) и утилит для Системного Администратора (AD, Exchange, VMWare, MSSQL и т.д.) с примерами, ведь далеко не все получалось найти в интернете, порой, только изучая на практике свойства и методы объектов, можно получить желаемый результат. Так же набралась небольшая коллекция модулей и тестовый стенд WinForms с примерами работы различных методов, на котором я в дальнейшем базировался для написания приложений с графическим интерфейсом. Все работы писал по большей части для себя с целью автоматизировать и разгрузить текущий рабочий процесс, иногда помочь коллегам, именно по этому мне хочется поделиться своими наработками, возможно кому-то это еще сможет пригодиться.
Так сложилось, что многие с кем я общался, недолюбливают данный язык, порой, не воспринимают за язык вовсе, на рынке и правда для написания скриптов есть более функциональные конкуренты, но когда ты являешься администратором Windows систем, то это однозначно лучший, а порой незаменимый инструмент под рукой. Во-первых, язык является объектно-ориентированным, что сильно упрощает работу, и хотя в последнее время активно пишу на Bash, где преимущества в работе с текстом очевидны, но в силу привычки, мне очень не хватает данной модели, прибегая к сторонним инструментам, например jq и xmllint, которые нужно изучать отдельно, формировать массивы используя свой синтаксис. В PowerShell весь процесс автоматизирован и привычен. Во-вторых, язык на прямую интегрирован с платформой .NET, что дает возможности, как создание графических форм, используя WinForms и WPF, сетевые сокеты (например, можно написать свой syslog сервер), использовать различные библиотеки (изначально написанные на, или для C#), вплоть до создания и манипуляциями с графикой (создание или редактирование изображений).
Думаю очевидно, что для системного администратора графический интерфейс дает много возможностей, например, можно оптимизировать работу консольной команды или целого ряда cmdlet, не запоминая все ключи, имея возможность менять параметры наглядно в формах интерфейса. Автоматизировать процесс создания учетных записей в Active Directory, или формирование динамических табличный отчет состояния инфраструктуры VMWare (помимо набора модулей из PowerCLI присутствует целый ряд встроенных командлетов для Hyper-V) или Exchange (EMShell), где с помощью нескольких кликов можно узнать состояние всех баз данных и групп доступности в удобном формате, просмотреть message tracking log и выгрузить PST (возможность, которая отсутствует в консоли управления). Все это позволяет автоматизировать рутину, а главное, оптимизировать работу инструментов под себя. Естественно, никто не мешает выбрать другой интерфейс взаимодействия, например написать своего собственного бота Telegram или использовать Pipeline в Jenkins, где вся логика будет на PowerShell, и вероятно, для многих решения на базе скриптов могут казаться костыльными, тем не менее, это работает, а порой очень хорошо и других вариантов попросту может и не быть. Но в конечно итоге можно создать свою службу (используя бесконечный цикл и NSSM) или даже конвертировать скрипт в исполняемый exe-файл используя модуль ps2exe.
Фоновые задания (Jobs). Здесь смотря с кем сравнивать, например в Bash для управления jobs слишком мало функционала, они есть и работают неплохо, но по факту сами задания непредсказуемы и нуждаются в дополнительном логирование. По времени выполнения, тут все не очень хорошо, но наглядно, т.к. задания выполняются упорядочено (в отличие от Thread в Python). Для сравнения на ping 256 машин занимает примерно 2 минуты используя встроенный модуль, если воспользоваться модулем ThreadJob, время сокращается в среднем до 26 секунд, а вот задания через PoshRSJob уже 13 секунд.
Сравнение скорости работы модулей фоновых заданий
А вот в Python это занимает всего 5 секунд уже с resolve именем хоста, где можно так же создать отдельный поток для графического интерфейса (в примере, TKInter).
Пример графического интерфейса для ping подсети на python.
Но эту проблему можно исправить, используя классы .NET, например, System.Net.Sockets.TcpClient для проверки портов, где можно определить timeout ожидания ответа в 100мс и ситуация становится более наглядной, и демонстрирует разницу, при проверки одного порта на всех 254 хостах, создание заданий с использования ThreadJob занимает в среднем на 30-40% меньше времени, чем пауза (Start-Sleep) в 100 миллисекунд.
Сравнение метода BeginConnect с и без использования ThreadJob (timeout 100 milliseconds).
Управлять же заданиями максимально удобно, т.к. есть возможность отслеживать их статус, узнать состояние и время работы, читать вывод, ставить на паузу и даже отслеживать историю выполненных заданий.
Интерфейс последней версии RSA 1.4.1
Далее мне хотелось увеличить возможности удаленного администрирования без прямого взаимодействия с удаленным пользователем и добавить инструментов, за время работы у меня выработался определенный алгоритм, который я выполняю при анализе проблем в работоспособности операционной системы – это оценка нагрузки процессов, состояние служб, проверка uptime, последних обновлений и установленных приложений, состояние синхронизации компьютерных часов (ntp) и лицензий (kms), анализ сетевых настроен, подключений и конечно логов. Всем этим и не только возможно управлять удаленно, и у меня это получилось поместить в один интерфейс.
Работа с REST API. Есть одна ключевая особенность, PowerShell способен на прямую конвертировать вывод JSON и XML в объект (в обоих направлениях), что сильно оптимизирует работу для написания своих собственных скриптов взаимодействия с различными сервисами, для меня это остается самым удобно читаемым форматом, на фоне альтернатив, например, модулей для IDE. В остальном, преимуществ у Invoke-RestMethod или Invoke-WebRequest над curl особых нет. А вот для создания собственного REST API сервера вариантов наберется даже несколько. Имеется полноценный кроссплатформенный Web Framework Pode для создания REST API, веб-сайтов и серверов TCP/SMTP. Можно воспользоваться встроенным классом .NET HttpListener, на базе которого можно обработать все условия кодов возврата и использоваться базовую авторизация (Base64), и допустим создать возможность управления Windows системой на платформе Linux без необходимости конфигурирования WinRM – WinAPI, пример такой реализации.
В копилку кроссплатформенности, PowerShell Core очень неплохо работает в системе Linux, пусть и реализовано малая часть функционала, тем не менее можно комбинировать с другим языком, например Bash, и создать тот же простенький REST сервер.
Благодаря прямому взаимодействию PowerShell с ОС Windows и COM-объектами, вы можете создавать собственные кликеры на WScript для автоматизации любым простых действий (порой незаменимый подход по сей день, особенно, если это старые desktop Windows приложения), управлять продуктами MS Office (например, автоматическое создание подписи в Outlook с получением информации о пользователи из LDAP), создание и парсинг Excel-отчетов или автоматизация действий в браузере через Internet Explorer (альтернатива Selenium). Для примера у меня была задача, читать из smb каталога Excel-файл и смотреть на даты окончания срока доступа, по итогу такого совпадения делать рассылку на почту (указанную в столбце с Email и информацией в теле письма, о чем идет речь из столбца с описанием). Или, с указанным интервалом получать метрики измерений скорости интернета, используя Okkla Speedtest с выгрузкой их в InfluxDB и отрисовской в Grafana. Так же мне было удобно читать отчеты на почте состояния заданий и репозиториев Veeam, пока я нахожусь в дороге на работу, а позднее, написал модуль получения данных через REST API, который в дальнейшем развил до автоматизации добавления виртуальных машин в систему резервного копирования.
.NET Framework/Core. Модули есть практически для всего, можно даже создать собственный сервер мониторинга через WMI/CIM (фактически метрики дублируют Performance Counter), или библиотеку SNMP. Есть ряд библиотек для различных баз данных, таких как MS SQL (имеет 3 варианта взаимодействия, в том числе встроенный класс System.Data.SqlClient), MySQL Connector, SQLite, для других же присутствует стандартизированный программный интерфейс взаимодействия ODBC (присутствуют драйверы для PostgreSQL, Firebird, Elastic и т.д.). Примеры для работы с различными модулями можно посмотреть тут. У меня как-то была задача, реализовать рассылку оповещений об окончании срока действия лицензий из ITInvent (данная программа мне очень нравится своим удобством удобной, т.к. работал с ней в разных компаниях, но к сожалению данный функционал отсутствовал), где база крутилась в MS SQL Express на Oracle Linux, разобравшись во взаимосвязях между таблицами эту задачу получилось выполнить за 3 дня и на выходе всего 70 строк кода.
Selenium. Очень удобный и простой инструмент в первую очередь для функционального тестирования, но так же может быть полезен при автоматизации тех действий, для которых не предусмотрено API. Ключевой проблемой в PowerShell является отсутствие актуального готового решения подготовки всех зависимостей для работы с данным инструментом. Данный процесс подготовки у меня получилось автоматизировать, и как мне кажется, требует отдельного внимания, по этому планирую написать отдельную статью.
На этом пожалуй все. Осознаю, что многие решения нужно было описывать в свое время отдельной статьей, все работы это только энтузиазм, не являюсь разработчиком, весь опыт исключительно на практике. В освоение большинства тем очень помогали статьи различных источников, в т.ч. Habr и большая база знаний Microsoft, где так же присутствует браузер модулей PowerShell и .NET API.
Управление правами на службы через групповые политики
Если нужно раздать пользователям права запуска/остановку службы сразу на всех северах или компьютерах домена, проще всего воспользоваться возможностями групповых политик (GPO).
Создайте новую или отредактируйте существующую GPO, назначьте ее на нужный контейнер с компьютерами в Active Directory. Перейдите в раздел политик Computer configuration -> Windows Settings -> Security Settings -> System Services;

Найдите службу Print Spooler и откройте ее свойства;
Включите опцию Define this policy settings, включите автозапуск для службы и нажмите Edit Security;
В открывшемся окне добавьте пользователя или доменную группу, которым нужно предоставить права на службу. Предоставьте разрешение Start, stop and pause и Read;

Осталось дождаться обновления политик на клиентских компьютерах и проверить что ваш пользователь теперь может перезапускать службу.
Где хранятся разрешения службы Windows ?
Настройки безопасности для все служб, для которых вы изменили разрешения по-умолчанию хранятся в собственной ветке реестра HKLM\System\CurrentControlSet\Services\<servicename>\Security в параметре Security типа REG_BINARY.

Это означает, что одним из способов установки аналогичных разрешений на других компьютерах может быть экспорт/импорт данного параметра реестра (в том числе через GPO).
Итак, мы разобрали несколько способов управления правами на службы Windows, позволяющих предоставить произвольному пользователю любые права на системные службы. Если нужно, чтобы пользователь могу перезапускать службу удаленно (без предоставления права локального входа в систему), нужно разрешить пользователю удаленно опрашивать Service Control Manager.
Создать новое правило Windows Firewall
Для управления правилами брандмауэра используются 9 командлетов:
New-NetFirewallRule
Copy-NetFirewallRule
Disable-NetFirewallRule
Enable-NetFirewallRule
Get-NetFirewallRule
Remove-NetFirewallRule
Rename-NetFirewallRule
Set-NetFirewallRule
Show-NetFirewallRule
Рассмотрим несколько простых примеров открытия портов в Windows Firewall.
Например, вы хотите разрешить входящие TCP подключения на порты 80 и 443 для профилей Domain и Private. Воспользуйтесь такой командой:

Вы можете разрешить или заблокировать трафик для конкретной программы. Например, вы хотите заблокировать исходящие соединения для FireFox:
Разрешим входящее RDP подключение по стандартному порту TCP\3389 только с одного IP адреса:
New-NetFirewallRule -DisplayName "AllowRDP" –RemoteAddress 192.168.1.55 -Direction Inbound -Protocol TCP –LocalPort 3389 -Action Allow
Чтобы разрешить ICMP ping для адресов из указанных диапазонов IP адресов и подсети, используйте команды:
New-NetFirewallRule -DisplayName "Allow inbound ICMPv4" -Direction Inbound -Protocol ICMPv4 -IcmpType 8 -RemoteAddress $ips -Action Allow
New-NetFirewallRule -DisplayName "Allow inbound ICMPv6" -Direction Inbound -Protocol ICMPv6 -IcmpType 8 -RemoteAddress $ips -Action Allow
Добавить в правило файервола список IP адресов из текстового файла (по одному IP в строке):
В предыдущей статье мы показывали как с помощью PowerShell можно заблокировать доступ к сайтам не только по IP адресу, но и по DNS имени домена/сайта.
Разрешить все входящие подключения с указанного IP адреса (добавить адрес в белый список):
`$IP = ‘192.168.1.20’
New-NetFirewallRule -DisplayName "Allow $IP" -Direction Inbound -Action Allow -RemoteAddress $IP`
Изменить правило Windows Firewall с помощью PowerShell
Чтобы отредактировать правило брандмауэра, используется командлет Set-NetFirewallRule. Например, вы хотите разрешить входящие подключения с указанного IP адреса для ранее созданного правила:
Если нужно добавить в правило файервола несколько IP адресов, используйте такой скрипт:
Вывести все IP адреса, которые содержатся в правиле брандмауэра:
Удалить один IP адрес из правила:

Изменить права разрешений на службу
Для управления правами на службу из графического интерфейса можно использовать утилиту Process Explorer (https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer(. Запустите Process Explorer с правами администратора и найдите в списке процессов процесс нужной вам службы. В нашем примере это spoolsv.exe (диспетчер очереди печати — C:\Windows\System32\spoolsv.exe). Откройте свойства процесса и перейдите на вкладку Services.

Нажмите на кнопку Permissions. В окне появится текущий ACL службы. По умолчанию для локальных пользователей доступен только просмотр службы (Read).
Добавьте пользователя или группу, которой нужно предоставить права на сервис. Теперь нужно выбрать назначить уровень полномочий. По умолчанию доступны только Full Control, Write и Read).
Чтобы разрешить запуск/остановку службы, можно предоставить право Write. Однако это позволит пользователю изменить настройки службы или удалить ее.

Сохраните изменения.
Теперь выбранный пользователь может перезапускать службу.

Назначаем разрешения на службу с помощью PowerShell
Вы можете изменить разрешения службы с помощью PowerShell. Встроенный командлет управления службами Set-Service позволяет по аналогии с sc sdset задать права на слуюбу с помощью формата SDDL:
`$SDDL = "D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;RPWPCR;;;S-1-5-21-2927053466-1818515551-2824591131-1110)"
Set-Service -Name Spooler -SecurityDescriptorSddl $SDDL`

Данный командлет доступен только после установки (обновления) PowerShell Core. В Windows PowerShell 5.1 эта команда вернет ошибку:
Set-Service : A parameter cannot be found that matches parameter name ‘SecurityDescriptorSddl’.
Теперь можно под пользователем проверить, что у него появились права на управление службой Print Spooler.
Также вы можете использовать модуль Carbon из PowerShell Gallery для управления разрешениями на разные объекты Windows. Он в том числе позволяет управлять правами на службы. Установите модуль:
Install-Module -Name 'Carbon'Import-Module 'Carbon'
Чтобы предоставить права на службу, выполните команду:
Grant-CServicePermission -Identity winitpro\kbuldogov -Name spooler -QueryStatus -EnumerateDependents -Start -Stop
Чтобы вывести текущий ACL службы:

Управление правами на службы из командой строки
Вы можете использовать встроенную утилиту sc.exe (Service Controller) для управления правами служб Windows.
sc show— вывести текущие права службы:sc sdset– изменить права на службу
Основной недостаток этого метода – очень сложный формата предоставления прав на сервис (используется формат SDDL — Security Description Definition Language).
Получить текущие разрешения на службу в виде SDDL строки можно так:
sc.exe sdshow Spooler

Что значат все эти символы?
S: — System Access Control List (SACL)
D: — Discretionary ACL (DACL)
Первая буква после скобок означает: разрешить (A, Allow) или запретить (D, Deny).
Следующая пачка символов – назначаемые права.
Последние 2 буквы — объекты (группа пользователей или SID), котором нужно назначить права. Есть список предустановленных групп.
В DACL можно использовать предопределенные группы, или указать произвольного пользователя или группу по SID. Получить SID пользователя для текущего пользователя можно с помощью команды:
SID доменной группы можно получить с помощью командлета Get-ADGroup:
Чтобы назначить SDDL строку с правами на определённую службу, используется команда sc sdset. В нашем примере нужно добавить в ACL службы следующую строку:
(A;;RPWPCR;;; S-1-5-21-2927053466-1818515551-2824591131-1110)
A – Allow
RPWPCR – RP (SERVICE_START) + WP (SERVICE_STOP) + CR ( SERVICE_USER_DEFINED_CONTROL)
SID – SID пользователя или группы
Добавьте вашу ACL в конец строки, которая вернула sdshow. Чтобы применить новые права доступа на службу, воспользуйтесь командой sc sdset:
sc sdset Spooler "D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)**(A;;RPWPCR;;;S-1-5-21-2927053466-1818515551-2824591131-1110)**"

Если вы сформировали корректный DACL, команда вернет:
[SC] SetServiceObjectSecurity SUCCESSЕсли вы указали несуществующий SID или ошиблись в синтаксисе SDDL, появится ошибка:
No mapping between account names and security IDs was done.
Проверьте, что пользователь теперь может остановить и запустить службу:
net stop spooler && net start spooler

Чтобы вывести текущие права на службу в более удобном виде, воспользуйтесь утилитой psservice.exe (https://learn.microsoft.com/en-us/sysinternals/downloads/psservice)
psservice.exe security spooler
Теперь вы видите права на службу в более удобном виде.
SERVICE_NAME: Spooler
DISPLAY_NAME: Print Spooler
ACCOUNT: LocalSystem SECURITY: [ALLOW] NT AUTHORITY\Authenticated Users Query status Query Config Interrogate Enumerate Dependents User-Defined Control Read Permissions [ALLOW] NT AUTHORITY\SYSTEM Query status Query Config Interrogate Enumerate Dependents Pause/Resume Start Stop User-Defined Control Read Permissions [ALLOW] RESOURCE\a.ivanov Change Config Start Stop User-Defined Control Read Permissions [ALLOW] BUILTIN\Administrators All
В предыдущих версиях Windows для управления правами на службы можно было воспользоваться консольной утилитой SubInACL (входила в Windows Resource Kit).
Чтобы разрешить перезапуск службы пользователю, выполните:
В данном случае мы дали пользователю права на приостановку (Pause/Continue), запуск (Start) и остановку (Stop) службы. Полный список доступных разрешений:
F : Full Control
R : Generic Read
W : Generic Write
X : Generic eXecute
L : Read controL
Q : Query Service Configuration
S : Query Service Status
E : Enumerate Dependent Services
C : Service Change Configuration
T : Start Service
O : Stop Service
P : Pause/Continue Service
I : Interrogate Service
U : Service User-Defined Control Commands
Чтобы лишить пользователя назначенных прав на службу в subinacl.exe используется параметр /revoke. Например:
Однако сейчас SubInACL недоступна для загрузки на сайте Microsoft, поэтому мы не будем рекомендовать использовать ее.
Как включить и отключить Windows Defender Firewall через PowerShell?
По умолчанию Defender Firewall в Windows включен.

Как вы видите, в Windows Firewall есть три типа сетевых профилей:
Domain (Доменный) – применяется к компьютерам, включенным в домен Active Directory;
Private (Частный) – домашние или рабочие сети;
Public (Общий) – общедоступные сети.
В настройках профилей по-умолчанию разрешены все исходящие подключения и блокируется входящие (кроме разрешенных).

Информация о типах сетей хранится службой Network Location Awareness (NLA) в базе данных. Вы можете изменить профиль сети в Windows, если он определился некорректно.
Каждый профиль может отличаться используемым набором правил файервола. По умолчанию все сетевые интерфейсы компьютера защищены фаейрволом и к ним применяются все три типа профилей.
Чтобы полностью отключить Firewall в Windows, выполните команду:
Set-NetFirewallProfile -All -Enabled False
Либо укажите конкретный профиль вместо All:
Set-NetFirewallProfile -Profile Public -Enabled False
Чтобы включить файервол для всех трех сетевых профилей, используется команда:
Set-NetFirewallProfile -All -Enabled True
Вывести тип профиля, который применяется к сетевому подключению:

В этом примере к сетевому подключению Ethernet0 применяется доменный профиль (DomainAuthenticated).
Вы можете управлять правилами Windows Firewall на удаленных компьютерах, если на них настроен PowerShell Remoting (WinRM). В этом примере с помощью командлета Invoke-Command мы отключим файервол на удаленных компьютерах из списка:
Можно изменить действие по-умолчнию для профиля Public и заблокировать все входящие подключения.
Текущие настройки профиля можно вывести так:
Get-NetFirewallProfile -Name Public

Если вы управляете настройками Windows Firewall через GPO, вы можете вывести текущие результирующие настройки профилей так:
Get-NetFirewallProfile -policystore activestore
Проверим, что все параметры брандмауэра применяются ко всем сетевым интерфейса компьютера.
Если все интерфейсы защищены, команда должна вернуть:
DisabledInterfaceAliases : {NotConfigured}

Можно отключить определенный профиль для интерфейса (вывести список имен интерфейсов можно с помощью командлета Get-NetIPInterface).
Set-NetFirewallProfile -Name Public -DisabledInterfaceAliases "Ethernet0"
Как вы видите, теперь профиль Public не применяется к интерфейсу Ethernet0:
DisabledInterfaceAliases : {Ethernet0}

С помощью командлетаSet-NetFirewallProfileвы можете изменить параметры профиля (действие по-умолчанию, журналирование, путь и размер лог файла, настройки оповещений и т.д.).
Вы можете настроить параметры логирования сетевых подключений на уровне каждого профиля. По умолчанию журналы Windows Firewall хранятся в каталоге%systemroot%\system32\LogFiles\Firewall, размер файла – 4 Мб. Вы можете изменить включить журналирование подключений и увеличить максимальный размер файла:
Включить/отключить правило Windows Defender Firewall
Вы можете включать/отключать правила файервола с помощью командлетов Disable-NetFirewallRule и Enable-NetFirewallRule.
Disable-NetFirewallRule –DisplayName 'WEB-Inbound'
Чтобы разрешить ICMP (ping), выполните команду:
Enable-NetFirewallRule -Name FPS-ICMP4-ERQ-In
Чтобы удалить правило брандмауэре используется командлет Remove-NetFirewallRule.
Remove-NetFirewallRule -DisplayName 'WEB-Inbound'
Чтобы сбросить все правила Microsoft Defender Firewall и восстановить настройки по умолчанию, выполните команду:
netsh advfirewall reset
(New-Object -ComObject HNetCfg.FwPolicy2).RestoreLocalFirewallDefaults()
Это очистит все пользовательские настройки и правила Microsoft Defender Firewall. В списке правил останутся только стандартные правила сетевого доступа Windows.
Перед сбросом можно экспортировать текущие настройки в файл.
netsh advfirewall export "C:\Backup\firewall-config.wfw"
В дальнейшем вы можете вернуть старые настройки файервола, импортировав файл с правилами:
netsh advfirewall import "C:\Backup\firewall-config.wfw"
Вывести список активных правил Windows Firewall
Список активных правил для входящего трафика можно вывести так:
Если, например, нам нужно вывести список блокирующих исходящих правил:
Если нужно отобразить имя программы в правиле:

Как вы видите командлет Get-NetFirewallRule не выводит порты сетевые порты и IP адреса для правил брандмауэра. Чтобы вывести всю информацию о разрешенных входящих (исходящих) подключениях в более удобном виде с отображением номеров портов, используйте такой скрипт:

PowerShell предоставляет широкие возможности по управлению правилами Windows Firewall из командной строки. Вы можете автоматически запускать скрипты PowerShell для открытия/закрытия портов при возникновении определенных событий. В следующей статье мы рассмотрим простую систему на базе PowerShell и Windows Firewall для автоматической блокировки IP адресов, с которых выполняется удаленный перебор паролей по RDP на Windows VDS сервере.



