Использование PowerShell для непрерывного аудита безопасности Active Directory

Опубликовано: 8 Апреля, 2023


Введение


Фраза, которую я чаще всего слышу в современном мире аудита, — это «непрерывный аудит». Сам термин вызывает в сознании нечто совершенно иное по сравнению с тем, что он означает на самом деле. Однако реальность такова, что непрерывный аудит необходим, желателен и в большинстве случаев обязателен. Когда дело доходит до сетей Windows, концепция непрерывного аудита является новой и не совсем понятной. Аудиторы разочарованы и сбиты с толку тем, что они могут сделать для удовлетворения своих потребностей и требований. После нескольких месяцев исследований, обучения и тестирования я собрал множество вариантов, которые аудиторы могут использовать для завершения, по крайней мере, минимального аудита Active Directory.



Определение непрерывного аудита безопасности


Сначала я должен определить, какова моя интерпретация непрерывного одитинга. Получив первоначальное представление о непрерывном аудите, я провел небольшое исследование, чтобы выяснить, что в отрасли считается непрерывным аудитом. Вот мои выводы:



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

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


Использование PowerShell для непрерывного аудита


PowerShell — это бесплатный и мощный инструмент, разработанный Microsoft для Windows XP и более поздних версий. PowerShell теперь входит в стандартную комплектацию Windows Server 2008 и Windows 7, но его необходимо установить в Windows XP и Server 2003, если вам нужно запустить инструмент там.


Как вы увидите, PowerShell требует некоторого локального административного доступа, но не требует НИКАКОГО административного доступа на уровне домена для сбора параметров безопасности, которые включены в этот документ. Самая большая проблема — настроить PowerShell, чтобы он мог собирать необходимую информацию.


Получение PowerShell


Вы можете получить две версии PowerShell. Каждая версия может работать на определенных платформах ОС. Ниже приведен список версий PowerShell, где можно получить установочные биты PowerShell и какие операционные системы поддерживает версия PowerShell.



  • Версия 1.0 (детали загрузки)
  • Windows XP
  • Windows сервер 2003
  • Виндоус виста
  • Windows Сервер 2008
  • Версия 2.0 (детали загрузки)
  • Windows XP с SP3
  • Windows Server 2003 с пакетом обновления 2 (SP2).
  • Windows Vista с SP1
  • Windows Сервер 2008
  • Windows 7
  • Windows Server 2008 R2

Настройка PowerShell


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


Чтобы ослабить безопасность PowerShell, вы запустите PowerShell на своем компьютере в качестве локального администратора. (Если у вас нет привилегий локального администратора на вашем локальном компьютере, вам потребуется попросить кого-то, у кого есть эта привилегия, выполнить эту задачу. ЭТО ЕДИНСТВЕННАЯ задача, которую необходимо запустить от имени локального администратора, которая указана в этом документ).


В окне PowerShell запустите:


set-executionpolicy


Затем, когда будет предложено, как показано на рисунке 1, введите:


дистанционно подписанный


Это также видно на рисунке 1.


Изображение 23381
Рисунок 1: Настройка PowerShell для запуска неподписанных командлетов.


Теперь вы можете запускать командлеты PowerShell, описанные ниже, без каких-либо ошибок из-за ограничений безопасности.


Получение командлета PowerShell для AD


Теперь вам нужно получить командлет PowerShell для AD, описанный в этой статье. В конце этой статьи я собираюсь перечислить содержимое командлета, но вы также можете получить его с оригинального сайта, где я его получил. Оригинальный сайт находится здесь.


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



  1. Скопируйте содержимое онлайн-кода по ссылке выше или код ниже в этой статье, используя стандартное Windows «выделение текста», затем выберите «Копировать».
  2. Вставьте или вставьте текст из шага 1 в Блокнот. (Вы не можете использовать Word, так как это может привести к добавлению в код дополнительных символов, что приведет к тому, что командлет не запустится.)
  3. Сохраните файл блокнота как файл.ps1 (убедитесь, что не сохраняете со стандартным расширением.txt! Это может быть сложно, если вы никогда этого не делали. Чтобы убедиться, что это правильно сохранено, убедитесь, что вы выбрали «Все файлы» при сохранении файл и вручную введите расширение.ps1.)

Теперь вы готовы запустить несколько командлетов!


Запуск нового командлета PowerShell


Чтобы правильно запустить командлет, вам следует перейти в папку, в которой вы сохранили файл.ps1. PowerShell поддерживает стандартный синтаксис командной строки, например:


компакт-диск c:pscmdlets


Это переместит текущую позицию PowerShell в папку pscmdlets в корневом каталоге c:. Просто измените путь к тому месту, где вы разместили файл.ps1.


Теперь вы должны ввести правильный синтаксис, чтобы командлет заработал. Как и PowerShell, вы должны ввести . перед именем командлета. Чтобы запустить командлет, введите:


.getadinfo.ps1


Это должно привести к выводу, подобному тому, что вы видите в начале кода, указанного ниже.


Получение информации об объявлении


Вот несколько командных команд, которые вы можете запустить, чтобы получить довольно важную информацию из AD:


.getadinfo.ps1 -Домен yourdomain.corp -ToCsv C:MyFolderMyFile.csv


.getadinfo.ps1 -Domain yourdomain.corp -OU AllOU -Property disabledName,l -ToCsv C:MyFolderMyOUFile.csv


.getadinfo.ps1 -Домен yourdomain.corp -Администратор пользователя


.getadinfo.ps1 -Домен yourdomain.corp -Группа «Администраторы домена»


Резюме


PowerShell потрясающий, мощный и бесплатный. Это позволяет администраторам и аудиторам без особых усилий собирать информацию об Active Directory. Вы можете получить информацию об учетных записях пользователей, групповых учетных записях, домене и т. д. PowerShell был разработан для обновления, анализа и изменения компьютеров Windows, поэтому он идеально подходит для этой задачи. В моей следующей статье я расскажу, как использовать сторонние инструменты, использующие PowerShell, а также покажу вам, как включать командлеты PowerShell в запланированные задачи для «настоящего непрерывного аудита»!


Код командлета PowerShell