Basic Security Module Auditing (xm_bsm)
This module provides support for parsing events collected from a file using the Solaris OS Basic Security Module (BSM) Auditing API. This module is normally used in combination with the im_file module to read events from a log file. An InputType is registered using the name of the module instance. See also im_bsm, which reads audit events directly from the kernel—it is recommended instead in cases where NXLog Agent is running on the local system and the device file is available for reading.
| To examine the supported platforms, see the list of installation packages. | 
Setup
For information about setting up BSM Auditing, see the corresponding documentation:
- 
For FreeBSD, see Audit Configuration in the FreeBSD Handbook.
 - 
For Solaris 10, see Enabling and Using BSM Auditing in the Logical Domains 1.2 Administration Guide.
 - 
For Solaris 11, see Managing the BSM Service (Tasks) in the System Administration Guide.
 
Configuration
The xm_bsm module accepts the following directives in addition to the common module directives.
Fields
The following fields are used by xm_bsm.
$raw_event(type: string)- 
A list of event fields in key-value pairs.
 
$Arbitrary(type: string)- 
Arbitrary data token associated with the event, if any
 
$Arg00.Description(type: string)- 
The description of argument 0 (there may be additional arguments; for example,
Arg01) 
$Arg00.Value(type: string)- 
The value of argument 0
 
$AttributeDevID(type: string)- 
The device ID the file might represent
 
$AttributeFsID(type: string)- 
The file system ID
 
$AttributeGID(type: string)- 
The file owner group ID (GID)
 
$AttributeMode(type: string)- 
The file access mode and type
 
$AttributeNodeID(type: string)- 
The file inode ID
 
$AttributeUID(type: string)- 
The file owner user ID (UID)
 
$CertHash(type: string)- 
certificate hash string set
 
$Cmd(type: string)- 
The command, with arguments and environment, executed within the zone
 
$EventHost(type: string)- 
The host name of the machine corresponding to the event
 
$EventModifier(type: string)- 
The ID modifier that identifies special characteristics of the event
 
$EventName(type: string)- 
The name of audit event that the record represents
 
$EventTime(type: datetime)- 
The time at which the event occurred
 
$EventType(type: string)- 
The type of audit event that the record represents
 
$ExecArgs(type: string)- 
The list of arguments to an exec() system call
 
$ExecEnv(type: string)- 
The list of the current environment variables to an exec() system call
 
$ExitErrno(type: string)- 
The exit status as passed to the exit() system call
 
$ExitRetval(type: string)- 
The exit return value that describes the exit status
 
$FileModificationTime(type: datetime)- 
The last modification time of the file corresponding to the event (if applicable)
 
$FileName(type: string)- 
The name of the file corresponding to the event (if applicable)
 
$Hostname(type: string)- 
The IP address or hostname where the event originated
 
$Identity.CDHash(type: string)- 
Apple Identity CDHash hex
 
$Identity.SignerId(type: string)- 
Apple Identity signer ID
 
$Identity.SignerIdTruncated(type: string)- 
Apple Identity signer ID truncated flag
 
$Identity.SignerType(type: string)- 
Apple Identity signer type
 
$Identity.TeamId(type: string)- 
Apple Identity Team ID
 
$Identity.TeamIdTruncated(type: string)- 
Apple Identity Team ID truncated flag
 
$IPAddress(type: string)- 
The IP address as part of the IP token
 
$IPC(type: string)- 
The IPC handle that is used by the caller to identify a particular IPC object
 
$IPChecksum(type: string)- 
The checksum of the IP header
 
$IPCPermCreatorGID(type: string)- 
The IPC creator group ID (GID)
 
$IPCPermCreatorUID(type: string)- 
The IPC creator user ID (UID)
 
$IPCPermGID(type: string)- 
The IPC owner group ID (GID)
 
$IPCPermKey(type: string)- 
The IPC permission key
 
$IPCPermMode(type: string)- 
The IPC access mode
 
$IPCPermSeqID(type: string)- 
The IPC slot sequence
 
$IPCPermUID(type: string)- 
The IPC owner user ID (UID)
 
$IPDestAddr(type: string)- 
The destination address in the IP header
 
$IPFragmentOffset(type: string)- 
The fragment offset field of the IP header
 
$IPHeaderLen(type: string)- 
The total length of the IP header
 
$IPIdent(type: string)- 
The ID of the IP header
 
$IPProto(type: string)- 
The IP protocol
 
$IPServiceType(type: string)- 
The IP type of service (TOS)
 
$IPSrcAddr(type: string)- 
The source address in the IP header
 
$IPTTL(type: string)- 
The time-to-live (TTL) of the IP header
 
$IPVer(type: string)- 
The version for the Internet Protocol
 
$KRB5Principal(type: string)- 
KRB5Principal strings set
 
$Opaque(type: string)- 
The opaque field (unformatted, hexadecimal)
 
$Path(type: string)- 
Access path information for an object
 
$Privilege(type: string)- 
The privilege token
 
$ProcessAuditID(type: string)- 
The audit ID in the Process section
 
$ProcessGID(type: string)- 
The effective group ID (GID) in the Process section
 
$ProcessPID(type: string)- 
The process ID (PID) in the Process section
 
$ProcessRealGID(type: string)- 
The real group ID (GID) in the Process section
 
$ProcessRealUID(type: string)- 
The real user ID (UID) in the Process section
 
$ProcessSID(type: string)- 
The session ID (SID) in the Process section
 
$ProcessTerminal.Host(type: string)- 
The terminal IP address in the Process section
 
$ProcessTerminal.Port(type: string)- 
The terminal port in the Process section
 
$ProcessUID(type: string)- 
The effective user ID (UID) in the Process section
 
$ReturnErrno(type: string)- 
The error status of the system call in the Return section
 
$ReturnRetval(type: string)- 
The return value of the system call in the Return section
 
$Sequence(type: string)- 
The sequence number
 
$SocketAddress(type: string)- 
The remote socket address
 
$SocketPort(type: string)- 
The remote socket port
 
$SocketType(type: string)- 
The socket type field that indicates the type of socket referenced (TCP/UDP/UNIX)
 
$SubjectAuditID(type: string)- 
The invariant audit ID in the Subject section
 
$SubjectGID(type: string)- 
The effective group ID (GID) in the Subject section
 
$SubjectPID(type: string)- 
The process ID (PID) in the Subject section
 
$SubjectRealGID(type: string)- 
The real group ID (GID) in the Subject section
 
$SubjectRealUID(type: string)- 
The real user ID (UID) in the Subject section
 
$SubjectSID(type: string)- 
The session ID (SID) in the Subject section
 
$SubjectTerminal.Host(type: string)- 
The terminal IP address in the Subject section
 
$SubjectTerminal.Port(type: string)- 
The terminal port in the Subject section
 
$SubjectUID(type: string)- 
The effective user ID (UID) in the Subject section
 
$TerminalAddress(type: string)- 
The terminal address as found in a Subject and/or Process token
 
$TerminalLocalPort(type: string)- 
The terminal local port as found in a Subject and/or Process token
 
$TerminalRemotePort(type: string)- 
The terminal remote port as found in a Subject and/or Process token
 
$Text(type: string)- 
A text string associated with the event
 
$TokenVersion(type: string)- 
A number that identifies the version of the record structure
 
$Zone(type: string)- 
The zone name to which the audit event pertains
 
Examples
This configuration reads BSM audit logs from a file and parses them with the InputType registered by xm_bsm.
<Extension bsm_parser>
    Module      xm_bsm
</Extension>
<Input in>
    Module      im_file
    File        '/var/audit/*'
    InputType   bsm_parser
</Input>