# Практическая работа № 5 ## 5.1 Настройка DFS Установим требуемые компоненты на серверах dc1 и dc2 ```powershell= Install-WindowsFeature -ComputerName dc1 FS-DFS-Namespace, FS-DFS-Replication -IncludeManagementTools Install-WindowsFeature -ComputerName dc2 FS-DFS-Namespace, FS-DFS-Replication -IncludeManagementTools ``` Компоненты успешно установлены ![](https://i.imgur.com/d5EpTuw.png) Создадим DFS root, а также папку и шару для него ```powershell= New-Item -Path "C:\DFSRoots" -Name "pt-dfs" -ItemType Directory New-SmbShare -Name "pt-dfs" -Path "C:\DFSRoots\pt-dfs" -ChangeAccess "Everyone" New-DfsnRoot -TargetPath "\\dc1\pt-dfs" -Type DomainV2 -Path "\\pt.local\pt-dfs" ``` Корень успешно создан ![](https://i.imgur.com/5S9y2MW.png) Перейдем в интегрированную консоль Powershell и выполним данный скрипт ```powershell= # определям базовый путь до шар $basePath = "C:\share\" # создаем хештаблицу соответствия шары и доменной группы $shares = @{ all_share = "Everyone" Buhg = "Buhg-sec" HR = "HR-sec" Progr = "Progr-sec" Sysadmins = "Sysadmins-sec" VIP = "VIP-sec" } # бежим по именам шар $shares.Keys | ForEach-Object{ # создаем папку для шары New-Item -Path $basePath -Name $_ -ItemType Directory # расшариваем ее невидимой, настраиваем доступ по сети: выдаем полный доступ группе администраторов домена, доступ на изменение выдаем доменной группе соответствующей шары New-SmbShare -Name ($_+"$") -Path ($basePath+$_) -FullAccess "Domain Admins" -ChangeAccess $shares[$_] # настраиваем разрешения NTFS # Смотрим текущие разрешения (Get-Acl -Path ($basePath+$_)).Access | Format-Table -Autosize # создаем запись доступа для соответствующей доменной группы $ACE = New-Object System.Security.AccessControl.FileSystemAccessRule($shares[$_],"Modify", "ContainerInherit, ObjectInherit", "None", "Allow") # получаем текущий ACL папки $ACL = Get-Acl -Path ($basePath+$_) # добавляем к ACL нашу запись доступа ACE $ACL.AddAccessRule($ACE) # устанавливаем новый ACL на папку Set-Acl -Path ($basePath+$_) -AclObject $ACL # смотрим разрешения (Get-Acl -Path ($basePath+$_)).Access | Format-Table -Autosize } ``` Скрипт выполнился успешно ![](https://i.imgur.com/aHbAZCx.png) ![](https://i.imgur.com/tBuoftE.png) Подключимся удаленно к серверу dc2 напрямую из Powershell ISE ![](https://i.imgur.com/HAu7uZs.png) ![](https://i.imgur.com/xcnwH86.png) Выполним на dc2 скрипт создания шар. В русской версии группа "Everyone" называется "Все" ```powershell= New-Item -Path "C:\DFSRoots" -Name "pt-dfs" -ItemType Directory New-SmbShare -Name "pt-dfs" -Path "C:\DFSRoots\pt-dfs" -ChangeAccess "Все" # определям базовый путь до шар $basePath = "C:\share\" # создаем хештаблицу соответствия шары и доменной группы $shares = @{ all_share = "Все" Buhg = "Buhg-sec" HR = "HR-sec" Progr = "Progr-sec" Sysadmins = "Sysadmins-sec" VIP = "VIP-sec" } # бежим по именам шар $shares.Keys | ForEach-Object{ # создаем папку для шары New-Item -Path $basePath -Name $_ -ItemType Directory # расшариваем ее невидимой, настраиваем доступ по сети: выдаем полный доступ группе администраторов домена, доступ на изменение выдаем доменной группе соответствующей шары New-SmbShare -Name ($_+"$") -Path ($basePath+$_) -FullAccess "Domain Admins" -ChangeAccess $shares[$_] # настраиваем разрешения NTFS # Смотрим текущие разрешения (Get-Acl -Path ($basePath+$_)).Access | Format-Table -Autosize # создаем запись доступа для соответствующей доменной группы $ACE = New-Object System.Security.AccessControl.FileSystemAccessRule($shares[$_],"Modify", "ContainerInherit, ObjectInherit", "None", "Allow") # получаем текущий ACL папки $ACL = Get-Acl -Path ($basePath+$_) # добавляем к ACL нашу запись доступа ACE $ACL.AddAccessRule($ACE) # устанавливаем новый ACL на папку Set-Acl -Path ($basePath+$_) -AclObject $ACL # смотрим разрешения (Get-Acl -Path ($basePath+$_)).Access | Format-Table -Autosize } ``` Скрипт выполнился успешно ![](https://i.imgur.com/ail2ajD.png) ![](https://i.imgur.com/WvDLDcc.png) ## 5.2 Настройка репликации ```powershell= # создаем группу репликации New-DfsReplicationGroup -GroupName "DFS pt.local replication" # добавляем в группу членов репликации Add-DfsrMember -GroupName "DFS pt.local replication" -ComputerName "dc1","dc2" # создаем соединение членов репликации Add-DfsrConnection -GroupName "DFS pt.local replication" -SourceComputerName "dc1" -DestinationComputerName "dc2" # создаем папку рекликации New-DfsReplicatedFolder -GroupName "DFS pt.local replication" -FolderName "share" # указываем настройки папки репликации и ее источники для первого члена dc1 Set-DfsrMembership -GroupName "DFS pt.local replication" -FolderName "share" -ContentPath "C:\share" -ComputerName "dc1" -PrimaryMember $True -StagingPathQuotaInMB 16384 -Force # и для второго dc2 Set-DfsrMembership -GroupName "DFS pt.local replication" -FolderName "share" -ContentPath "C:\share" -ComputerName "dc2" -StagingPathQuotaInMB 16384 -Force ``` Репликация успешно настроена ![](https://i.imgur.com/gmCUVaQ.png) Теперь свяжем наши шары на обоих серверах с адресным простанством DFS ```powershell= $shares = @{ all_share = "Everyone" Buhg = "Buhg-sec" HR = "HR-sec" Progr = "Progr-sec" Sysadmins = "Sysadmins-sec" VIP = "VIP-sec" } $shares.Keys | ForEach-Object{ # публикуем шару dc1 в DFS New-DfsnFolder -Path ("\\pt.local\pt-dfs\"+$_) -TargetPath ("\\dc1\"+$_+"$") -EnableTargetFailback $true # подключаем реплику с dc2 New-DfsnFolderTarget -Path ("\\pt.local\pt-dfs\"+$_) -TargetPath ("\\dc2\"+$_+"$") } ``` Шары успешно опубликованы ![](https://i.imgur.com/V9jHosS.png) ![](https://i.imgur.com/ZXQsKuN.png) ![](https://i.imgur.com/d1SutS8.png) ![](https://i.imgur.com/0kaSIRl.png) ![](https://i.imgur.com/LioFpxM.png) ## 5.3 Настройка мониторинга Нстроим аудит папки для действий доменных пользователей ```powershell= # папка для котроля $share = "C:\\Share" # контролируемая учетная запись $principal = "Domain Users" # контролируюемы типы действий $perm = "Delete,DeleteSubdirectoriesAndFiles,ExecuteFile,ReadData,ReadPermissions,ReadAttributes,ReadExtendedAttributes" # устанавливаем параметры наследования $inherit = "ContainerInherit,ObjectInherit" # контролируем как успех так и отказ $type = "Success,Failure" # создаем запись $ACE = New-Object System.Security.AccessControl.FileSystemAuditRule($principal,$perm,$inherit,"None",$type) # устанавливаем ACL $ACL = Get-Acl $share $ACL.SetAuditRule($ACE) Set-Acl $share -AclObject $ACL ``` Настройки успешно применены (dc1, dc2) ![](https://i.imgur.com/ya1zYlg.png) ![](https://i.imgur.com/JTElYmv.png) ![](https://i.imgur.com/ZL3KlzQ.png) На шаре \\pt.local\pt-dfs\all_share создадим папку folder-for-delete. С копьютера pc1 по пользователем Olga удалим эту папку. ![](https://i.imgur.com/DKtHeWq.png) Данным скриптом определим хендл события ```powershell= $LogParam = @{ LogName = "Security"; ID = "4665","4659","4660","4663" } Get-WinEvent -FilterHashtable $LogParam | Where-Object Message -Like "*folder-for-delete*" | Select-Object TimeCreated, ID, Message | Format-Table -Wrap -AutoSize ``` Handle ID 0xb9c ![](https://i.imgur.com/slAsM27.png) Данным скриптом проверим собщения по событию с определенным хендлом ```powershell= $LogParam = @{ LogName = "Security"; ID = "4665","4659","4660","4663" } Get-WinEvent -FilterHashtable $LogParam | Where-Object Message -Like "*0xb9c*" | Select-Object TimeCreated, ID, Message | Format-Table -Wrap -AutoSize ``` ![](https://i.imgur.com/4Ys8p4r.png) ## 5.4 Настройка отправки логов в SIEM Вклюм сервис сборщика логов командой ```bash= wecutil qc ``` Сервис успешно включен ![](https://i.imgur.com/b7xSO6e.png) Создадим и настроим GPO отправки журналов на logcollector ![](https://i.imgur.com/4jQ6t2G.png) Включим службу WinRM ![](https://i.imgur.com/0YZ8fZq.png) Настроим путь до логколлектора gj FQDN указав строчку ```bash= Server=http://dc1.pt.local:5985/wsman/SubscriptionManager/WEC,Refresh=5 ``` ![](https://i.imgur.com/x4EhRrT.png) Для доступа по winrm необходимо сконфигурировать файрволл Создадим новое входящее предустановленное правило для файрволла ![](https://i.imgur.com/Zox0uUt.png) ![](https://i.imgur.com/KXdu6eR.png) ![](https://i.imgur.com/WdCXxWh.png) ![](https://i.imgur.com/pmWqmPN.png) Настроим доступ к журналам безопасности ![](https://i.imgur.com/kCkbIMS.png) Дескриптор безопасности журнал посмотрим на машине pc1 следующей командой ```bash= wevtutil gl security ``` И установим данный дескриптор O:BAG:SYD:(A;;0xf0005;;;SY)(A;;0x5;;;BA)(A;;0x1;;;S-1-5-32-573)(A;;0x1;;;S-1-5-20) ![](https://i.imgur.com/4ALaQ8g.png) Далее через GPP настроим членство в локльной группе читателей журнала событий и добавим туда администраторов домена ![](https://i.imgur.com/xnC9Xbz.png) Отфильтруем применение GPO только для машины PC1 ![](https://i.imgur.com/3p6v1Fe.png) ![](https://i.imgur.com/XIHmN1W.png) И прилинкуем политику к домену ![](https://i.imgur.com/Gm1OcNE.png) Настроим прием логов на коллекторе Создадим подписку на прием логов ![](https://i.imgur.com/gRo4PRh.png) ![](https://i.imgur.com/P0uxqzZ.png) Выберем машину с которой будем принимать логи это pc1 ![](https://i.imgur.com/tfGS6Ev.png) Проверим соединение ![](https://i.imgur.com/jPSfqdf.png) Выберем нужные журналы ![](https://i.imgur.com/17KTuRg.png) Укажем учетную запись для сбора логов ![](https://i.imgur.com/G7hShGY.png) Подписка создана ![](https://i.imgur.com/XpvSNHW.png) Ошибок нет ![](https://i.imgur.com/1gvWD8B.png) Дадим доступ сетевой службе ```bash= wevtutil set-log security /ca:O:BAG:SYD:(A;;0xf0005;;;SY)(A;;0x5;;;BA)(A;;0x1;;;S-1-5-32-573)(A;;0x1;;;S-1-5-20) ``` Доступ предоставлен ![](https://i.imgur.com/a7mhEVc.png) Логи передаются ![](https://i.imgur.com/rd9pyhk.png) Теперь настроим пересылку где инициаторами пересылки будут машины, в нашем случае pc1. Создадим подписку collector-machine-init ![](https://i.imgur.com/Vo4Y8Qa.png) Инициаторами будет группа "Domain Computers" ![](https://i.imgur.com/OMU2Vod.png) Укажем логи для сбора ![](https://i.imgur.com/b5wUr6m.png) В рамках тестирования отключим коллектор collector-get ![](https://i.imgur.com/3FTAwMd.png) WinRM на сервере коллекторе уже включен ![](https://i.imgur.com/gbvEaeV.png) Включим службу сборщика ![](https://i.imgur.com/5KLAdEu.png) Проверим статус нашего коллектора ![](https://i.imgur.com/UxDbMIT.png) На этом данная работа завершена