symantec antivirus deployment considerations for...

19
Recommended Solutions for Installing Symantec Endpoint Protection 12.1.x in Shared and PvD Virtual Machines Applicability When Symantec Endpoint Protection (SEP) 12.1.x is installed in a virtual machine (VM) using a Citrix’s Synchronizer with a version older than version 5.5 and subsequently deployed to endusers, the resulting VM in the enduser’s machine may show the network as disabled and/or Symantec’s console may report several problems. The images below illustrate how Windows depicts a disabled network and how the Symantec console may report issues with its services. These problems can be fixed by following the directions provided in this guide. The sample code and OS Profile provided in the appendices are included in Synchronizer version 5.5 and newer and thus, you will not need to create or import them into the Synchronizer. You will, however, still need to make sure they are used as described here for proper deployment of SEP. Summary This section explains the technical reasons why SEP was previously failing in deployed Synchronizer VMs. You may choose to skip it and proceed to the deployment sections that follow. To prepare a VM for a virtualized environment, Symantec describes a process to remove all unique identifiers from the golden image prior to deployment (see Symantec’s Tech Note 54706 “How to prepare a Symantec Endpoint Protection 12.1.x client for cloning”). The note describes how to remove the Windows registry entries and a file where these unique identifiers are kept. Part of Symantec’s

Upload: vobao

Post on 31-Mar-2018

232 views

Category:

Documents


1 download

TRANSCRIPT

Recommended  Solutions  for  Installing  Symantec  Endpoint  Protection  12.1.x  in  Shared  and  PvD  Virtual  Machines  

Applicability  When  Symantec  Endpoint  Protection  (SEP)  12.1.x  is  installed  in  a  virtual  machine  (VM)  using  a  Citrix’s  Synchronizer  with  a  version  older  than  version  5.5  and  subsequently  deployed  to  end-­‐users,  the  resulting  VM  in  the  end-­‐user’s  machine  may  show  the  network  as  disabled  and/or  Symantec’s  console  may  report  several  problems.    

The  images  below  illustrate  how  Windows  depicts  a  disabled  network  and  how  the  Symantec  console  may  report  issues  with  its  services.  

 

 

These  problems  can  be  fixed  by  following  the  directions  provided  in  this  guide.    The  sample  code  and  OS  Profile  provided  in  the  appendices  are  included  in  Synchronizer  version  5.5  and  newer  and  thus,  you  will  not  need  to  create  or  import  them  into  the  Synchronizer.    You  will,  however,  still  need  to  make  sure  they  are  used  as  described  here  for  proper  deployment  of  SEP.  

Summary  This  section  explains  the  technical  reasons  why  SEP  was  previously  failing  in  deployed  Synchronizer  VMs.      You  may  choose  to  skip  it  and  proceed  to  the  deployment  sections  that  follow.  

To  prepare  a  VM  for  a  virtualized  environment,  Symantec  describes  a  process  to  remove  all  unique  identifiers  from  the  golden  image  prior  to  deployment  (see  Symantec’s  Tech  Note  54706  “How  to  prepare  a  Symantec  Endpoint  Protection  12.1.x  client  for  cloning”).    The  note  describes  how  to  remove  the  Windows  registry  entries  and  a  file  where  these  unique  identifiers  are  kept.      Part  of  Symantec’s  

protection  against  attacks  on  its  services  is  to  protect  changes  to  its  files  and  registry  keys.      This  security  feature  is  called  Tamper  Protection  and  it  must  be  disabled  prior  to  making  these  changes,  as  specified  in  Symantec  Tech  Note  192023 “How  to  disable  Tamper  Protection  in  Symantec  Endpoint  Protection  12.1”.    If  this  step  is  not  performed,  you  won’t  be  able  to  remove  the  registry  entries  and  file.    After  these  changes  are  made  and  after  the  first  boot  of  that  “clean”  image,  a  Symantec  service  will  generate  a  new  unique  ID  and  register  with  the  Symantec  Management  server.      

During  the  process  of  preparing  a  VM  for  deployment,  Synchronizer  will  boot  the  VM  one  time  to  install  its  services.    The  need  to  boot  the  VM  after  it  has  been  “cleaned”  causes  the  Symantec  service  to  generate  a  unique  ID,  as  described  above,  and  thus,  the  golden  image  is  imprinted  with  a  unique  identifier,  which,  if  it  were  to  be  deployed,  would  cause  all  endpoints  to  register  with  the  same  ID  in  the  Symantec  Manager.      To  get  around  this  problem,  Synchronizer  documents  how  to  modify  the  VM  publish  process  to  properly  remove  the  unique  identifiers  after  the  publish  process  finishes.          

This  extension  to  the  publishing  process  requires  manual  intervention  by  an  administrator  prior  to  publishing  the  VM.    The  administrator  must  copy  the  file  “publishExtend-­‐SEP.cmd”  from  Synchronizer’s  configuration  directory  (typically  C:\Program  Files\Citrix\Synchronizer\conf\scripts)  to  the  VM’s  C:\  drive  and  rename  that  file  “publishExtend.cmd”.    This  needs  to  be  done  only  once  for  each  VM  that  has  Symantec  installed.    The  purpose  of  this  file  (refer  to  Appendix  A  for  an  example  of  its  contents)  is  to  remove  the  Symantec  registry  entries  and  file  which  contain  the  unique  Symantec  identifiers.    PublishExtend.cmd  will  fail  to  execute  properly  if  Tamper  Protection  is  enabled,  and  for  this  reason,  Synchronizer  must  first  disable  all  Symantec  services.    This  is  done  by  another  file  in  Synchronizer’s  configuration  directory  called  “disableServicesXXX.txt”  where  XXX  is  the  OS  type  (XP,  VISTA,  WIN7,  WIN8,  etc.).    See  Appendix  B  for  a  portion  of  its  contents.  

When  the  VM  is  finally  deployed  to  an  endpoint,  Citrix  software  in  the  endpoint  will  ensure  the  same  services  that  were  disabled  by  “disableServicesXXX.txt”  are  re-­‐enabled.    For  PvD  VMs,  which  virtualize  the  file  system  and  Windows’  registry  access,  the  re-­‐enablement  of  the  Symantec  SEP  services  happens  in  the  virtual  registry,  which  is  not  accessible  at  the  time  Symantec  services  are  initiated.    The  end  result  is  that  Symantec  services  are  not  fully  re-­‐enabled.  In  this  state,  Symantec  automatically  shuts  down  the  network  and  reports  problems  with  services  that  could  not  be  started.  

For  Shared  VMs,  the  process  of  preparing  a  VM  in  the  client  requires  that  the  C:\ProgramData  directory  be  moved  to  the  user  drive  (U:).    Citrix  then  installs  a  shortcut  or  link  from  C:\ProgramData  to  the  new  location.      SEP  12.1.x  keeps  some  of  its  critical  data  and  services  under  C:\ProgramData  and  this  re-­‐direction  to  another  drive  causes  SEP  to  refuse  to  start  those  services.  

Recommended  Solution  To  resolve  the  issues  described  in  the  previous  sections,  Citrix  recommends  that  you  perform  the  following  steps  when  publishing  a  PvD  and  Shared  VM.    The  goal  is  to  have  the  Synchronizer  “golden”  VMs  placed  in  an  SEP  group  which  has  Tamper  Protection  disabled,  thus  allowing  modification  of  the  critical  SEP  files  and  registry  entries  needed  to  create  a  “clean”  image.    Then  when  those  golden  VMs  are  deployed  to  an  end-­‐user,  they  are  automatically  placed  in  another  SEP  group  with  Tamper  Protection  enabled.  

NOTE:    This  solution  only  works  with  PvD  and  Shared  VMs  with  snapback  enabled.    Custom  and  Shared  VMs  with  snapback  disabled  are  not  supported.  

Create  Symantec  Client  Group  and  Install  Packages  for  Synchronizer  VMs  (Golden  VMs  created  on  Synchronizer)  This  step  creates  an  SEP  group  with  Tamper  Protection  disabled  which  will  be  used  exclusively  by  the  Synchronizer  VMs.    It  also  shows  how  to  create  the  installation  package  that  will  be  installed  in  those  VMs.  

To  perform  this  step:  

1. Login  to  Symantec  Endpoint  Protection  Manager,  Click  the  Clients  tab  and  Create  a  group  called  “Synchronizer  VM  Group”:  

 

2. Disable  “Tamper  Protection“  for  “Synchronizer  VM  Group”  group  by  following  these  steps:  

a. Select   “Synchronizer   VM   Group”   group,   Click   on   “Policies”   on   the   Main   Panel   and  disable  Inherit  policies  and  settings  from  parent  group  “My  Company”  (if  enabled)  

b. Click  on  “General  Settings”  link.  c. Select  the  “Tamper  Protection”  tab  and  do  the  following:  

i. Set  “Log  Only”  for  “Action  to  take  if  application  attempt  to  tamper  with  or  shutdown  Symantec  security  software”  

ii. Disable  “Protect  Symantec  security  software  from  being  tampered  with  or  shutdown”.  

iii. Click  OK.  

 

3. Click  Admin  Panel  >  Install  Packages  >  Select  Client  Install  Packages.  4. Select  the  required  package  (SEP  WIN32Bit  /  SEP  WIN64BIT)  from  the  Main  Panel  and  Export  the  

Package  by  checking  the  group  called  “Synchronizer  VM  Group”.  

 

Create  Symantec  PvD/Shared  Group  for  Client  PvD/Shared  VMs  and  Export  SyLink.xml  file  for  Deployment  This  step  creates  an  SEP  group  with  Tamper  Protection  enabled  which  will  be  used  to  provide  the  profile  rules  for  end-­‐user  PvD  VMs.    It  also  shows  how  to  export  this  group’s  configuration  file  for  use  during  the  Synchronizer  publishing  step.        

Note:   The  same  steps  can  be  followed  to  create  group  for  Shared  VMs.  

1. Login  to  Symantec  Endpoint  Protection  Manager,  Click  on  Clients  tab  and  Create  a  group  called  “PvD  VM  Group”.  

 

2. Right-­‐click  the  group  “PvD  VM  Group”,  select  “Export  Communications  Settings”  and  save  the  file  with  default  settings;  rename  the  file  “Sylink.xml”.  Make  sure  Tamper  Protection  is  enabled  for  the  PvD  VM  Group  before  exporting  the  SyLink.xml  file.  

 

Create/Publish  the  Golden  VM  for  Deployment  Perform  these  steps  to  create  and  publish  the  golden  VM  for  deployment:  

1. Install  the  exported  Symantec  AV  package    which  was  described  in  the  section  Create  Symantec  Client  Group  and  Install  Packages  for  Synchronizer  VMs    on  the  newly  created  golden  VM  (PvD  VM  created  on  Synchronizer)  with  all  the  necessary  Window  and  SEP  updates;  you  may  need  to  reboot  the  VM.  

2. Verify  that  Tamper  Protection  is  Disabled;  in  the  golden  VM  on  synchronizer,  open  the  Symantec  console  and  select  the  “Change  Settings”,  click  Configure  Settings  to  the  right  of  the  “Client  Management”  option.  Consider  the  following:  

a. “Protect  Symantec  security  software  from  being  tampered  with  or  shutdown”  should  be  disabled.  

b. The  “Action  to  take  if  application  attempt  to  tamper  with  or  shutdown  Symantec  security  software”  option  should  be  set  to  “Log  Only”.  Refer  to  Symantec  Tech  Note  192023  for  more  information.  

3. Create  a  backup  copy  of  “disableServicesXXX.txt”  in  the  Synchronizer  configuration  directory  (typically  C:\Program  Files\Citrix\Synchronizer\conf).  XXX  represents  the  OS  type  (XP,  VISTA,  WIN7,  WIN8,  etc.)  of  the  VM  to  be  published.  

4. In  Synchronizer  versions  older  than  5.5,  please  edit  “disableServicesXXX.txt”  in  the  Synchronizer  configuration  directory  and  remove  all  entries  that  deal  with  Symantec  services  except  the  entries  “SmcService”  and  “SepMasterService”.    These  entries  are  the  ones  listed  Appendix  B.  

5. Boot  the  golden  VM  you  want  to  deploy  and  do  the  following:  a. Copy  the  scripts  “publishExtend-­‐SEP.cmd“  and  “publishExtend.cmd”  found  in  the  

Synchronizer’s  “C:\Program  Files\Citrix\Synchronizer\conf\scripts”  directory  to  "C:\"  of  the  VM  to  be  published.  In  Synchronizer  5.5  and  earlier,  these  scripts  do  not  exist.    Copy  the  contents  of  Appendix  C    to  the  respective  files.    Make  sure  that  long  lines,  such  as  the  registry  key  name,  are  not  entered  as  two  separate  lines  but  rather  one  long  line.  

b. Copy  “Sylink.xml”  (described  in  the  previous  section)  to  the  C:\  drive.  6. Shutdown  the  VM  and  publish  the  VM  using  Synchronizer.  7. Assign  the  VM  to  different  endpoints.  Boot  those  client  VMs  and  verify  that  Symantec  now  

works,  and  access  to  the  network  has  been  restored.  

Important  Information  about  Publishing  

Starting  the  published  VM  (golden  VM  on  Synchronizer)  may  result  in  invalid  offline  clients  (duplicate  entries)  being  left  in  the  client  view  in  Symantec  Endpoint  Protection  Manager.  This  could  affect  licensing  and  reporting.  This  issue  is  specific  to  running  Synchronizer  on  Windows  Server  2012  R2  and  it  has  been  resolved  in  Synchronizer  version  5.1.4.  Earlier  versions  should  follow  use  the  steps  described  below.  

There  are  two  options  for  removing  duplicate  clients:  

• Let  the  duplicate  client’s  time  out  according  to  the  Symantec  Endpoint  Protection  Manager  site's  aging  criteria.  This  is  30  days  by  default.  

• Manually  delete  the  offline  clients  from  the  client  view  page  (as  illustrated  below):  

 

Once  you  update  the  downloaded  VM  to  the  next  higher  version  (PvD  VM  downloaded  to  client  machines),  the  result  may  be  invalid  offline  clients  (duplicates)  being  left  in  the  client  view  in  Symantec  Protection  Manager.  This  could  affect  licensing  and  reporting.  This  issue  is  has  been  resolved  in  Synchronizer  version  5.1.4.  Earlier  versions  should  use  the  steps  described  below.      

 There  are  two  options  for  removing  the  clients:  

• Let  the  duplicate  client’s  time  out  according  to  the  Symantec  Endpoint  Protection  Manager  site's  aging  criteria.  This  is  30  days  by  default.  

• Manually  delete  the  offline  clients  from  the  client  view  page  (as  illustrated  below).  

 

Create  and  Apply  an  OS  Profile  to  Preserve  SEP  Files  and  Registry  Keys  When  a  new  VM  is  published,  specific  SEP  keys  must  be  re-­‐applied  at  the  client  to  the  new  VM  version  in  order  for  the  SEP  Manager  to  continue  identifying  it  as  the  same  SEP  client.    This  is  done  via  an  OS  Profile  rule  that  tells  the  clients  to  save  and  restore  these  keys.    In  Synchronizer  versions  older  than  5.5,  this  profile  must  be  created  by  the  administrator  and  imported  into  the  Synchronizer.    In  Synchronizer  version  5.5  and  newer,  this  policy  is  automatically  imported  and  available  under  the  “Definitions”  folder  as  “Symantec  Endpoint  Protection”.  

To  create  an  OS  profile:  

1. In  Synchronizer,  copy  the  contents  of  Appendix  D  into  an  editor  and  save  the  file  with  an  XML  extension  (for  example,  Symantec-­‐OS-­‐Profile.xml).      Make  sure  that  long  lines,  such  as  the  registry  key  name,  are  not  entered  as  two  separate  lines  but  rather  one  long  line.  

2. Import  the  OS  profile  by  navigating  to  the  “Polices”  folder  -­‐>  Virtual  Machines  -­‐>  OS  Profiles  -­‐  >  PVD  -­‐>  Definitions.    The  “OS  Profile  Definition  Actions”  panel  will  be  displayed  on  the  right;  in  this  area,  there  will  be  an  “Import”  button.    Click  it  to  display  a  file  browser  in  which  you  can  specify  the  location  and  file  name  of  the  OS  Profile  you  created  above.      Click  Finish  to  complete  the  operation.  

 

 

 

3. After  importing  the  OS  Profile,  it  appears  in  the  Synchronizer  UI  labeled  “Symantec  Endpoint  Protection”.  Click  the  policy  name  to  display  its  contents  which  consists  of  an  SEP  Registry  keys  and/or  Files,  as  illustrated  below:  

 

4. After  importing  the  OS  Profile,  you  can  create  a  policy  that  can  be  assigned  to  a  VM.    To  create  a  policy  for  a  PvD  VM,  start  by  navigating  to  “Policies”  -­‐>  “Virtual  Machine”  -­‐>  “OS  Profile”  -­‐>  “PVD”.    On  the  right  pane,  you  will  see  the  “Policy  Actions”  and  a  “Create”  button;  click  Create  to  display  a  popup  menu:  

 

5. In  the  Create  popup  menu,  select  OS  Profile  (PVD).  The  Create  OS  Profile  (PVD)  Policy  screen  appears.  

6. In  the  Create  OS  Profile  (PVD)  Policy  screen,  enter  a  name  for  the  policy  (i.e.,  Symantec  Endpoint  Protection  12.0),  specify  a  description,  and  click  Next:  

 

7. Select  the  Symantec  Endpoint  Protection  policy  and  assign  it  using  the  checkbox.  Click  Finish.  The  new  profile  is  ready  to  be  assigned  to  a  PvD  VM.        

8. For  Shared  VMs,  repeat  the  above  steps  but  select  the  “Shared  and  Custom”  Folder  under  “OS  Profile.”  

 

9. In  the  Virtual  Machines  section  of  Synchronizer,  select  the  VM  that  will  receive  the  new  policy.  Select  the  Policies  tab;  in  the  OS  Profile  field,  select  SEP  12.0  from  the  drop-­‐down  menu.  Click  Save  in  the  upper  right  portion  of  the  interface  to  apply  the  change.  

 

10. Assign  the  VM  to  a  user;  the  SEP  client  ID  will  now  be  preserved  if  that  VM  is  restored  from  backups  or  re-­‐provisioned  to  another  computer;  note  that  in  order  to  preserve  the  SEP  client  ID,  the  IT  administrator  must  allow  user  backups  to  take  place  and  at  least  one  backup  should  have  taken  place  before  the  VM  is  restored  or  migrated  to  a  different  computer.  Otherwise,  the  SEP  client  will  be  lost  and  a  new  one  created  upon  re-­‐provisioning  of  the  VM.  

   

Appendix  A  This  appendix  provides  the  contents  of  an  existing  publishExtend-­‐SEP.cmd.    

 

   

REM --- Remove the unique hardware identifier so that it will be re-generated at the client. reg query "HKLM\SOFTWARE\Symantec\Symantec Endpoint Protection\SMC\SYLINK\SyLink" /v HardwareID /reg:64 reg delete "HKLM\SOFTWARE\Symantec\Symantec Endpoint Protection\SMC\SYLINK\SyLink" /v HardwareID /f /reg:64 REM --- SEP 12 del /f /q "C:\ProgramData\Symantec\Symantec Endpoint Protection\PersistedData\sephwid.xml" REM --- SEP 11 del /f /q "C:\Program Files\Common Files\Symantec Shared\HWID\sephwid.xml" REM --- The SONAR Proactive Threat Detection driver is placed under ProgramData. This is not on a boot REM --- drive and is not accessible at driver load time. We must locate and move the driver sys file REM --- and update the registry with the new location. This workaround only works for shared VMs that REM --- snapback as SEP will revert the driver location to its original value. SET BHDRV=BHDrvx86 if "%PROCESSOR_ARCHITECTURE%" == "AMD64" ( SET BHDRV=BHDrvx64 ) SET BHDRV=BHDrvx64 SET BHDRV_REG_SVC_KEY=HKLM\SYSTEM\CurrentControlSet\services\%BHDRV% reg query "%BHDRV_REG_SVC_KEY%" /v ImagePath /reg:64 > %TMP%\bhd1.txt if not %ERRORLEVEL% == 0 ( REM -- clear non-zero ERRORLEVEL cmd /c "exit /b 0" GOTO DONE ) type %TMP%\bhd1.txt | find /i "REG_EXPAND_SZ" > %TMP%\bhd2.txt FOR /F "tokens=3*" %%G IN ('type %TMP%\bhd2.txt') DO SET IMAGE_PATH=%%G %%H REM --- remove \??\ from beginning of path SET BHDRV_IMAGE_PATH=%IMAGE_PATH:~4% del %TMP%\bhd1.txt del %TMP%\bhd2.txt copy "%BHDRV_IMAGE_PATH%" C:\Windows\System32\drivers\ reg add "%BHDRV_REG_SVC_KEY%" /v ImagePath /t REG_EXPAND_SZ /d "\??\C:\Windows\System32\drivers\%BHDRV%.sys" /f :DONE

Appendix  B  Partial  contents  of  existing  disableServicesWIN7.txt:  

 

Services  that  must  remain  disabled.  Note  all  other  services  were  removed  from  this  list.  

 

 

   

; -- Symantec Endpoint Protection ccEvtMgr ccSetMgr SmcService SNAC Symantec AntiVirus ; -- Symantec Endpoint Protection 11 EraserUtilDrvI9 LiveUpdate SRTSPL SymEvent ; -- Symantec Endpoint Protection 12 SepMasterService SRTSP SRTSPX SyDvCtrl SymDS SymEFA SymIRON SYMNETS BHDrvx64 BHDrvx86 eeCtrl EraserUtilRebootDrv IDSVia64 IDSVix86 NAVENG NAVEX15 SysPlant Teefer2

 

; -- Symantec Endpoint Protection SmcService SepMasterService

 

Appendix  C  This  appendix  displays  an  updated  publishExtend-­‐SEP.cmd:  

REM Sample publishExtend.cmd when using Symantec Endpoint Protection 12.1.x REM REM ------------------------------------------------------------------------------------------------------------- REM --- To use this: REM --- 1. Copy the script to root of "C:\" drive REM --- 2. Create C:\publishExtend.cmd script if it does not already exist REM --- 3. And add a call to this script in it (call C:\publishExtend-SEP.cmd) REM --- 4. Modify the variable CLIENT_GROUP_SYLINK_FILENAME to point to the REM --- communications settings file exported from the SEP Manager. REM --- 5. Make sure the OS Profile named Symantec Endpoint Protection in the REM ---- Synchronizer's "Definitions" folder is used in policy, and this REM --- policy is assigned to VMs in order to preserve unique SEP identifiers. REM --- 6. Publish the VM. REM ------------------------------------------------------------------------------------------------------------- REM --- Communications file exported from the SEP Manager. REM --- It specifies the group to which the end-user VM will belong to. REM --- An IT Administrator MUST provide this file in order for the publish to succeed set CLIENT_GROUP_SYLINK_FILENAME="C:\Sylink.xml" REM --- No user modifiable code below this line ----------------------------------------------------------------- REM --- Path of SEP communication settings file. set SYLINK_FILEPATH="C:\ProgramData\Symantec\Symantec Endpoint Protection\CurrentVersion\Data\Config\SyLink.xml" REM -- What is the processor arch? set PROC_ARCH=%PROCESSOR_ARCHITECTURE% if "%PROCESSOR_ARCHITEW6432%" == "AMD64" ( SET PROC_ARCH=AMD64 ) REM --- Remove the unique hardware identifier so that it will be re-generated at the client. call :reg_del_value "Symantec\Symantec Endpoint Protection\SMC\SYLINK\SyLink" "HardwareID" REM --- If there is an error deleting, abort. Tamper Protection may not be disabled. if ERRORLEVEL 1 exit /b 1 REM --- Remove the unique host identifier so that it will be re-generated at the client. call :reg_del_value "Symantec\Symantec Endpoint Protection\SMC\SYLINK\SyLink" "HostGUID" REM --- If there is an error deleting, abort. Tamper Protection may not be disabled. if ERRORLEVEL 1 exit /b 2 REM --- Delete all instances of sephwid.xml on file system. REM --- Possible locations (usually only in the PersistedData folder) del /f /q "C:\ProgramData\Symantec\Symantec Endpoint Protection\PersistedData\sephwid.xml" REM --- If there is an error deleting, abort. Tamper Protection may not be disabled. if ERRORLEVEL 1 exit /b 3 REM --- Remove communication settings file and replace with new one containing the REM --- SEP group to which the end-user VM will belong to. del /f /q %SYLINK_FILEPATH% REM --- If there is an error deleting, abort. Tamper Protection may not be disabled. if ERRORLEVEL 1 exit /b 4 copy %CLIENT_GROUP_SYLINK_FILENAME% %SYLINK_FILEPATH% REM --- If there is an error copying, then source file may not exist. if ERRORLEVEL 1 exit /b 5 del /f /q %CLIENT_GROUP_SYLINK_FILENAME% REM --- Turn ON SEP debugging (if needed) REM call :turn_sep_debug_on REM -- The code below applies only to Shared VMs if /I NOT "%DESKTOP_TYPE%" == "FCD_SHARED" ( exit /b 0 ) REM --- Remap drive letter for SEP services call :remap_sep_services if ERRORLEVEL 1 exit /b 6 REM --- We are done here. Script will return success. exit /b 0

Appendix  C  (continued)  

REM ---------------------------------------------------------------------------------------------------------------- REM --- Local Subroutine REM ---------------------------------------------------------------------------------------------------------------- REM ---------------------------------------------------------------------------------------------------------------- REM --- Function to Delete HardwareID and HostGUID registry values :reg_del_value set RegValue=%1 reg query "HKLM\SOFTWARE\%RegValue:~1,-1%" /v %2 /reg:64 if NOT ERRORLEVEL 1 ( reg delete "HKLM\SOFTWARE\%RegValue:~1,-1%" /v %2 /f /reg:64 if ERRORLEVEL 1 @exit /b 1 ) else ( REM --- From SEP 12.1 RU5 onwards HardwareID and HostGUID values on 64-bit systems have been moved to REM --- HKLM\SOFTWARE\Wow6432Node reg delete "HKLM\SOFTWARE\Wow6432Node\%RegValue:~1,-1%" /v %2 /f if ERRORLEVEL 1 @exit /b 1 ) @goto :eof REM ---------------------------------------------------------------------------------------------------------------- REM ---------------------------------------------------------------------------------------------------------------- :remap_sep_services REM ---------------------------------------------------------------------------------------------------------------- REM --- The SONAR Proactive Threat Detection driver is placed under ProgramData, which REM --- in a shared VM is redirected to the user disk via an NTFS Junction Point. REM --- SEP, however, does not work when its services are redirected in this manner. REM --- To get around it, we can modify the SEP Windows registries to point REM --- directly to the user disk. This workaround only works for shared VMs that REM --- snapback as SEP will revert the driver locations to its original value! REM --- Service names that are dependent on bitness type if "%PROC_ARCH%" == "x86" ( SET BHDRV=BHDrvx86 SET IDSVDRV=IDSVix86 ) else ( SET BHDRV=BHDrvx64 SET IDSVDRV=IDSVia64 ) REM --- Find CCSettings_{UUID} call :find_ccsettings_name if ERRORLEVEL 1 @exit /b 1 SETLOCAL EnableDelayedExpansion REM --- Change drive letter for BHDrv driver SET SEP_SERVICE_LIST[1]=%BHDRV%:ImagePath SET SEP_SERVICE_LIST[2]=%BHDRV%\Parameters:KCFile SET SEP_SERVICE_LIST[3]=%BHDRV%\Parameters:SettingsPath REM --- Change drive letter for CCSettings_{UUID} driver SET SEP_SERVICE_LIST[4]=%CCSETTINGS_SVC%\Parameters:WorkingDir REM --- Change drive letter for eeCtrl driver SET SEP_SERVICE_LIST[5]=eeCtrl\Parameters:LastUsedDefs SET SEP_SERVICE_LIST[6]=eeCtrl\Parameters:SPManifest REM --- Change drive letter for IDSV driver SET SEP_SERVICE_LIST[7]=%IDSVDRV%:ImagePath SET SEP_SERVICE_LIST[8]=%IDSVDRV%\Parameters:SettingsPath REM --- Change drive letter for NAVENG driver SET SEP_SERVICE_LIST[9]=NAVENG:ImagePath REM --- Change drive letter for NAVEX15 driver SET SEP_SERVICE_LIST[10]=NAVEX15:ImagePath REM --- Change drive letter for SRTSP driver SET SEP_SERVICE_LIST[11]=SRTSP\Parameters:QuarTmpPath SET SEP_SERVICE_LIST[12]=SRTSP\Parameters:SettingsPath REM --- Change drive letter for SymIRON driver SET SEP_SERVICE_LIST[13]=SymIRON\Parameters:WorkingDirectory REM --- Change drive letter for SYMNETS driver SET SEP_SERVICE_LIST[14]=SYMNETS\Parameters:SettingsPath REM --- Change drive letter for SysPlant driver SET SEP_SERVICE_LIST[15]=SysPlant:ConfigDatDir

 Appendix  C  (continued)  

REM --- Change drive letter for SymDS and SymEFA drivers - specific to 12.1 RU4 SET SEP_SERVICE_LIST[16]=SymDS\Parameters:TempDirectory SET SEP_SERVICE_LIST[17]=SymEFA\Parameters:SymVTDataLUFile REM --- Change drive letter for SymEFASI driver - specific to 12.1 RU5 and RU6 SET SEP_SERVICE_LIST[18]=SymEFASI\Parameters:SymVTDataLUFile SET SEP_SERVICE_LIST[19]=SymEFASI\Parameters:TempDirectory SET /a n=20 SET /a i=1 :loop if %i%==%n% GOTO end SET SERVICE_NAME_KEY=!SEP_SERVICE_LIST[%i%]! FOR /F "tokens=1,2 delims=:" %%G IN ("%SERVICE_NAME_KEY%") DO ( reg query "HKLM\SYSTEM\CurrentControlSet\services\%%G" /v "%%H" /reg:64 REM -- call change_drive_letter function only if registry key present if NOT ERRORLEVEL 1 ( call :change_drive_letter "HKLM\SYSTEM\CurrentControlSet\services\%%G" %%H if ERRORLEVEL 1 @exit /b 1 ) ) SET /a i=%i%+1 goto loop :end REM --- Remap drive letter for SEP ccSettings mount services call :remap_sep_ccSettings_mount_services if ERRORLEVEL 1 @exit /b 1 @goto :eof REM ----------------------------------------------------------------------------------------------------------------- REM ----------------------------------------------------------------------------------------------------------------- :change_drive_letter REM ----------------------------------------------------------------------------------------------------------------- REM --- Given an argument containing a path, replace its drive letter REM --- with the user disk drive letter. REM --- %1 the name of the registry key. REM --- %2 the name of the registry value REM --- This key must be there or otherwise SEP was not installed properly reg query "%1" /v "%2" /reg:64 > %TMP%\bhd1.txt if ERRORLEVEL 1 @exit /b 1 type %TMP%\bhd1.txt | find /i "%2" > %TMP%\bhd2.txt FOR /F "tokens=2" %%G IN ('type %TMP%\bhd2.txt') DO SET REG_VALUE_TYPE=%%G FOR /F "tokens=3*" %%G IN ('type %TMP%\bhd2.txt') DO SET IMAGE_PATH=%%G %%H REM --- Replace "C" or "\??\C" if /I "%IMAGE_PATH:~0,4%" == "\??\" ( SET IMAGE_PATH=\??\%USER_DRIVE_LETTER%%IMAGE_PATH:~5% ) else ( SET IMAGE_PATH=%USER_DRIVE_LETTER%%IMAGE_PATH:~1% ) REM --- If there is a trailing \, it needs to be escaped or the reg REM --- will interpret the quotes that follow as an escaped character and REM --- not the end of the string. if /I "%IMAGE_PATH:~-1%" == "\" ( SET IMAGE_PATH=%IMAGE_PATH%\ ) REM --- Update the key. reg add "%1" /v "%2" /t "%REG_VALUE_TYPE%" /d "%IMAGE_PATH%" /f if ERRORLEVEL 1 @exit /b 1 del %TMP%\bhd1.txt del %TMP%\bhd2.txt @goto :eof REM -----------------------------------------------------------------------------------------------------------------

 Appendix  C  (continued)  REM ---------------------------------------------------------------------------------------------------------------- :remap_sep_ccSettings_mount_services REM ---------------------------------------------------------------------------------------------------------------- REM --- Function replaces all occurrences of drive letter to user disk drive letter found under REM --- "HKLM\SYSTEM\CurrentControlSet\services\%CCSETTINGS_SVC%\Parameters\mount" sub registry keys. REM --- Each key occurrence under "ccSettings_{GUID}\Parameters\mount\" contains a single common registry REM --- string value called "FileName" set mount_reg_path="HKLM\SYSTEM\CurrentControlSet\services\%CCSETTINGS_SVC%\Parameters\mount" reg query %mount_reg_path% /f "*C:\ProgramData\Symantec\*" /s > %TMP%\ccSettings_mount.txt FOR /F "tokens=1" %%A IN (%TMP%\ccSettings_mount.txt) DO ( REM --- Check if token is a registry key containing %CCSETTINGS_SVC%\Parameters\mount echo.%%A | find /I "%CCSETTINGS_SVC%\Parameters\mount" >NUL && ( call :change_drive_letter "%%A" FileName if ERRORLEVEL 1 ( del %TMP%\ccSettings_mount.txt @exit /b 1 ) ) ) del %TMP%\ccSettings_mount.txt @goto :eof REM ---------------------------------------------------------------------------------------------------------------- REM ---------------------------------------------------------------------------------------------------------------- :find_ccsettings_name REM ---------------------------------------------------------------------------------------------------------------- REM --- There is an SEP service whose name contains an UUID that can vary REM --- between VMs. We detect its name here so we don't have to hard-code UUIDs REM --- The name will be returned in CCSETINGS_SVC environment variable. reg query HKLM\SYSTEM\CurrentControlSet\services /f "ccSettings_*" /reg:64 > %TMP%\ccSettings1.txt if ERRORLEVEL 1 @exit /b 1 type %TMP%\ccSettings1.txt | find /i "ccSettings" > %TMP%\ccSettings2.txt FOR /F "tokens=5 delims=\" %%G IN ('type %TMP%\ccSettings2.txt') DO SET CCSETTINGS_SVC=%%G del %TMP%\ccSettings1.txt del %TMP%\ccSettings2.txt @goto :eof REM ----------------------------------------------------------------------------------------------------------------- REM ----------------------------------------------------------------------------------------------------------------- :turn_sep_debug_on REM ----------------------------------------------------------------------------------------------------------------- REM --- When debugging SEP issues, it is useful to see the logs under REM --- CurrentVersion\Data\Logs subfolder of SEP's AllUsersProfile directory. REM --- This routine enables logging and increases verbosity. reg add "HKLM\SOFTWARE\Symantec\Symantec Endpoint Protection\SMC" /v smc_debuglog_on /t REG_DWORD /d 1 /f /reg:64 reg add "HKLM\SOFTWARE\Symantec\Symantec Endpoint Protection\SMC" /v smc_debug_level /t REG_DWORD /d 0 /f /reg:64 reg add "HKLM\SOFTWARE\Symantec\Symantec Endpoint Protection\SMC" /v smc_debug_log_level /t REG_DWORD /d 0 /f /reg:64 reg add "HKLM\SOFTWARE\Symantec\Symantec Endpoint Protection\SMC\Log" /v debug_log_filesize /t REG_DWORD /d 0x4e20 /f /reg:64 @goto :eof REM ----------------------------------------------------------------------------------------------------------------

Appendix  D  

 

<?xml version="1.0" encoding="utf-8"?> <root> <!-- ** WARNING ** The feature definitions contained in this file are maintained by Citrix Systems, Inc., and should not be modified by anyone other than Citrix Systems. The importation of a modified definition from anywhere but an official Synchronizer release can cause the failure or incorrect operation of Virtual Machines and can interfere with upgrades to future releases of Synchronizer. Suggestions for improvements to these definitions should be submitted to Citrix Systems. --> <feature type="FCD"> <id uuid="da9dc6cf-d8f0-44b2-a426-a37e9e986fdb" version="20" /> <name>Symantec Endpoint Protection</name> <author>Citrix Systems, Inc.</author> <description> Preserve data files and registry settings used by Symantec Endpoint Protection antivirus software. Tested on Win 7, Win8 and Win 8.1 (both x86 and x64) using SEP version 12. </description> <target os="win7Plus"> <filesystem file="\ProgramData\Symantec\Symantec Endpoint Protection\PersistedData\sephwid.xml" owner="user" merge="false" copy="false" /> <filesystem folder="\Program Files\Symantec\Symantec Endpoint Protection" owner="local" merge="true" conflict="server" copy="false" /> <filesystem folder="\Program Files (x86)\Symantec\Symantec Endpoint Protection" owner="local" merge="true" conflict="server" copy="false" /> <filesystem folder="\Program Files\Common Files\Symantec Shared" owner="local" merge="true" conflict="server" copy="false" /> <filesystem folder="\Program Files (x86)\Common Files\Symantec Shared" owner="local" merge="true" conflict="server" copy="false" /> <!-- Preserve any user defined scans --> <registry key="HKEY_LOCAL_MACHINE\SOFTWARE\Symantec\Symantec Endpoint Protection\AV\Scheduler" preserve="true" merge="false" /> <registry key="HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Symantec\Symantec Endpoint Protection\AV\Scheduler" preserve="true" merge="false" /> <!-- Preserve and backup locally generated HW ID (UUID) --> <registry key="HKEY_LOCAL_MACHINE\SOFTWARE\Symantec\Symantec Endpoint Protection\SMC\SYLINK\SyLink" preserve="true" merge="false"> <value name="HardwareID" /> </registry> <registry key="HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Symantec\Symantec Endpoint Protection\SMC\SYLINK\SyLink" preserve="true" merge="false"> <value name="HardwareID" /> </registry> <registry key="HKEY_LOCAL_MACHINE\SOFTWARE\Symantec\Symantec Endpoint Protection\SMC\SYLINK\SyLink" preserve="true" merge="false"> <value name="HostGUID" /> </registry> <registry key="HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Symantec\Symantec Endpoint Protection\SMC\SYLINK\SyLink" preserve="true" merge="false"> <value name="HostGUID" /> </registry> <!-- Note that there are many, many settings not being preserved (e.g., disable real-time scan). If a given customer needs them preserved, they'll need to enhance this definition. However, SEP is often either centrally managed or the ability to change settings has been disabled. --> </target> </feature>

Appendix  D  (continued)    

   

<feature type="PVD"> <id uuid="a4294e7c-1e71-4f98-8f55-81d27a577b32" version="6"/> <name>Symantec Endpoint Protection</name> <author>Citrix Systems, Inc.</author> <description> Preserve settings related to Symantec Endpoint Protection antivirus software. Tested on Win7, Win8 and Win 8.1 (on both x86 and x64) using SEP Version 12 </description> <target os="win7Plus"> <registry key="HKEY_LOCAL_MACHINE\SOFTWARE\Symantec\Symantec Endpoint Protection\SMC\SYLINK\SyLink" preserve="true" /> <registry key="HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Symantec\Symantec Endpoint Protection\SMC\SYLINK\SyLink" preserve="true" /> <!-- Preserve any user defined scans --> <registry key="HKEY_LOCAL_MACHINE\SOFTWARE\Symantec\Symantec Endpoint Protection\AV\Scheduler" preserve="true" /> <registry key="HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Symantec\Symantec Endpoint Protection\AV\Scheduler" preserve="true" /> </target> </feature> </root>