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.