
Monitor Active Directory
Active Directory (AD) is an integral part of any Windows network. The Active Directory database (known as the NT Directory Service (NTDS) database) is the central repository for user, computer, network, device and security objects in an AD domain or forest. When you make a change to Active Directory, such as adding or deleting a user, member server or domain controller, those changes are recordable. Splunk Enterprise lets you alert and monitor those changes in real time.
You can configure AD monitoring to watch changes to your Active Directory forest, and collect user and machine metadata. You can use this feature combined with dynamic list lookups to decorate or modify events with any information available in AD.
Once you've configured Splunk to monitor your Active Directory, it takes a baseline snapshot of the AD schema. It uses this snapshot to establish a starting point against which to monitor. This process might take a little time before it completes.
The AD monitoring input runs as a separate process called splunk-admon.exe
. It runs once for every Active Directory monitoring input defined in Splunk.
Why monitor Active Directory?
If you are charged with maintaining the integrity, security and health of your Active Directory, then you are concerned with what is happening with it day to day. Splunk Enterprise allows you to see what has changed in your AD, who or what made the changes, and when they were made.
You can transform this data into reports for corporate security compliance or forensics. You can also use the data retrieved for intrusion alerts for immediate response. Additionally, you can create health reports with the data indexed for future AD infrastructure planning activities, such as assignment of operations master roles, AD replicas, and global catalogs across domain controllers (DCs).
What do you need to monitor Active Directory?
The following table lists the explicit permissions needed to monitor an Active Directory schema.
Activity: | Required permissions: |
---|---|
Monitor an Active Directory schema | * Splunk must run on Windows * Splunk must run as a domain user * The user Splunk runs as must have read access to all AD objects that you want to monitor |
Considerations for monitoring Active Directory
To get the best results out of monitoring AD with Splunk Enterprise, be aware of the following:
- This feature is only available with Splunk Enterprise on Windows. You won't be able to monitor AD changes from a *nix version of Splunk (though you can forward AD data gathered from a Windows version of Splunk to a *nix indexer).
- The AD monitoring process can run under a full Splunk instance or within any kind of forwarder.
- The machine that monitors changes to AD must belong to the domain or forest you want to monitor.
- The user Splunk runs as must be part of the domain too. This is because the permissions that the user has determine what parts of AD Splunk can monitor.
For additional information on deciding how to monitor Windows data remotely, see "Considerations for deciding how to monitor remote Windows data" in this manual. For information on deciding which user Splunk should run as at installation time, review "Choose the user Splunk should run as" in the Installation Manual.
Configure Active Directory monitoring
You can configure AD monitoring either in Splunk Web or by editing configuration files. More options, such as the ability to configure monitors for multiple DCs, are available when using configuration files.
Configure AD monitoring with Splunk Web
To configure Active Directory monitoring, follow the "Windows Active Directory" recipe in this manual.
Configure AD monitoring with configuration files
The inputs.conf configuration file controls Active Directory monitoring configurations. Edit copies of inputs.conf
in the %SPLUNK_HOME%\etc\system\local
directory. If you edit them in the default directory, Splunk overwrites any changes you make when you upgrade. For more information about configuration file precedence, see "Configuration file precedence" in this manual.
1. Make a copy of %SPLUNK_HOME%\etc\system\default\inputs.conf
and put it in %SPLUNK_HOME%\etc\system\local\inputs.conf
.
2. Edit inputs.conf to add the appropriate AD monitoring stanzas and settings.
Note: By default, when you enable AD monitoring inputs, Splunk gathers AD change data from the first domain controller that it can attach to. If that is acceptable, no further configuration is necessary.
inputs.conf settings
inputs.conf
contains one stanza for each AD monitoring input, with a header like the following:
[admon://<name of stanza>]
In each stanza, you can specify:
Attribute | Required? | Description | Default |
---|---|---|---|
targetDc
|
Yes | The unique name of the domain controller you want Splunk to use for AD monitoring.
Specify a unique name for this attribute if:
Note: If you want to target multiple DCs, add another |
n/a |
startingNode
|
No | A fully qualified Lightweight Directory Access Protocol (LDAP) name (for example: "LDAP://OU=Computers,DC=ad,DC=splunk,DC=com" ) that specifies where in the AD tree that Splunk should begin its indexing. Splunk starts there and enumerates down to sub-containers, depending on the configuration of the monitorSubtree attribute.
Note: The value of |
The highest root domain in the tree that Splunk can access |
monitorSubtree
|
No | How much of the target AD container to index. A value of 0 tells Splunk to index only the target container, and not traverse into subcontainers within that container. A value of 1 tells Splunk to enumerate all sub-containers and domains that it has access to. | 1 (monitor all domains that Splunk has access to) |
baseline
|
No | Whether or not the input enumerates all existing available AD objects when it first runs. A value of 0 tells Splunk not to set a baseline, and a value of 1 tells Splunk to set a baseline. | 1 (set the baseline.) |
index
|
No | The index to route AD monitoring data to. | the 'default' index. |
disabled
|
No | Whether or not the Splunk should run the input. A value of 0 tells Splunk that the input is enabled, and a value of 1 tells Splunk that the input is disabled. | 0 (enabled). |
Example AD monitoring configurations
The following are examples of how to use inputs.conf
to monitor desired portions of your AD network.
To index data from the top of the AD directory:
#Gather all AD data that this server can see [admon://NearestDC] targetDc = startingNode =
To use a DC that is at a higher root level than an OU you want to target for monitoring:
# Use the pri01.eng.ad.splunk.com domain controller to get all AD metadata for # the Computers OU in this forest. We want schema data for the entire AD tree, not # just this node. [admon://DefaultTargetDc] targetDc = pri01.eng.ad.splunk.com startingNode = OU=Computers,DC=eng,DC=ad,DC=splunk,DC=com
To monitor multiple domain controllers:
# Get change data from two domain controllers (pri01 and pri02) in the same AD tree. # Index both and compare/contrast to ensure AD replication is occurring properly. [admon://DefaultTargetDc] targetDc = pri01.eng.ad.splunk.com startingNode = OU=Computers,DC=eng,DC=ad,DC=splunk,DC=com [admon://SecondTargetDc] targetDc = pri02.eng.ad.splunk.com startingNode = OU=Computers,DC=eng,DC=ad,DC=splunk,DC=com
Sample AD monitoring output
When the Splunk AD monitoring utility runs, it gathers AD change events. Each change event is indexed as an event in Splunk. You can view these events as they come into Splunk in the Search app.
There are several types of AD change events that Splunk can index. Examples of these events are detailed below. Some of the content of these events has been obscured/altered for publication purposes.
Update event
When an AD object is changed in any way, Splunk generates this type of event. Splunk logs this change as type admonEventType=Update
.
2/1/10 3:17:18.009 PM 02/01/2010 15:17:18.0099 dcName=stuff.splunk.com admonEventType=Update Names: objectCategory=CN=Computer,CN=Schema,CN=Configuration name=stuff2 displayName=stuff2 distinguishedName=CN=stuff2,CN=Computers Object Details: sAMAccountType=805306369 sAMAccountName=stuff2 logonCount=4216 accountExpires=9223372036854775807 objectSid=S-1-5-21-3436176729-1841096389-3700143990-1190 primaryGroupID=515 pwdLastSet=06:30:13 pm, Sat 11/27/2010 lastLogon=06:19:43 am, Sun 11/28/2010 lastLogoff=0 badPasswordTime=0 countryCode=0 codePage=0 badPwdCount=0 userAccountControl=4096 objectGUID=blah whenChanged=01:02.11 am, Thu 01/28/2010 whenCreated=05:29.50 pm, Tue 11/25/2008 objectClass=top|person|organizationalPerson|user|computer Event Details: uSNChanged=2921916 uSNCreated=1679623 instanceType=4 Additional Details: isCriticalSystemObject=FALSE servicePrincipalName=TERMSRV/stuff2|TERMSRV blah dNSHostName=stuff2.splunk.com operatingSystemServicePack=Service Pack 2 operatingSystemVersion=6.0 (6002) operatingSystem=Windows Vista? Ultimate localPolicyFlags=0
Delete event
Splunk generates this event type when an AD object has been marked for deletion. The event type is similar to admonEventType=Update
, except that it contains the isDeleted=True
key/value pair at the end of the event.
2/1/10 3:11:16.095 PM 02/01/2010 15:11:16.0954 dcName=stuff.splunk.com admonEventType=Update Names: name=SplunkTest DEL:blah distinguishedName=OU=SplunkTest\0ADEL:blah,CN=Deleted Objects DEL:blah Object Details: objectGUID=blah whenChanged=11:31.13 pm, Thu 01/28/2010 whenCreated=11:27.12 pm, Thu 01/28/2010 objectClass=top|organizationalUnit Event Details: uSNChanged=2922895 uSNCreated=2922846 instanceType=4 Additional Details: dSCorePropagationData=20100128233113.0Z|20100128233113.0Z|20100128233113.0Z|16010108151056.0Z lastKnownParent=stuff '''isDeleted=TRUE'''
Sync event
When AD monitoring inputs are configured, Splunk tries to capture a baseline of AD metadata when it is started. Splunk generates event type admonEventType=Sync
, which represents the instance of one AD object and all its field values. Splunk tries to capture all of the objects from the last recorded Update Sequence Number (USN).
Note: When you restart either Splunk or the splunk-admon.exe
process, Splunk will log an extra 'sync' event. This is normal.
2/1/10 3:11:09.074 PM 02/01/2010 15:11:09.0748 dcName=ftw.ad.splunk.com admonEventType=Sync Names: name=NTDS Settings distinguishedName=CN=NTDS Settings,CN=stuff,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration cn=NTDS Settings objectCategory=CN=NTDS-DSA,CN=Schema,CN=Configuration,DC=ad,DC=splunk,DC=com fullPath=LDAP://stuff.splunk.com/<GUID=bla bla bla> CN=NTDS Settings Object Details: whenCreated=10:15.04 pm, Tue 02/12/2008 whenChanged=10:23.00 pm, Tue 02/12/2008 objectGUID=bla bla bla objectClass=top|applicationSettings|nTDSDSA classPath=nTDSDSA Event Details: instanceType=4 Additional Details: systemFlags=33554432 showInAdvancedViewOnly=TRUE serverReferenceBL=CN=stuff,CN=Domain System Volume (SYSVOL share),CN=File Replication Service,CN=System options=1 msDS-hasMasterNCs=DC=ForestDnsZones|DC=DomainDnsZones|CN=Schema,CN=Configuration|CN=Configuration msDS-HasInstantiatedNCs= msDS-HasDomainNCs=blah msDS-Behavior-Version=2 invocationId=bla bla bla hasMasterNCs=CN=Schema,CN=Configuration|CN=Configuration dSCorePropagationData= dMDLocation=CN=Schema,CN=Configuration nTSecurityDescriptor=NT AUTHORITY\Authenticated Users SchemaName=LDAP://stuff.splunk.com/schema/nTDSDSA
Schema event
When Splunk is started after configured for AD monitoring, it generates a schema type event: admonEventType=schema
. This event shows the definitions of every object in the Active Directory structure. The available, required and optional fields are listed for each AD object. Failure to see all of these fields can indicate a problem with Active Directory.
02/01/2010 15:11:16.0518 dcName=LDAP://stuff.splunk.com/ admonEventType=schema className=msExchProtocolCfgSMTPIPAddress classCN=ms-Exch-Protocol-Cfg-SMTP-IP-Address instanceType=MandatoryProperties nTSecurityDescriptor=MandatoryProperties objectCategory=MandatoryProperties objectClass=MandatoryProperties adminDescription=OptionalProperties adminDisplayName=OptionalProperties allowedAttributes=OptionalProperties allowedAttributesEffective=OptionalProperties allowedChildClasses=OptionalProperties allowedChildClassesEffective=OptionalProperties bridgeheadServerListBL=OptionalProperties canonicalName=OptionalProperties cn=OptionalProperties createTimeStamp=OptionalProperties description=OptionalProperties directReports=OptionalProperties displayName=OptionalProperties displayNamePrintable=OptionalProperties distinguishedName=OptionalProperties dSASignature=OptionalProperties dSCorePropagationData=OptionalProperties extensionName=OptionalProperties flags=OptionalProperties fromEntry=OptionalProperties frsComputerReferenceBL=OptionalProperties fRSMemberReferenceBL=OptionalProperties fSMORoleOwner=OptionalProperties heuristics=OptionalProperties isCriticalSystemObject=OptionalProperties isDeleted=OptionalProperties isPrivilegeHolder=OptionalProperties lastKnownParent=OptionalProperties legacyExchangeDN=OptionalProperties managedObjects=OptionalProperties masteredBy=OptionalProperties memberOf=OptionalProperties modifyTimeStamp=OptionalProperties mS-DS-ConsistencyChildCount=OptionalProperties mS-DS-ConsistencyGuid=OptionalProperties msCOM-PartitionSetLink=OptionalProperties msCOM-UserLink=OptionalProperties msDFSR-ComputerReferenceBL=OptionalProperties msDFSR-MemberReferenceBL=OptionalProperties msDS-Approx-Immed-Subordinates=OptionalProperties msDs-masteredBy=OptionalProperties msDS-MembersForAzRoleBL=OptionalProperties msDS-NCReplCursors=OptionalProperties msDS-NCReplInboundNeighbors=OptionalProperties msDS-NCReplOutboundNeighbors=OptionalProperties msDS-NonMembersBL=OptionalProperties msDS-ObjectReferenceBL=OptionalProperties msDS-OperationsForAzRoleBL=OptionalProperties msDS-OperationsForAzTaskBL=OptionalProperties msDS-ReplAttributeMetaData=OptionalProperties msDS-ReplValueMetaData=OptionalProperties msDS-TasksForAzRoleBL=OptionalProperties msDS-TasksForAzTaskBL=OptionalProperties msExchADCGlobalNames=OptionalProperties msExchALObjectVersion=OptionalProperties msExchHideFromAddressLists=OptionalProperties msExchInconsistentState=OptionalProperties msExchIPAddress=OptionalProperties msExchTurfList=OptionalProperties msExchUnmergedAttsPt=OptionalProperties msExchVersion=OptionalProperties msSFU30PosixMemberOf=OptionalProperties name=OptionalProperties netbootSCPBL=OptionalProperties nonSecurityMemberBL=OptionalProperties objectGUID=OptionalProperties objectVersion=OptionalProperties otherWellKnownObjects=OptionalProperties ownerBL=OptionalProperties partialAttributeDeletionList=OptionalProperties partialAttributeSet=OptionalProperties possibleInferiors=OptionalProperties proxiedObjectName=OptionalProperties proxyAddresses=OptionalProperties queryPolicyBL=OptionalProperties replicatedObjectVersion=OptionalProperties replicationSignature=OptionalProperties replPropertyMetaData=OptionalProperties replUpToDateVector=OptionalProperties repsFrom=OptionalProperties repsTo=OptionalProperties revision=OptionalProperties sDRightsEffective=OptionalProperties serverReferenceBL=OptionalProperties showInAddressBook=OptionalProperties showInAdvancedViewOnly=OptionalProperties siteObjectBL=OptionalProperties structuralObjectClass=OptionalProperties subRefs=OptionalProperties subSchemaSubEntry=OptionalProperties systemFlags=OptionalProperties unmergedAtts=OptionalProperties url=OptionalProperties uSNChanged=OptionalProperties uSNCreated=OptionalProperties uSNDSALastObjRemoved=OptionalProperties USNIntersite=OptionalProperties uSNLastObjRem=OptionalProperties uSNSource=OptionalProperties wbemPath=OptionalProperties wellKnownObjects=OptionalProperties whenChanged=OptionalProperties whenCreated=OptionalProperties wWWHomePage=OptionalProperties
Answers
Have questions? Visit Splunk Answers and see what questions and answers the Splunk community has around monitoring AD with Splunk.
PREVIOUS Considerations for deciding how to monitor remote Windows data |
NEXT Monitor Windows event log data |
This documentation applies to the following versions of Splunk® Enterprise: 6.2.0, 6.2.1, 6.2.2, 6.2.3, 6.2.4, 6.2.5, 6.2.6, 6.2.7, 6.2.8, 6.2.9, 6.2.10, 6.2.11, 6.2.12, 6.2.13, 6.2.14, 6.2.15
Feedback submitted, thanks!