Андрей Смирнов
Время чтения: ~16 мин.
Просмотров: 18

Приручаем WSUS при помощи Ansible и не только

WindowsServerUpdateServices (WSUS) — это служба обновлений, позволяющая администраторам централизованно управлять расстановкой патчей и обновлений безопасностей для продуктов Microsoft (операционных систем Widows, Office, SQL Server, Exchange и т.д.) на компьютерах и серверах в корпоративной сети. Вкратце напомним, как работает WSUS: сервер WSUS по расписанию синхронизируется с сервером обновлений Microsoft в Интернете и выкачивает новые обновления для выбранных продуктов. Администратор WSUS выбирает какие обновления необходимо установить на рабочие станции и сервера компании. Клиенты WSUS скачивают и устанавливают требуемые обновления с корпоративного сервера обновлений согласно настроенным политикам. Использование собственного сервера обновлений WSUS позволяет экономить интернет трафик и более гибко управлять установкой обновлений в компании.

Компания Microsoft предлагает и другие средства установки обновлений на свои продукты, например, SCCM 2007/2012. Однако в отличии от многих других продуктов, сервер WSUS является абсолютно бесплатным (на самом деле служба обновлений в SCCM – SUP Software Update Point также основана на WSUS).

До выхода Windows Server 2012 последней актуальной версией сервера обновлений Microsoft был Windows Server Update Services 3.0 SP2 — WSUS 3.2, который не поддерживает современные ОС (как включить поддержку Windows 8 и Windows 2012 на WSUS 3.0). Вместе с выходом новой серверной платформы, Microsoft презентовала и новую версию WSUS 6.0 (что странно, ведь по логике эта версия должна носить имя WSUS 4.0…).

Принципиально в новой версии WSUS в Windows Server 2012R2 / 2016 практически ничего не изменилось. Отметим, что теперь установочный пакет WSUS нельзя скачать отдельно с сайта Microsoft, он интегрирован в дистрибутив Windows Server и устанавливается в виде отдельной роли сервера. Кроме того, во WSUS 6.0 появилась возможность управления установкой обновлений с помощью PowerShell.

В этой статье мы рассмотрим базовые вопросы установки и настройки сервера WSUS на базе Windows Server 2012 R2 / Windows Server 2016.

Содержание:

Установка роли WSUS на Windows Server 2012 R2 / 2016

Еще в Windows Server 2008 сервис WSUS был выделен в отдельную роль, которую можно было установить через консоль управления сервером. В Windows Server 2012 / R2 этот момент не поменялся. Откройте консоль  Server Manager и отметьте роль Windows Server Update Services (система автоматически выберет и предложит установить необходимые компоненты веб сервера IIS).

1_install_wsus_role_windows_2012.jpg

Отметьте опцию WSUS Services, далее необходимо выбрать тип базы данных, которую будет использовать WSUS.

В Windows Server 2012 R2 поддерживаются следующие типы SQL баз данных для WSUS сервера:

  • Windows Internal Database (WID);
  • Microsoft SQL Server 2008 R2 SP1, 2012, 2014, 2016 в редакциях Enterprise / Standard / Express  Edition;
  • Microsoft SQL Server 2012 Enterprise / Standard  / Express Edition.

Соответственно вы можете использовать встроенную базу данных Windows WID (Windows Internal database), которая является бесплатной и не требует дополнительного лицензирования. Либо вы можете использовать выделенную локальная или удаленную (на другом сервере) базу данных на SQL Server для хранения данных WSUS.

База WID по умолчанию называется SUSDB.mdf и хранится в каталоге windir%widdata. Эта база поддерживает только Windows аутентификацию (но не SQL). Инстанс внутренней (WID) базы данных для WSUS называется server_nameMicrosoft##WID. В базе данных WSUS хранятся настройки сервера обновлений, метаданные обновлений и сведения о клиентах сервера WSUS.

Внутреннюю базу Windows (Windows Internal Database) рекомендуется использовать, если:

  • Организация не имеет и не планирует покупать лицензии на SQL Server;
  • Не планируется использовать балансировку нагрузки на WSUS (NLB WSUS);
  • Если планируется развернуть дочерний сервер WSUS (например, в филиалах). В этом случае на вторичных серверах рекомендуется использовать встроенную базу WSUS.

Базу WID можно администрировать через SQL Server Management Studio (SSMS), если указать в строке подключения \.pipeMICROSOFT##WIDtsqlquery.

Отметим, что в бесплатных редакциях SQL Server 2008/2012 Express имеет ограничение на максимальный размер БД – 10 Гб. Скорее всего это ограничение достигнуто не будет (например, размер базы WSUS на 2500 клиентов – около 3 Гб). Ограничение Windows Internal Database – 524 Гб.

В случае, установки роли WSUS и сервера БД на разных серверах, существует ряд ограничений:

  • SQL сервер с БД WSUS не может быть контроллером домена;
  • Сервер WSUS не может быть одновременно сервером терминалов с ролью Remote Desktop Services;

Если вы планируете использовать встроенную базу данных (это вполне рекомендуемый и работоспособный вариант даже для больших инфраструктур), отметьте опцию WIDDatabase.

2_wsus_option_win2012.jpg

Затем нужно указать каталог, в котором будут храниться файлы обновлений (рекомендуется, чтобы на выбранном диске было как минимум 10 Гб свободного места).

Размер базы данных WSUS сильно зависит от количества продуктов и ОС Windows, которое вы планируете обновлять. В большой организации размер файлов обновлений на WSUS сервере может достигать сотни Гб. Например, у меня каталог с обновлениями WSUS занимает около 400 Гб (хранятся обновления для Windows 7, 8.1, 10, Windows Server 2008 R2, 2012 / R2/ 2016, Exchange 2013, Office 2010 и 2016, SQL Server 2008/2012/2016). Имейте это в виду, планируя место для размещения файлов WSUS.

3_wsus_folder.jpg

В том случае, если ранее было выбрано использование отдельной выделенной БД SQL, необходимо указать имя сервера СУБД, инстанса БД и проверить подключение.

4_wsus_sql_db.jpg

Далее запустится установка роли WSUS и всех необходимых компонентов, после окончания которых запустите консоль управления WSUS в консоли Server Manager.

5_wsus_role_console.jpg

Вы также можете установить сервер WSUS со внутренней базой данных с помощью следующей команды PowerShell:

Install-WindowsFeature -Name Updateservices,UpdateServices-WidDB,UpdateServices-services –IncludeManagementTools

Начальная настройка сервера обновлений WSUS в Windows Server 2012 R2 / 2016

При первом запуске консоли WSUS автоматически запустится мастер настройки сервера обновлений. Рассмотрим основные шаги настройки сервера WSUS с помощью мастера.

Укажите, будет ли сервер WSUS брать обновления с сайта Microsoft Update напрямую или он должен качать его с вышестоящего WSUS сервера (обычно этот вариант используется в крупных сетях для настройки WSUS сервера большого регионального подразделения, который берет обновления с WSUS центрального офиса, чем существенно снижается нагрузка на каналы связи между центральным офисом и филиалом).

6_wsus_sync_source.jpg

Если ваш сервер WSUS сам должен загружать обновления с серверов Windows Update, и доступ в Интернет у вас осуществляется через прокси-сервер, вы должны указать адрес прокси сервера, порт и логин/пароль для авторизации на нем.

7_wsus_proxy.jpg

Далее проверяется связь с вышестоящим сервером обновления. Нажмите кнопку Start Connecting.

8_wsus_2012_start_sync.jpg

Затем необходимо выбрать языки, для которых WSUS будет скачивать обновления. Мы укажем English и Russian (список языков может быть в дальнейшем изменен из консоли WSUS).

9_wsus_2012_update_language.jpg

Затем указывается список продуктов, для которых WSUS должен скачивать обновления. Необходимо выбрать все продукты Microsoft, которые используются в Вашей корпоративной сети. Имейте в виду, что все обновления занимают дополнительное место на диске, поэтому лишние продукты отмечать не следует. Если вы точно уверены, что в вашей сети не осталось компьютеров с Windows XP или Windows 7, не выбирайте эти опции. Тем самым вы сэкономите существенно место на диске WSUS сервера.

В случае необходимости вы сможете вручную импортировать любые обновления из каталога Microsoft Update Catalog на свой сервер WSUS.

10_wsus_6_select_product.jpg

На странице Classification Page, нужно указать типы обновлений, которые будут распространяться через WSUS. Рекомендуется обязательно указать: Critical Updates, Definition Updates, Security Packs, Service Packs, Update Rollups, Updates.

wsus_update_classifications.jpg

Обновления редакций (билдов) Windows 10 (1709, 1803, 1809 и т.д.) в консоли WSUS входят в класс Upgrades.  

Далее необходимо указать расписание синхронизации обновлений – рекомендуется использовать автоматическую ежедневную синхронизацию сервера WSUS с серверами обновлений Microsoft Update. Имеет смысл выполнять синхронизацию в ночные часы, чтобы не загружать канал доступа в Интернет в рабочее время.

12_wsus_windows_serv_2012_shedul_sync.jpg

Первоначальная синхронизация сервера WSUS с вышестоящим сервером обновлений может занят несколько дней, в зависимости от количества продуктов, которое вы выбрали ранее и скорости доступа в Интернет.

После окончания работы мастер запустится консоль WSUS.

13_windows_server_2012_wsus_console.jpg

С целью повышения производительности сервера WSUS на Windows Server рекомендуется исключить следующие папки из области проверки антивируса:

  • WSUSWSUSContent;
  • %windir%widdata;
  • SoftwareDistributionDownload.

Клиенты теперь могут получать обновления, подключившись к WSUS серверу по порту 8530 (в Windows Server 2003 и 2008 по умолчанию использоваться 80 порт). При большом количестве компьютеров (более 1500) производительность пула IIS WsusPoll, который раздает обновления клиентов, можно отрегулировать согласно статье.

Для возможности просмотра отчетов по установленным обновлениям на сервере WSUS нужно установить дополнительный компоненты Microsoft Report Viewer 2008 SP1 Redistributable (или выше), который можно свободно скачать с сайта Microsoft.

В других статьях мы рассмотрим дальнейшую настройку сервера WSUS на Windows Server 2012 R2 / 2016, и настройку параметров клиентов (серверов и рабочих станций) WSUS с помощью групповых политик, особенности одобрения обновлений и переноса одобренных обновлений между группами на WSUS.

nrqvr_3jalcvqx-aadambimscaw.jpeg

Ну что ж, вот и настала пора подружить Windows-обновления с миром Open Source. В этой статье разнообразим быт интеграцией Ansible со всеми возможными источниками обновлений Windows-машин. Хотя возможности системы значительно шире простой раскатки обновлений на серверы и рабочие станции, но ведь надо с чего-то начинать.

Про настройку Windows Server Update Services рассказывать я не буду, благо она тривиальна. Сосредоточусь на минусах.

ozxjmemrzx0lqng8bxtsrvvmbrc.jpegИнтерфейс WSUS почти не менялся на протяжении всей истории.

Невозможность установки по требованию. Действительно, для штатной работы WSUS подходит неплохо — обновления спокойно себе настраиваются и ставятся по локальной сети при выключении компьютеров. Но если нужно срочно установить патчи безопасности, то придется выкручиваться скриптами и решениями для запуска этих самых скриптов. В этом может помочь наш материал «1000++ способ запуска команд на удаленном компьютере».

Отсутствие штатного способа установки обновлений стороннего ПО. Если есть сервер обновлений, то выглядит разумным использовать его не только для обновлений программ MS, но для других решений. Например, в не к ночи упомянутом Adobe Flash Player уязвимости находятся с завидной регулярностью, да и радовать пользователей новыми возможностями FireFox тоже хотелось бы. Для того чтобы наладить установку обновлений через WSUS, приходится использовать сторонние решения вроде WSUS Package Publisher. Посмотреть примеры настройки можно в статье «Установка любого программного обеспечения средствами WSUS — 2».

Использование встроенной БД Windows. При стандартной установке WSUS использует WID — Windows Internal Database. По сути это маленький встроенный SQL Server с базой данных. В случае каких-то неполадок или конфликтов — к примеру, если у вас на одном сервере живет Remote Desktop Connection Broker и WSUS, — приходится чинить эту базу, настраивать права доступа и всячески развлекаться. Да и резервное копирование бы не помешало. По счастью, WSUS может использовать и классический SQL. Для переноса БД WSUS можно воспользоваться инструкцией Migrating the WSUS Database from WID to SQL от Microsoft.

Необходимость обслуживания и неочевидная настройка сбойных клиентов. Как это бывает с продуктами от Microsoft, рано или поздно WSUS начинает тормозить: клиенты долго не могут к нему подцепиться и скачать обновления. Сборник советов и оптимизаций есть в статье «Ускоряем работу WSUS» и в комментариях к ней.

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

Практически любая система управления конфигурациями может облегчить работу с обновлениями. Разберем пример на базе Ansible для установки обновлений по требованию.

Устраивать холивар, что лучше из бесплатных систем — Ansible, Chef, Puppet или вовсе Salt, нет ни малейшего желания. Система Ansible выбрана за отсутствие необходимости использования агентов и за простоту настройки. И, конечно, из-за Python: ведь этот язык намного проще освоить начинающим автоматизаторам, в отличие от Ruby.

Стоит отметить, что помимо решения задачи, это будет неплохое подспорье для ознакомления с принципами работы подобных систем. Если, конечно, вы еще не развлекались установкой Streisand, особенно, когда что-то в процессе идет не так. А если вы уже используете Ansible или другие модные решения, то запросто сможете и обновления устанавливать. С азами Ansible я рекомендую ознакомиться в статье «Пособие по Ansible», а ниже — пошаговая инструкция по работе с обновлениями.

Для начала подготовим сервер Ansible. Подойдет практически любой GNULinux дистрибутив, но примеры команд я буду приводить для Ubuntu Server (так исторически сложилось).

Для начала установим пакетный менеджер для приложений на Python:

apt-get install python-pip pip install --upgrade pip pip install --upgrade virtualenv

Затем нам понадобится установить пакет pywinrm для подключения к системам Windows и непосредственно систему Ansible:

sudo pip install pywinrm sudo pip install ansible

Проверить установку можно командой ansible —version.

Проверка установки.

Вместо пакета в теории pywinrm можно использовать любое другое средство для управления Windows с машины на Linux. Часть из них разобрана в статье «Перекрестное опыление: управляем Linux из-под Windows, и наоборот».

Теперь нужно разрешить подключение к Windows по WinRM. Для этого есть уже готовый скрипт ConfigureRemotingForAnsible.ps1, доступный на GitHub. Ну, а как запускать скрипты на удаленных машинах вы уже знаете.

Проверить подключение к Windows можно командой:

ansible windows -m win_ping

Проверка подключения успешна.

Теперь можно заняться созданием playbook. Нам облегчит жизнь тот факт, что разработчики Ansible уже подумали за нас и сделали модуль win_updates, как раз для решения таких задач.

Playbook — это «инструкция», которая говорит системе управления конфигурациями, что же ей делать. Разумеется, пошаговая.

Любой playbook является файлом в формате yml и представляет из себя набор директив — у каждого модуля они свои. Модуль winupdate позволяет использовать следующие директивы (жирным выделены значения по умолчанию):

Название Значение Описание
category_names Категория обновлений.
whitelist Номер обновления или шаблон имени. Непосредственно номер устанавливаемых обновлений вида KB01234 или шаблон имени в виде регулярного выражения PowerShell.
blacklist Номер обновления или шаблон имени. Непосредственно номер обновлений, которые не нужно устанавливать, вида KB01234 или шаблон имени в виде регулярного выражения PowerShell.
reboot Требуется ли перезагрузка после обновления.
reboot_timeout секунды, 1200 Сколько времени ждать машину после перезагрузки.
state Устанавливать ли обновления, или только искать.
log_path путь к файлу Журнал установки, при этом папка должна существовать.

Таким образом, для установки определенных обновлений подойдет следующий playbook:

- name: Install specific updates based on the KBs for those updates   win_updates:     category_name:     - SecurityUpdates      whitelist:     - KB4073819     - KB4074228

А если надо просто посчитать, сколько обновлений не хватает, playbook будет таким:

  – name: Check for missing updates           win_updates: state=searched           register: update_count

Для установки всех доступных обновлений с последующей перезагрузкой будет подобный playbook:

- name: Install all critical and security updates   win_updates:     category_names:     - CriticalUpdates     - SecurityUpdates     - UpdateRollups     state: installed   register: update_result          - name: reboot host if required           win_reboot:           when: update_result.reboot_required

Напомню, что для работы со списком серверов понадобится файл инвентаризации. Например, такой:

[DCs] dc1.mydomain.local dc2.mydomain.local  [AppServers] app1.mydomain.local app2.mydomain.local  [DBServers] db1.mydomain.local db2.mydomain.local

И теперь для установки обновлений только на контроллеры домена можно использовать playbook:

- hosts: DCs   tasks:   - name: Choose which Windows updates to install   win_updates:     category_names:       - SecurityUpdates       - CriticalUpdates       - UpdateRollups

Команда, которая проделает все эти операции, будет такой:

ansible-playbook -i inventory.yml -s windowsupdates.yml

Внимательный читатель может спросить про источник скачиваемых обновлений. Источник будет тот, что настроен на компьютере: будь то Windows Update в интернете или локальный WSUS. Даже если до настройки WSUS руки не дошли, можно дать команду на установку нужных срочных апдейтов, особенно если детальки Lego под ноги уже высыпались.

Остается добавить, что не обязательно использовать именно Ansible. Например, для системы управления конфигурациями Chef можно использовать Cookbook Wsus Client или более навороченный boxstarter. Аналогичные модули существуют и для Puppet. В общем-то практически любая система управления конфигурациями может что-то подобное, в том числе и MS SCCM.

Напоследок приведу еще несколько заинтересовавших меня инструментов.

WSUS offline. Программа, позволяющая скачать необходимые обновления одним пакетом, при необходимости можно запаковать в ISO. Также можно положить пакет в сетевую папку и устанавливать обновления скриптами, без развертывания полноценного WSUS.

Patch Management от Comodo. Система установки обновлений для Windows и другого ПО. В отличие от других решений — бесплатна.

Интерфейс Comodo Patch Management.

Opsi. Бесплатная, интересная система, поддерживающая установку не только обновлений, но и операционных систем, заодно с инвентаризацией.

BatchPatch. Единственная из платных систем, попавшая в список. Позволяет устанавливать ПО, обновлять его, как и Windows, и многое другое. Отличается олдскульным дизайном, а также стоимостью не за количество обслуживаемых хостов, а за пользователей программы, т.е администраторов. Пожалуй, это одно из немногочисленных решений, позиционирующих себя как аналог WSUS. Цена начинается от $400.

Интерфейс BatchPatch.

В комментариях добавляйте свои любимые инструменты для работы с обновлениями и не только.

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

Архитектура решения

Имеется центральный офис и несколько территориально распределенных площадок связанных между собой виртуальными частными каналами (VPN). Site A является центральным сайтом, который осуществляет загрузку обновлений и раздачу подчиненным сайтам (Site B, Site C). Подчиненные сервера отправляют на центральный сайт всю информацию о состоянии своих клиентов. В качестве сервера базы данных будем использовать выделенный сервер MS SQL сервер.

Shema-pervichnogo-i-vtorichnogo-wsus-servera.png

Реализация

На территории центрального офиса развернем Windows Server 2012 R2 с ролью служба Windows Server Update Service (WSUS), для этого в диспетчере серверов необходимо выбрать установку роли и компоненты.

Windows-server-2012-R2-dobavit-roli-i-komponenty.png

Тип установки: установка ролей или компонентов.

Windows-server-2012-R2-ustanovka-rolej-i-komponentov.png

Выберем локальный сервер, на котором разворачиваем роль WSUS сервера.

Windows-server-2012-R2-vybor-servera.png

Установим галку напротив службы Windows Server Update Service.

Windows-server-2012-R2-sluzhba-Windows-Server-Update-Service.png

Добавим необходимые компоненты.

Windows-server-2012-R2-dobavit-komponent.png

Нажимаем Далее.

Windows-server-2012-R2-roli-servera.png

На этапе выбор компонентов необходимо отказаться от установки внутренней базы данных Windows.

Windows-server-2012-R2-vnutrennya-baza-dannyh-Windows.png

Удалим компоненты.

Windows-server-2012-R2-udalit-vnutrennyuyu-bazu-dannyh-Windows-.png

На скриншоте ниже, мы видим, что компонент внутренняя база данных Windows не будет установлена. Нажимаем Далее.

Windows-server-2012-R2-ustanovka-wsus.png

На экране службы ролей предлагается на выбор две базы данных. Одна из них WID Database и База данных. WID Database не что иное, как Windows Internal Database — один из вариантов SQL Server Express 2005, входящий в состав Windows Server 2008, а также поставляемый с некоторыми другими бесплатными продуктами Microsoft. Так как мы, согласно нашей архитектуре, планируем использовать внешнюю базу выберем База данных.

Windows-server-2012-R2-baza-dannyh-wsus.png

Укажем путь к папке в которой будем хранить скаченные обновления и патчи.

Windows-server-2012-R2-hranilishhe-obnovlenij.png

На этапе экземпляр БД укажем адрес SQL сервера и нажмем клавишу проверка подключения.

Windows-server-2012-R2-vneshnij-sql-server.png

Если проверка завершится удачно, о чем будет свидетельствовать сообщение Подключение к серверу успешно выполнено, вы сможете продолжить Далее.

Windows-server-2012-R2-proverka-podklyucheniya-sql.png

Дополнительных настроек или установки компонентов служба ролей Веб-сервер не требует, поэтому просто нажмем Далее.

Windows-server-2012-R2-iis.png

Насладимся процессом установки……

Windows-server-2012-R2-protsess-ustanovki-wsus.png

После чего нажмем кнопку Закрыть.

Windows-server-2012-R2-ustanovka-zavershena.png

И перейдем к настройке первичного сервера обновлений.  Для этого откроем средства, и из выпадающего списка выберем служба Windows Server Update Service.

Windows-server-2012-R2-zapusk-posleustanovochnyh-zadach.png

Для завершения установки необходимо указать экземпляр базы данных и путь к каталогу обновлений.

После завершения послеустановочных задач откроется мастер настройки Windows Server Update Services. Подробный процесс настройки описан в статье, нас же интересует настройка подчиненных серверов.

Настройка подчиненного сервера

Для подключения подчиненного сервера wsus к первичному серверу, необходимо запустить мастер настройки сервера и в мастере, в разделе выбор вышестоящего сервера указать имя главного сервера. Согласно рекомендации Microsoft указать использовать SSL при синхронизации и отметить что данный сервер является репликой.

Windows-Server-Update-Services-podchinennyj-server.png

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

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

Windows-Server-2012-R2-podchinennyj-server.png

Итог

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

Используемые источники:

  • https://winitpro.ru/index.php/2013/04/11/ustanovka-wsus-na-windows-server-2012/
  • https://habr.com/post/414751/
  • https://blog.eaglenn.ru/razvorachivaem-server-obnovlenij-wsus-v-bolshoj-kompanii/

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации