1. PowerShell: Больше, чем просто командная строка
Если в Linux мы работали с текстом, то в PowerShell мы работаем с объектами. Это главное отличие и невероятное преимущество. Каждая команда (здесь она называется командлет) возвращает не просто текст, а структурированный объект со свойствами и методами.
Основы синтаксиса:
- Структура "Глагол-Существительное": Все командлеты построены по интуитивно понятной схеме:
Get-Process,Stop-Service,New-Item. - Конвейер `|`: Как и в Linux, передает результат одной команды другой. Но здесь передаются целые объекты, а не текст!
- Справка: Команда
Get-Help [имя_командлета] -Full— ваш лучший друг. Она покажет полное описание и примеры.
# Получить список всех процессов, отсортировать по использованию памяти и показать топ-5
Get-Process | Sort-Object -Property WS -Descending | Select-Object -First 5
# Получить информацию о службе 'Spooler' (Диспетчер печати)
Get-Service -Name Spooler
# Узнать IP-адрес компьютера
Get-NetIPAddress
Мы будем использовать PowerShell для выполнения всех задач в этом уроке. Забудьте про клики мышкой — автоматизация наш путь.
2. Доменные службы Active Directory (AD)
Active Directory — это мозг и сердце корпоративной сети на Windows. Это централизованная база данных, которая хранит информацию обо всем: пользователях, компьютерах, принтерах, файловых ресурсах, политиках безопасности.
Домен vs Рабочая группа: В рабочей группе каждый компьютер сам по себе. В домене есть центральный сервер (контроллер домена), который управляет всем. Это обеспечивает централизованную аутентификацию и управление.
Ключевые компоненты AD:
- Объекты: Пользователи, группы, компьютеры.
- Контроллер домена (DC): Сервер, на котором работает AD. В сети их должно быть как минимум два для отказоустойчивости.
- Организационные единицы (OU - Organizational Units): Это "папки" внутри AD для логической группировки объектов (например, OU "Бухгалтерия", OU "Серверы"). На OU применяются групповые политики.
Для работы с AD в PowerShell используется специальный модуль. Его нужно установить на ваш управляющий компьютер или использовать прямо на контроллере домена.
3. Управление учётными записями
В доменной среде создание пользователя — это не просто локальная запись, а создание объекта в глобальной базе данных AD. Все команды для работы с AD начинаются с префикса `AD`.
# Найти пользователя 'b.gates' в Active Directory
Get-ADUser -Identity b.gates
# Создать нового пользователя. -Path указывает OU, куда его поместить
New-ADUser -Name "Steve Ballmer" -GivenName "Steve" -Surname "Ballmer" -SamAccountName "s.ballmer" -UserPrincipalName "s.ballmer@cortex.corp" -Path "OU=Developers,DC=cortex,DC=corp" -AccountPassword (Read-Host -AsSecureString "Введите пароль:") -Enabled $true
# Добавить пользователя в группу 'Domain Admins' (очень осторожно!)
Add-ADGroupMember -Identity "Domain Admins" -Members "s.ballmer"
# Отключить учетную запись
Disable-ADAccount -Identity s.ballmer
4. Хранение паролей и политика доступа
Windows никогда не хранит пароли в открытом виде. Она хранит их хэши.
- SAM (Security Account Manager): Локальная база данных на каждом компьютере (
C:\Windows\System32\config\SAM), хранит хэши локальных пользователей. - NTDS.dit: Основная база данных Active Directory на контроллере домена. Хранит хэши всех доменных пользователей. Доступ к ней — главная цель атакующих.
Политика паролей настраивается через Групповые политики (о них ниже) и определяет требования к паролям: минимальная длина, сложность, срок действия, история паролей.
LAPS (Local Administrator Password Solution) — бесплатный инструмент от Microsoft для автоматической смены и централизованного хранения паролей локальных администраторов на всех компьютерах в домене. Это must-have для безопасности.
5. Управление групповыми политиками (GPO)
Групповая политика (Group Policy Object, GPO) — это самый мощный инструмент централизованного управления в Windows. Это набор правил, который применяется к пользователям или компьютерам, находящимся в определенном OU.
Что можно сделать с помощью GPO? Практически все:
- Настроить политику паролей.
- Запретить запуск определенных программ.
- Автоматически устанавливать принтеры.
- Запретить использование USB-накопителей.
- Настроить параметры Windows Firewall.
- Установить стандартные обои на рабочий стол.
Управление GPO через PowerShell позволяет автоматизировать создание и применение политик.
# Создать новую GPO
New-GPO -Name "CORTEX_Workstation_Security"
# Привязать GPO к OU 'Workstations'
New-GPLink -Name "CORTEX_Workstation_Security" -Target "OU=Workstations,DC=cortex,DC=corp"
# Установить с помощью GPO значение в реестре (например, отключить автозапуск USB)
Set-GPRegistryValue -Name "CORTEX_Workstation_Security" -Key "HKLM\Software\Policies\Microsoft\Windows\DeviceInstall\Restrictions" -ValueName "DenyRemovableDevices" -Type DWord -Value 1
6. Строение реестра и его возможности
Реестр Windows — это иерархическая база данных, в которой хранится вся информация о конфигурации системы, настройках программ, профилях пользователей и оборудовании. PowerShell представляет реестр в виде дисков, как файловую систему.
Основные "кусты" (Hives) реестра:
| Куст | Сокращение | Описание |
|---|---|---|
| HKEY_CLASSES_ROOT | HKCR | Ассоциации файлов (какая программа открывает .txt). |
| HKEY_CURRENT_USER | HKCU | Настройки текущего вошедшего в систему пользователя. |
| HKEY_LOCAL_MACHINE | HKLM | Настройки, общие для всех пользователей на данном компьютере (софт, драйверы). |
| HKEY_USERS | HKU | Профили всех пользователей, которые когда-либо логинились. |
| HKEY_CURRENT_CONFIG | HKCC | Информация о текущем профиле оборудования. |
Осторожно! Неправильное изменение реестра может привести к полной неработоспособности системы. Всегда делайте резервную копию перед внесением изменений.
# Перейти на "диск" реестра HKLM
Set-Location HKLM:
# Посмотреть содержимое "папки"
Get-ChildItem Software\Microsoft\Windows
# Проверить, существует ли ключ
Test-Path "HKLM:\SYSTEM\CurrentControlSet\Services\Dhcp"
# Создать новый ключ и значение
New-Item -Path "HKCU:\Software\CortexApp"
New-ItemProperty -Path "HKCU:\Software\CortexApp" -Name "Version" -Value "1.0"
7. Службы аудита: Кто, что, когда?
Аудит позволяет отслеживать и записывать в журнал безопасности все важные события в системе. Это критически важно для расследования инцидентов и контроля действий пользователей.
Аудит настраивается через Групповые политики. Вы можете включить аудит для таких событий, как:
- Успешные и неудачные попытки входа в систему.
- Доступ к файлам и папкам.
- Изменение членства в группах (например, добавление кого-то в "Администраторы домена").
- Изменение политик.
Все события записываются в Журнал событий (Event Viewer). В PowerShell для работы с ним используется командлет Get-WinEvent.
# Найти последние 10 событий неудачного входа в систему (Event ID 4625)
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4625} -MaxEvents 10
# Найти все события, связанные с очисткой журнала безопасности (признак действий злоумышленника)
Get-WinEvent -LogName Security | Where-Object {$_.ID -eq 1102}
8. Цифровые подписи и сертификаты
Цифровая подпись гарантирует две вещи: подлинность (код действительно написан тем, кто заявлен) и целостность (код не был изменен после подписи).
В контексте PowerShell это напрямую связано с политикой выполнения (Execution Policy). Это мера безопасности, которая определяет, можно ли запускать скрипты на данном компьютере.
Restricted— (по умолчанию) Запуск скриптов запрещен.AllSigned— Можно запускать только скрипты, подписанные доверенным издателем.RemoteSigned— Можно запускать локальные скрипты, а скачанные из интернета должны быть подписаны.Unrestricted— Можно запускать любые скрипты (небезопасно).
# Посмотреть текущую политику выполнения
Get-ExecutionPolicy
# Установить политику, требующую подписи для скачанных скриптов
# Требуются права администратора
Set-ExecutionPolicy RemoteSigned
# Проверить подпись файла скрипта
Get-AuthenticodeSignature -FilePath "C:\Scripts\MyScript.ps1"
9. Итоговое практическое задание
Вы — администратор домена `cortex.corp`. Ваша задача — создать безопасное и управляемое окружение для нового отдела `Marketing`.
- С помощью PowerShell создайте в Active Directory новое OU с именем `Marketing`.
- Создайте в этом OU двух новых пользователей: `j.doe` (John Doe) и `s.smith` (Sarah Smith). Задайте им пароли.
- Создайте группу безопасности `Marketing_Users` и добавьте в нее обоих пользователей.
- Создайте новую GPO с именем `Marketing_Restrictions`.
- Привяжите эту GPO к OU `Marketing`.
- С помощью этой GPO установите правило: минимальная длина пароля для пользователей этого OU должна быть 10 символов (это делается через политики безопасности).
- С помощью этой же GPO запретите пользователям доступ к Редактору реестра (`regedit.exe`). (Подсказка: ищите в Administrative Templates -> System).
- Создайте простой скрипт PowerShell `Welcome.ps1`, который выводит на экран "Welcome to Cortex Corp!".
- Установите политику выполнения на вашем компьютере в `RemoteSigned`. Убедитесь, что ваш локальный скрипт запускается.
Выполнив это задание, вы на практике примените все ключевые концепции администрирования Windows, от создания пользователей до централизованного управления их окружением с помощью GPO и PowerShell.