+7 (812) 325 84 00

+7 (499) 322 07 96

Распространение клиентов Symantec Endpoint Protection 12.1 с помощью групповых политик Active Directory

Во время одного внедрения антивирусного решения Symantec Endpoint Protection 12.1 в достаточно крупной сети (порядка 1000 клиентов под разными версиями ОС Windows, один сервер SEP Manager), потребовалось организовать автоматизированное развертывание клиентов SEP.

Symantec Endpoint Protection, в общем, не предоставляет для этого собственных средств. Консоль SEPM имеет исчерпывающий функционал по генерации пакетов развертывания, и интерактивный интерфейс для push-инсталляции, предполагающий, что клиент доступен по сети в момент установки. В большой среде такое, фактически ручное, “проталкивание” клиента, конечно, неэффективно.  

Кроме того, по установленным регламентам, рабочие станции были достаточно строго закрыты брандмауэром Windows Firewall, что делало доступ к ним через сеть по протоколам RPC/SMB невозможным. Обычные методы удаленной инсталляции антивирусных клиентов с сервера (это справедливо не только для SEP, но и, скажем, для Trend Micro OfficeScan, Kaspersky Security, и т.д.) предполагают соблюдение, как минимум, следующих условий:

·   Доступность удаленного хоста по RPC/SMB, что, в случае брандмауэра Windows Firewall, означает включенные стандартные правила группы “Общий доступ к файлам и принтерам” для входящих подключений;
·   Доступность административного общего ресурса ADMIN$ на удаленном хосте;
·   Отключенный простой общий доступ к файлам (см. “How to disable simple file sharing and how to set permissions on a shared folder in Windows XP”, http://support.microsoft.com/kb/307874/en-us) на удаленном хосте;
·   Запущенную на удаленном хосте службу Remote Registry (в новых версиях ОС Windows по умолчанию отключена);
·   Начиная с ОС Windows Vista, некоторые специфические настройки UAC (см. “Description of User Account Control and remote restrictions in Windows Vista”, http://support.microsoft.com/kb/951016).

В контексте клиента SEP, требования подробно описаны вот здесь:
·   “Push install Symantec Endpoint Protection 12.1 clients using Remote Push”, http://www.symantec.com/business/support/index?page=content&id=tech164327;
·   “Preparing Windows and Mac computers for remote deployment”, http://www.symantec.com/business/support/index?page=content&id=HOWTO80805.

В данном случае условия частично не выполнялись. Полноценной системы управления конфигурациями (Microsoft SCCM, Symantec Altiris, и т.п.), как обычно, не было, поэтому решено было обойтись средствами AD. Решение описано ниже.

1.
Клиент SEP - стандартный для всех версий клиентских ОС Windows, но отдельный для разрядностей x86 и x64. Способа подготовить единый пакет для обеих разрядностей не существует, поэтому необходимы два пакета. Клиенты для ОС Windows можно найти в распакованном виде в структуре дистрибутива ПО Symantec Endpoint Protection. В моем примере (для билда RU3, дистрибутив скачан с Symantec FileConnect, распакован в папку C:\Distribs\SEP 12.3\unpack), они лежат в локальных папках:

C:\Distribs\SEP 12.3\unpack\Symantec_Endpoint_Protection_12.1.3_Part1_Installation_RU\SEP
и
C:\Distribs\SEP 12.3\unpack\Symantec_Endpoint_Protection_12.1.3_Part1_Installation_RU\SEPx64

для x86 и x64 соответственно.

Сначала необходимо создать административную установку клиентов x86 и x64 в сети на сетевом ресурсе (общей папке), доступной с клиентских рабочих станций. Папка и файловая система NTFS должны иметь разрешения, как минимум, Read для учетных записей компьютеров AD (обычно достаточно разрешения Read для группы Domain Computers на общем ресурсе). Это важно, так как пакет будет назначаться (assign) для учетной записи компьютера, что обеспечит и независимость от наличия пользовательских административных прав, и автоматическую установку при следующем старте системы.

Для того, чтобы подготовить административную установку пакета x86, необходимо из каталога C:\Distribs\SEP 12.3\unpack\Symantec_Endpoint_Protection_12.1.3_Part1_Installation_RU\SEP запустить msiexec /a Sep.msi. Откроется мастер установки, в котором нужно указать единственный параметр – целевой каталог в удаленном общем ресурсе. В моем примере создана структура типа \\SERVER1\SHARE1\SEPClient, и в нем папки x86 и x64 для двух разных пакетов. То есть, для пакета x86 целевым ресурсом будет \\SERVER1\SHARE1\SEPClient\x86.
Для пакета x64, аналогично, из каталога C:\ Distribs\ SEP 12.3\ unpack\ Symantec_ Endpoint_ Protection_12.1.3_ Part1_ Installation_ RU\ SEPx64 запустить команду msiexec / a Sepx64.msi, и указать целевой ресурс:
\\SERVER1\SHARE1\SEPClient\x64.

2.
Пакеты созданы, но пока “отвязаны” от сервера SEPM (так как взяты непосредственно из дистрибутива). Их надо “натравить” на наш конкретный сервер SEPM, иначе они поставятся как неуправляемые (unmanaged). Чтобы клиенты установились как управляемые (managed), нужно скопировать в пакеты конфигурационный файл SyLink.XML. Это файл привязки, он содержит ссылку на сервер управления SEPM и его цифровой сертификат SSL.

Мы предполагаем, что сервер SEPM уже развернут – а это значит, что образец такого файла есть в инсталляции серверной части. Идем в папку установки SEPM на сервере управления, нас интересует каталог % Program Files (x86)%\Symantec\Symantec Endpoint Protection Manager\ data\outbox\agent. В нем находится, как минимум, одна подпапка с именем _UID_, где UID - это уникальный идентификатор пакета, например, 8F171749C0A85C820163FBAA230DBF18 (реально для разных версий клиента папок будет несколько). Заходим в любую такую папку, и копируем из нее файл Sylink.XML (они одинаковые для всех UID-папок). Этот файл нужно положить в корни каталогов с сформированными намиранее административными установками клиента - то есть, в нашем примере, в папки \\SERVER1\SHARE1\SEPClient\x86 и\\SERVER1\SHARE1\SEPClient\x64.

Примечание. Инсталляционный пакет клиента также можно брать не из дистрибутива, а экспортировать из установленного SEPM стандартными средствами консоли SEP Manager. Здесь эта процедура не рассматривается. Она описана в ряде статей Symantec Support Knowledge Base, в частности, в статье “Creating custom client installation packages in the Symantec Endpoint Protection Manager console”, http://www.symantec.com/business/support/index?page=content&id=TECH102817. Для возможности установки клиента через групповые политики необходимо выбрать вариант экспорта в формате .MSI (а не .EXE) Экспорт пакетов также документирован в Symantec Endpoint Protection Administration Guide (для SEP 12.1 RU5, руководство лежит по ссылке http://www.symantec.com/business/support/index?page=content&id=DOC7698). Пакеты из SEPM можно экспортировать со списком включаемых компонент и c настройками (в частности, задавать целевую клиентскую группу, применяемые политики, и т.д.), и также распространять их средствами AD. Такой вариант может быть даже предпочтительным, так как дает гораздо больший контроль.

Мы же, в своем примере, генерируем “нулевой” пакет непосредственно из дистрибутива. Клиенты, поставленные таким образом (со стандартным файлом SyLink.XML), попадут в клиентскую группу по умолчанию, и к ним применится стандартный набор параметров.

3.
Дальнейшие шаги, в сущности, похожи для установки любого ПО, назначаемого через групповые политики. Необходимо создать два объекта GPO с помощью консоли Group Policy Management. Политик будут две – отдельно для x86 и x64 клиента. В нашем примере они называются так:
·   “Install SEP x86 Managed Client” – для 32-битного клиента;
·   “Install SEP x86 Managed Client” – для 64-битного клиента.

Обе политики назначаем на один и тот же целевой контейнер AD, в котором располагаются учетные записи компьютеров (предполагается, что там есть клиенты разной разрядности). В политику нужно включить следующие параметры:

· Сам пакет. Пакеты назначаются (тип Assigned) на контейнер Computer Configuration (не User Configuration), то есть, на раздел GPO Computer Configuration\Policies\Software Settings\Assigned Applications. Для 32-разрядной политики назначаем пакет \\SERVER1\SHARE1\SEPClient\x86\sep.msi, для 64-разрядной - пакет\\SERVER1\SHARE1\SEPClient\x64\sep64.msi. Настройки пакетов по умолчанию, файлы преобразований (transform) не используются;
· Параметр Computer Configuration\Policies\Administrative Templates\System/Logon\Always wait for the network at computer startup and logonВключить (задает синхронную установку); · Параметр Computer Configuration\Policies\Administrative Templates\Windows Components/Windows Installer\Always install with elevated privileges – Включить (установка выполняется с максимальными привилегиями).

Больше ничего в политиках конфигурировать не надо. Последние два параметра в отчете GPMC выглядят вот так:



4.
Далее, пакеты необходимо таргетировать на системы соответствующей разрядности. Для этого проще всего воспользоваться WMI-фильтрами. Пример рабочего решения - http://serverfault.com/questions/18670/group-policy-preferences-that-only-target-32bit-or-64bit-os. Фильтры нужно создать с помощью консоли Group Policy Management, в моем примере они называются “x86 System” и “x64 System”. Фильтр “x86 System”.

Фильтр “x86 System”:


Фильтр “x64 System”:


Теперь назначаем фильтры на политики с помощью GPMC:
· Политика “Install SEP x86 Managed Client” – WMI-фильтр “x86 System”;
· Политика “Install SEP x64 Managed Client” – WMI-фильтр “x64 System”.

5.
Групповая политика установки SEP-клиента применится при следующей перезагрузке целевой рабочей станции. Дабы избежать лага в производительности сети и файл-сервера, на котором размещены установочные пакеты, крайне рекомендуется создать специальную группу безопасности в AD, и включать в нее целевые учетные записи компьютеров поэтапно (например, пачками по 50 штук за раз), и использовать для созданных групповых политик фильтрацию по ACE “Apply Group Policy” (опция Security Filtering консоли GPMC) для этой группы. Таким образом можно контролировать развертывание на вполне приемлемом уровне.

ЗАМЕЧАНИЯ.
·       Решение не заменит полноценную систему управления конфигурациями, даже для установки ПО. Однако, при ее отсутствии, этим способом можно выполнять достаточно масштабные развертывания;
·       Установка синхронная, до ее завершения пользователь лишен возможности войти в систему. Поэтому перед роллапом людей надо предупреждать;
·       Подобная методика может, в принципе, быть использована для распространения не только клиента SEP, но и для любых других, не очень больших по размеру, пакетов .MSI;
·       После начального развертывания SEP клиентов, подключенных к серверу SEPM, в дальнейшем для апгрейда на более новые  версии (скажем, с 12.1 RU3 до 12.1 RU5), групповые политики использовать необходимости уже нет. Можно вместо этого задействовать возможности SEP Manager для автоматического развертывания обновленной версии клиента поверх установленной старой. Для обновления это работает.
Фото:
Антон Миносьян
21-04-2015 23:59:47
ДОПОЛНЕНИЕ (комментарий).
Решил написать этот комментарий к первоначальному посту, так как в реальных условиях пришлось столкнуться с "зоопарком” стороннего антивирусного ПО, что при начальном внедрении централизованной КСАВЗ не редкость.
SEP, как и большинство корпоративных антивирусных продуктов, имеет возможности выноса сторонних антивирусных модулей. Активизируется он путем создания кастомного набора настроек установки средствами SEP Manager, флажком “Автоматически удалить существующее программное обеспечение безопасности”, вот так:



Также, настройка параметров установки позволяет кастомизировать процесс инсталляции клиента (в частности, поведение при необходимости перезагрузки системы), и т.д. Привязать кастомные настройки установки к пакету можно, экспортировав его явно из консоли SEPM. В этом случае весь пакет, включая и параметры связи с сервером, и клиентские политики, и настройки установки, структурируются вместе, и для установки (возможно, в полностью “тихом” режиме), нужно просто запустить setup.exe в каталоге пакета. То есть, вместо самостоятельного создания пакета (пункты 1 и 2), мы просто выполняем экспорт средствами консоли SEP Manager:



Включенный флажок “Создать для пакета отдельный файл . EXE” позволяет инкапсулировать весь пакет в один исполняемый EXE-модуль. Если его не ставить, создается MSI с рядом дополнительных файлов (в частности, кастомный Sylink. xml). А папка AppRemover как раз содержит модуль удаления стороннего ПО. Подробности см. в статье “Creating custom client installation packages in the Symantec Endpoint Protection Manager console”, которая уже упоминалась.

Теперь пакеты нужно установить через GPO. Однако, опытным путем выявлено, что при установке через MSI (то есть политики Application Installation объекта GPO) удаления стороннего антивирусного ПО не происходит. Сообщество с этим сталкивалось, соответствующие посты есть на форумах Symantec Connect.

Поэтому, используем не назначение пакета MSI, а простой startup-скрипт системы для CMD.EXE, который из удаленного каталога запускает setup. exe с ключом / s, в этом случае все параметры применяются корректно. Можем использовать те же объекты GPO, которые у нас уже есть для x86 и x64 систем (с соответствующими WMI-фильтрами). Скрипт назначаем через Computer Configuration\Policies\Windows Settings\Scripts (Startup/Shutdown)\Startup, вкладка Scripts.

Дополнительно выставляем параметр асинхронного исполнения Startup-скриптов, дабы пользователь не ждал, пока скрипт полностью завершит работу, до нажатия Ctrl- Alt- Del.
Путь параметра - Computer Configuration\ Policies\Administrative Templates\System\Scripts\Run Startup Scripts Asynchronously, значение Enabled.

Скрипты для установки клиента (пути к дистрибутивам - из моего примера, в реальности они могут быть другими):

1. Скрипт InstallSEPx86.CMD (таргетируется для 32-разрядных систем).
@echo off
ping.exe -n 200 localhost > nul
SET CCSVCHST="%ProgramFiles%\Symantec\Symantec Endpoint Protection\12.1.3001.165.105\Bin\ccSvcHst.exe"
if  exist % CCSVCHST% goto : eof
msg * "На компьютер устанавливается антивирусный клиент. По завершении в течении 20-30 минут будет выдано приглашение о перезагрузке. Сохраните данные!!!"
call "\\SERVER1\SHARE1\SEPClient\x86_Custom\My Company_Default Group_WIN32BIT\Symantec Endpoint Protection версии 12.1.3001.165 - Русский\Setup.exe" /s

2. Скрипт InstallSEPx64. CMD (таргетируется для 64-разрядных систем).
@echo off
ping.exe -n 200 localhost > nul
SET CCSVCHST="%ProgramFiles(x86)%\Symantec\Symantec Endpoint Protection\12.1.3001.165.105\Bin\ccSvcHst.exe"
if  exist % CCSVCHST% goto : eof
msg * "На компьютер устанавливается антивирусный клиент. По завершении в течении 20-30 минут будет выдано приглашение о перезагрузке. Сохраните данные!!!"
call " \\SERVER1\SHARE1\SEPClient \x64_Custom\My Company_Default Group_WIN64BIT\Symantec Endpoint Protection версии 12.1.3001.165 - Русский\Setup.exe" /s


Несколько замечаний:
- Проверка установки клиента выполняется путем поиска основного исполняемого модуля (ccSvcHst. exe), путь зависит как от разрядности, так и от версии SEP. В нашем случае распространялся клиент SEP 12.1 RU3, поэтому относительный путь установки клиента в основном каталоге Program Files -Symantec\Symantec Endpoint Protection\12.1.3001.165.105. Для другой версии клиента он будет другим. В любом случае, практика показывает, что для установки клиента SEP такого варианта проверки вполне достаточно, это работает хорошо;
- Команда msg * выдает на рабочую станцию дополнительное модальное окно с предупреждением, дабы конечные пользователи лишний раз не пугались;
- Скрипты должны быть сформированы в кодировке MS-DOS, а не ANSI, так как командный интерпретатор – сmd.exe.

Пакет, после применения групповой политики, ставится при следующей перезагрузке целевой системы.