Skip to main content

Monitoring transparent password synchronization

Managing the Password Manager Service queue

Monitor transparent password synchronization by running synchronization reports. You may need to remove queued items to improve performance.

By selecting unwanted queued transparent synchronization items and removing them, the items will not be retried to synchronize to their destination targets and will be marked as failed synchronization.

To remove items from the transparent synchronization queue:

  1. Click Manage the system > Maintenance > Services.

  2. Select Bravura Security (idpm ) Password Manager Service.

  3. Select Manage work queue in the bottom table.

  4. Enter search criteria and click Search.

  5. Select the items you want to remove and click Cancel.

Monitoring transparent password synchronization on Windows servers

Monitor the health of the Password Change Notification Module on Windows NT PDCs and Active Directory DCs. Run netstat -an to see whether there are many (more than 20 or 30) TCP connections pending between the PDC/DC and the Bravura Pass server. If so, there may be a problem with the Bravura Pass server.

Sometimes, you may find that the Password Manager service (idpm ) appears to be failing to synchronize passwords changed on a Windows server. In many cases this is caused by the Password Change Notification Module interceptor (psintcpt.dll) timing out before it has communicated a password change to idpm . The default timeout period for psintcpt.dll is 60 seconds. You can extend this timeout period in the intcptsvc.cfg file.

See Password interceptor service (intcptsvc) configuration for more information.

Warning

It is strongly recommended that you edit intcptsvc.cfg only under the direction of a Bravura Security support technician.

The password interceptor service, intcptsvc, is part of the Bravura Security Password Change Notification Module, which also includes the psintcpt.dll. The service queues DLL requests and communicates with the Password Manager service (idpm). The DLL is loaded into the Windows Local Security Authority (LSA) policy to capture native password changes.

This section explains how you can extend functionality of the Password Change Notification Module to include using different interceptor settings based on user’s DN, group and attributes.

This service is installed by intcpt.msi or intcpt-64.msi on a Windows transparent password synchronization trigger.

You can configure the interceptor service, intcptsvc, to include or exclude certain users when they make password change requests on Windows trigger systems. The excluded requests are not sent to the Password Manager service (idpm), but are instead processed by the Windows password change facility as usual. This can be used to reduce network traffic between the trigger system and idpm.

You can configure the Password Change Notification Module filter using the configuration file, intcptsvc.cfg, located in:

<Program Files path>\Bravura SecurityPassword Filter\service\

See the intcptsvc.cfg file for basic instructions, and samples located in:

<Program Files path>\Bravura SecurityPassword Filter\samples\

Caution

Do not alter instsvc.cfg unless you know what you are doing.

For deployments on Windows NT environments, areas that are commented out should not be edited, due to limitations of Windows NT.

The sample intcptsvc.cfg file below shows a modified configuration file for an Active Directory environment. In this file:

  • The QueryAttributes group has been edited to specify attributes to query.

    Using QueryAttributes = All may slow down interceptor performance because it needs to retrieve all user attributes that have values (non blank). This option is suitable for designing the configuration at the early stage. You can then specify individual attributes once you know what you are looking for.

  • Bypass defines matching that will not be sent to the Password Manager service for password strength checking and password synchronization.

    When used with the NotAny operation, it includes the defined accounts; that is to say, "do not skip these accounts".

  • BypassNotify defines matching accounts that will not be sent to the Password Manager service for password synchronization.

  • The configuration file maps to one Password Manager service only. The case below is mapped to the service at IP address 10.0.5.8, port 3334. This can be the virtual IP of a Network Load Balancer.

  • One physical Active Directory DC maps to two logical Target IDs in Bravura Security Fabric: End_Users and Admin_Users logical targets in Bravura Pass. These two targets map to different target groups with their own password policies.

The idea here is that the Active Directory accounts meet administrator criteria:

  • Is, at least, a member of specified administrator groups; specified by the Bypass operation "NotAny" "memberof", which has the effect of including defined accounts.

  • Is not the specified account names; Guest and Krbtgt.

  • Is not a disabled account; specified by userAccountControl match "([0-1])*10")

If an administrator is a member of Domain Administrators group, his changing password will be examined by the Password Manager service, but it will not be synchronized to other associated targets. Instead, his password will be changed locally only.

See the Sample intcptsvc.cfg file for more information.

See also

Use the following utilities, shipped with the Password Change Notification Module, to help write the configuration file:

  • userattrs

    Use the userattrs program to query account attributes in Microsoft Active Directory; to find specific useful attributes that may be used as search criteria in designing the intcptsvc configuration file.

  • verifycfg

    Use the verifycfg program to verify that a given account will be bypassed by password strength checking and/or synchronization, according to per-target criteria set in the specified intcptsvc configuration file. Neither actual account strength checking, nor synchronization, is performed by this utility. This tool is useful for verifying whether the configuration file is designed properly before putting the interceptor online.

1# KVGROUP-V2.0
config "" = {
3  PMServer = {
    Address = 10.0.5.8;
5    Port = 3334;
    ConnectTimeOut = 10; # default timeout 10 seconds
7    # How many times retry if connection or communication failed
    MaxRetry = 10; # default maximum retry times is 10;
9    RetryDelay = 5; # default interval between each retry
    };
11  # The total timeout for doing password strength check on all targets
  StrengthCheckTimeOutSeconds = 60;
13  # How many time retry if IDPM server returns recoverable error
  StrengthCheckRetry = 3;
15  # Queue polling time
  QueuePollTimeSeconds = 60;
17  # Queued item will discarded if exceed this setting
  NotificationExpireSeconds = 86400;
19  # Discard this notification if it has been tried max times
  DiscardNotificationAfterTried = 100;
21  # if an exception occurred, 1 -- return StrengthCheck succeeded, 0 -- return strength check failed
  BypassStrengthOnException = 1;
23  MaxSessionLifeSeconds = 60; # default max life time for session is 60
25  # regular expression to bypass both strength check and password change notification based on
  # sAMAccountName before retrieving account attributes.
27  # Default setting is for bypassing empty user name and computer account
  sAMAccountNameBypassRegEx = "^\\s⋆$|^.⋆\\$+$";
29
  # ADsPath has the syntax as: LDAP://HostName[:PortNumber][/DistinguishedName]
31  # following variables can be used for the HostName and DistinguishedName
  # %PDC%    -- primary domain controller
              
33  # %DC%     -- default domain controller
  # %DN%     -- default naming context
35  ADsPath = "LDAP://%DC%/%DN%";
37  # LDAP search filter for querying account's attributes, the account name variable %USER% can be used in the filter
  # %USER%   -- the account name
39  # ADsSearchFilter = "(&(objectCategory=person)(objectClass=user)(sAMAccountName=%USER%))";
  ADsSearchFilter = "(sAMAccountName=%USER%)";
41
  # QueryAttributes defines attributes that will be used by the PSLang BypassCheck
              
43  # function and the Target-based bypass check for integrating with Active Directory.
  # There is one inherent attribute, '_AccountName_'; this is the only
45  # attribute that can be supported on a non-Active Directory platform.
  # Following are sample attributes for and Active Directory provider.
47  # Specifying "All" as QueryAttributes, instead of a list of attributes,
  # indicates to query all possible attributes for the user.
49  # QueryAttributes = All;
51
  # Active Directory attributes sample
53   QueryAttributes = {
     "distinguishedName";
55     "userAccountControl";
     "memberOf";
57     "objectSid";
     "pwdLastSet";
59     "replPropertyMetaData";
     "whenCreated";
61     "whenChanged";
     "logonHours";
63     "lastLogon";
     };
65
67
  Targets = {
69    End_Users = {
      # IDPM return code:
71      #   0 -- Communication failure
      #   1 -- Communication timeout
73      #  99 -- IDPM service internal database access failure
      # 100 -- Weak password
75      # 101 -- Access denied ( ACL )
               
      # 102 -- User not found
77      # 103 -- User has been locked out
      # 104 -- User has not been registered
79      # 105 -- User has been disabled
      # 106 -- Account not specified
81      # 107 -- TargetID not specified
      # 119 -- Invalid operation code
83      # 120 -- Invalid request version
      # 200 -- Good password
85      CheckStrengthFailIfIDPMReturn = { 100; };
      CheckStrengthOnly = 0;
87      # If the target longid isn't the default sAMAccountName, define the longid as:
      # LongID = "%sAMAccountName%";
89      # LongID = "DomainName\\%sAMAccountName%";
      # LongID = "%distinguishedName%";
91      LongID = "LongIDMatchesPMTarget";
93      # Target based bypass setting is based on 'Condition Group', the 'Condition Group' has below definitions:
      #
95      # Defines the conditions to bypass both strength check and password change notification
      # Bypass "LogicalOperation" = {
97      #   ConditionGroup1;
      #   ConditionGroup2;
99      #   ...
      #   };
101      #
      # ConditionGroup:
103      # LogicalOperation [Attribute] = {
      #   Expression1;
105      #   Expression2;
      #   ConditionGroup1;
107      #   ConditionGroup2;
      #   };
109      #
      # LogicalOperations:
111      # "Any", "All", "NotAny", "NotAll"
      #
113      # ComparisonOperators:
      #  Equal, NotEqual, Like, NotLike, Match, NotMatch, Great, Less, GreatEqual, LessEqual
115      # SpecialOperations: Exists, NotExists
      #
117      # Expression:
      #   ComparisonOperator[:OperationModifier] = Pattern;
119      #   SpecialOperations;
      #
121      # The 'Match' and 'NotMatch' use TR1 Regular Expression standard and ECMA script grammar
      # The 'OperationModifier' is an option for the 'ComparisonOperation', specify 'i'
123      # to make comparison case insensitive. The KVG expression treats value and
      # pattern as string by default, use the 'OperationModifier' to specify type or transform
125      # both value and pattern before make comparision.
      #   'i' -- insensitive case comparison
127      #   'b' -- convert decimal integer to bit string
      #   'h' -- convert decimal integer to hexadecimal string
129      #   'B' -- convert hex string to bit string
      #   't' -- convert file time integer to yyyymmddhhmmss UTC time string
131      #   'I' -- comparison as 64 bit integer for arithmetic comparison operators
      #
133      # Defines the condition to bypass password change notification
      # BypassNotify "LogicalOperation" = {
135      #   ConditionGroup1;
      #   ConditionGroup2;
137      #   ...
      #   };
139      # For example, we would like to bypass password both strength check and
      # password change notification on this target for any account name starts
141      # with root or Admin or users in Administrators group or users in Managers
               
      # group:
143      # Bypass "Any" = {
      #    "Any" "_AccountName_" = {
145      #      Like = "root⋆";
      #      Like = "Admin⋆";
147      #     };
      #    "Any" "memberOf" = {
149      #      Equal = "Administrators";
      #      Equal = "Managers";
151      #    };
      # };
153
      CheckStrengthFailIfIDPMReturn = { 100; };
155      CheckStrengthOnly = 0;
157      Bypass "Any" = {# Bypass strength check to HiPM
            "Any" "userAccountControl" = {
159                # Disabled accounts are Bypassing HiPM strength check.
                # Disabled accounts control numer is 2 (binary -> 10).
161
                # convert userAccountControl number from decimal to bit
163                # string. Then use regular expression for comparison.
                match:b = "([0-1])⋆10";
165            };
167          "Any" "logonHours" = {
                Match:B = "([1])⋆";
169          };
171          "Any" "pwdLastSet" = {
                match:t = "1290538([0-9])⋆";
173          };
175          "Any" "lastLogon" = {
                Less:I = 128539593944756250;
177          };
179          "Any" "_AccountName_" = {
                # put the computer accounts below that are bypassing HiPM
181                Equal:i = "Guest";
                Equal:i = "krbtgt";
183                Equal:i = "LethBridgeUser1";
           };
185
          "Any" "distinguishedName" = {
187                Like:i = "⋆OU=Calgary⋆";
          };
189
          "Any" "memberOf" = {
191                # The accounts have membership in the following groups are
                # bypassing HiPM
193
                Like:i = "CN=Administrators,CN=Builtin⋆";
195                Like:i = "CN=Domain Admins⋆";
                Like:i = "CN=Enterprise Admins⋆";
197          };
       };
199
201      BypassNotify "Any" = {  # Bypass password synchronization to HiPM
          "Any" "_AccountName_" = {
203                Equal = "LethbridgeUser2";
          };
205       }; #End of BypassNotify
      }; #End of 'End_Users' Target
207
209    Admin_Users = {
      CheckStrengthFailIfIDPMReturn = { 100; };
211      CheckStrengthOnly = 0;
      # If the target longid isn't the default sAMAccountName, define the longid as:
213      # LongID = "%sAMAccountName%";
      # LongID = "DomainName\\%sAMAccountName%";
215      # LongID = "%distinguishedName%";
      LongID = "LongIDMatchesPMTarget";
217
      Bypass "Any" = {# Bypassing Strength Check to HiPM
219            "Any" "userAccountControl" = {
                # Disabled accuonts are Bypassing HiPM strength check
221                match:b = "([0-1])⋆10";
            };
223
          "Any" "_AccountName_" = {
225                # put the computer accounts below that are BYPASSING HiPM
                Equal:i = "Guest";
227                Equal:i = "krbtgt";
           };
229
          "NotAny" "memberOf" = {
231                # The accounts have membership in the following groups are           # SENDING to HiPM
233                Like = "CN=Administrators,CN=Builtin⋆";
                Like = "CN=Domain Admins⋆";
235                Like = "CN=Enterprise Admins⋆";
          };
237       };
239
      BypassNotify "Any" = {  # Bypassing Password Synchronization to HiPM
241            "Any" "memberOf" = {
                Like = "CN=Domain Admins⋆";
243            };
245       }; #End of BypassNotify
      }; #End of 'Admin_Users' Target
247
249
251
    };
253  };