Skip to content

Commit

Permalink
Update drafts
Browse files Browse the repository at this point in the history
  • Loading branch information
ahpooch committed Sep 21, 2024
1 parent 9bab8a9 commit f2c6299
Showing 1 changed file with 26 additions and 8 deletions.
34 changes: 26 additions & 8 deletions _drafts/Active-Active Print Server кластер на Windows.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,8 @@ New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Print" -Name "Dns
```

### Сбор информации об активах печати
Первично нужно будет потратить время на детальный анализ всех принтеров которые подключены пользователям. В моем случае оказалось что все кейсы можно покрыть довольно скромным набором драйверов. Их необходимо расположить на сетевой шаре, доступной для чтения группе `Domain Computers`.

### Влияние уязвимости Print Nightmare
С появлением уязвимости Print Nightmare и её устранения в одном из патчей Microsoft принципиально изменилась стратегия маппинга принтеров пользователям. Раньше групповые политики при установке принтера устанавливали и драйвера используя учётную запись пользователя. Теперь же это возможно только при наличии пользователя в группе локальных администраторов устройства, либо с понижение уровня безопасности.
Обходным путем является привентивная установка необходимых драйверов на все компьютеры пользователей. Если у вас есть возможность использовать SCCM, то это можно сделать с помощью Baseline или принудительной установки пакетов или приложения. Это позволит использовать групповые политики маппинга так же как и до появления угрозы Print Naghtmare.
Первично нужно будет потратить время на детальный анализ всех принтеров которые подключены пользователям. В моем случае оказалось что все кейсы можно покрыть довольно мылым количество драйверов. Их необходимо расположить на сетевой шаре, доступной для чтения группе `Domain Computers`.
Так же эта шара должна быть доступна и пользователям. Это требование исходит из последствий проблемы Print Naghtmare, поменявшей привычный деплой принтеров пользователям через GPO, ведь теперь установка драйверов принтеров с помощью групповых политик невозможна с сервера печати без статуса локального администратора. Во всяком случае без понижения уровня безопасности. Однако я расскажу как доставить драйвера для печати пользователяи безопасным способом заранее, ещё до подключения принтеров. Это позволит использовать групповые политики маппинга так же удобно как и до появления угрозы Print Naghtmare.

### Расположение драйверов в общедоступной папке
Если возможно, то создаём папку в DFS, либо просто публикуем на одном из серверов.
Expand Down Expand Up @@ -148,7 +145,7 @@ foreach ($Printer in $Printers){

### Подготовка CSV файла с конфигурацией принтеров
Далее нам необходимо подготовить CSV файл с принтерами, которой мы будет передавать на вход скрипта устанавливающего принтеры.
В моем случа CSV файл с принтерами выглядит примерно так:
В моем случае CSV файл с принтерами выглядит примерно так:
```CSV
IP,Name,ModelFromWebUI,DriverFromInfFile,DuplexMode,PaperSize
192.168.1.1,Office1-Main,Canon iR-ADV C3520 III,Canon Generic Plus PCL6,OneSided,A4
Expand All @@ -165,7 +162,7 @@ IP,Name,ModelFromWebUI,DriverFromInfFile,DuplexMode,PaperSize
```
{: file='printers.csv'}

### Запуск скрипта установки принтеров
### Запуск скрипта установки принтеров на сервере
```powershell
& Set-OfficePrinter.ps1 -CSVFile printer.csv
```
Expand All @@ -174,7 +171,28 @@ IP,Name,ModelFromWebUI,DriverFromInfFile,DuplexMode,PaperSize
С помощью групповых политик доставляем принтера соответствующий группам пользователей.

### Обход последствий Print Nghtmare
После того как Microsoft закрыли уязвимости Print Nightmare, установка принтеров с помощью GPO для пользователей без роли локального администратора стала невозможна. Для обхода этой ситуации драйвера для принтеров стоит устанавливать заранее. Если у Вас есть sccm, то устанавлить драйвера следует всем пользователям с помощью baseline/configuration item, а противном случае установку можно осуществлять групповыми политиками.
После того, как Microsoft закрыли уязвимости Print Nightmare, установка принтеров с помощью GPO для пользователей без роли локального администратора стала невозможна. Для обхода этой ситуации драйвера для принтеров стоит устанавливать заранее. Если у Вас есть SCCM, то устанавлить драйвера следует всем пользователям с помощью baseline/configuration item или packages/application, в противном случае установку можно осуществлять групповыми политиками.

### Установка драйверов пользователям
В моём случае установка драйверов пользователям проходит используя required приложение в SCCM. Приложения я создавал используюя PSADT и основная часть установки выглядит следующим образом (В целом это калька предыдущего скрипта для установки принтеров на сервер печати):
```powershell
$drivers = @()
$drivers += [pscustomobject]@{
name = 'Canon Generic Plus PCL6'
netPath = "$dirFiles\x64\Driver\CNP60MA64.INF"
storePattern = 'C:\Windows\System32\DriverStore\FileRepository\*\CNP60MA64.INF'
storePath = ''
}
foreach($driver in $drivers){
if (!((Get-PrinterDriver).Name -contains $driver.name)){
pnputil.exe -a $driver.netPath -i
$driver.storepath = Get-ChildItem $driver.storePattern
Add-PrinterDriver -Name $driver.name -InfPath $($driver.storePath)
}
}
```
Переменная $dirFiles в PSADT указывает на папку в которой лежат драйвера принтера.

### Результат
После выполнения описанных инструкций на наших серверах будут установлены необходимые принтеры, чтобы получать задания печати, а так же у нас будет возможность переключить поток этих заданий на другой сервер печати изменяя DNS Alias. Возможно что пользователям уже установтвшим соединение с сервером придётся совершить перезагрузку или перелогиниться, чтобы доступ к печати был восстановлен. Это связано с кербероз тикетом для для работы с сервером и может быть решено их сбросом.
Expand Down

0 comments on commit f2c6299

Please sign in to comment.