Audit Terminology and Concepts
The following terms are used to describe the auditing service. Some definitions include
pointers to more complete descriptions.
Table 28-1 Solaris Auditing Terms
Term |
Definition |
Audit class |
A grouping of audit events. Audit classes
provide a way to select a group of events to be audited. For
more information, see Audit Classes and Preselection. |
Audit directory |
A repository of audit files in binary format.
For a description of the types of audit directories, see Audit Files. |
Audit event |
A security-related
system action that is audited. For ease of selection, events are grouped into
audit classes. For a discussion of the system actions that can be audited,
see Audit Events. |
Audit policy |
A set of auditing options that you can enable or
disable at your site. These options include whether to record certain kinds of
audit data. The options also include whether to suspend auditable actions when the
audit trail is full. For more information, see Determining Audit Policy. |
Audit record |
Audit data that is
stored in audit files. An audit record describes a single audit event. Each
audit record is composed of audit tokens. For more information about audit records,
see Audit Records and Audit Tokens. |
Audit token |
A field of an audit record or event. Each audit
token describes an attribute of an audit event, such as a user, a
program, or other object. For descriptions of all the audit tokens, see Audit Token Formats. |
Audit
trail |
A collection of one or more audit files that store the audit
data from all systems that run the auditing service. For more information, see
Audit Trail. |
Preselection |
Preselection is the choice of which audit classes to monitor before you enable
the auditing service. The audit events of preselected audit classes appear in the
audit trail. Audit classes that are not preselected are not audited, so
their events do not appear in the audit trail. A postselection tool, the
auditreduce command, selects records from the audit trail. For more information, see Audit Classes and Preselection. |
Public
objects |
A public object is a file that is owned by the root
user and readable by the world. For example, files in the /etc directory and
the /usr/bin directory are public objects. Public objects are not audited for read-only
events. For example, even if the file_read (fr) audit class is preselected, the reading
of public objects is not audited. You can override the default by changing
the public audit policy option. |
Audit Events
Security-relevant system actions can be audited. These auditable actions are defined as audit events.
Audit events are listed in the /etc/security/audit_event file. Each audit event is
defined in the file by an event number, a symbolic name, a short
description, and the set of audit classes to which the event belongs.
For more information on the audit_event file, see the audit_event(4) man page.
For example, the following entry defines the audit event for the exec()
system call:
7:AUE_EXEC:exec(2):ps,ex
When you preselect for auditing either the audit class ps or the audit
class ex, then exec() system calls are recorded in the audit trail.
Solaris auditing handles attributable and nonattributable events. The exec() system call can
be attributed to a user, so the call is considered an attributable event.
Events are nonattributable if the events occur at the kernel-interrupt level. Events that
occur before a user is authenticated are also nonattributable. The na audit class handles
audit events that are nonattributable. For example, booting the system is a nonattributable
event.
113:AUE_SYSTEMBOOT:system booted:na
When the class to which an audit event belongs is preselected for
auditing, the event is recorded in the audit trail. For example, when you
preselect the ps and na audit classes for auditing, the exec() system calls and
system boot actions, among other events, are recorded in the audit trail.
In addition to the audit events that are defined by the Solaris
auditing service, third-party applications can generate audit events. Audit event numbers from 32768 to
65535 are available for third-party applications.
Audit Classes and Preselection
Each audit event belongs to an audit class or classes. Audit classes are convenient
containers for large numbers of audit events. When you preselect a class to
be audited, you specify that all the events in that class should be
recorded in the audit trail. You can preselect for events on a system
and for events initiated by a particular user. After the auditing service is
running, you can dynamically add or remove audit classes from the preselected classes.
System-wide preselection – Specify system-wide defaults for auditing in the flags, naflags, and plugin lines in the audit_control file. The audit_control file is described in audit_control File. See also the audit_control(4) man page.
User-specific preselection – Specify additions to the system-wide auditing defaults for individual users in the audit_user database.
The audit preselection mask determines which classes of events are audited for a user. The user's audit preselection mask is a combination of the system-wide defaults and the audit classes that are specified for the user. For a more detailed discussion, see Process Audit Characteristics.
The audit_user database can be administered locally or by a name service. The Solaris Management Console provides the graphical user interface (GUI) to administer the database. For details, see the audit_user(4) man page.
Dynamic preselection – Specify audit classes as arguments to the auditconfig command to add or remove those audit classes from a process or session. For more information, see the auditconfig(1M) man page.
A postselection command, auditreduce, enables you to select records from the preselected audit
records. For more information, see Examining the Audit Trail and the auditreduce(1M) man page.
Audit classes are defined in the /etc/security/audit_class file. Each entry contains the audit
mask for the class, the name for the class, and a descriptive name
for the class. For example, the ps and na class definitions appear
in the audit_class file as follows:
0x00100000:ps:process start/stop
0x00000400:na:non-attribute
There are 32 possible audit classes. The classes include the two global classes:
all and no. The audit classes are described in the audit_class(4) man page.
The mapping of audit events to classes is configurable. You can remove events
from a class, add events to a class, and create a new class
to contain selected events. For the procedure, see How to Change an Audit Event's Class Membership.
Audit Records and Audit Tokens
Each audit record records the occurrence of a single audited event. The record includes
information such as who did the action, which files were affected, what action
was attempted, and where and when the action occurred. The following example shows
a login audit record:
header,81,2,login - local,,2003-10-13 11:23:31.050 -07:00
subject,root,root,other,root,other,378,378,0 0 example_system
text,successful login
return,success,0
The type of information that is saved for each audit event is
defined by a set of audit tokens. Each time an audit record is created for
an event, the record contains some or all of the tokens that
are defined for the event. The nature of the event determines which tokens
are recorded. In the preceding example, each line begins with the name of
the audit token. The content of the audit token follows the name. Together,
the four audit tokens comprise the login audit record.
For a detailed description of the structure of each audit token with an
example of praudit output, see Audit Token Formats. For a description of the binary stream
of audit tokens, see the audit.log(4) man page.
Audit Files
Audit records are collected in audit logs. Solaris auditing provides two output modes
for audit logs. Logs that are called audit files store audit records in binary
format. The set of audit files from a system or site provide a
complete audit record. The complete audit record is called the audit trail.
The syslog utility collects and stores text version summaries of the audit record.
A syslog record is not complete. The following example shows a syslog entry
for a login audit record:
Oct 13 11:24:11 example_system auditd: [ID 6472 audit.notice] \
login - login ok session 378 by root as root:other
A site can store audit records in both formats. You can configure the
systems at your site to use binary mode, or to use both modes.
The following table compares binary audit records with syslog audit records.
Table 28-2 Comparison of Binary Audit Records With syslog Audit Records
Feature |
Binary Records |
syslog Records |
Protocol |
Writes
to the file system |
Uses UDP for remote logging |
Data type |
Binary |
Text |
Record length |
No limit |
Up to
1024 characters per audit record |
Location |
Stored on local disk, and in directories that
are mounted by using NFS |
Stored in a location that is specified in
the syslog.conf file |
How to configure |
Edit audit_control file, and protect and NFS-mount audit directories |
Edit
audit_control file, and edit syslog.conf file |
How to read |
Typically, in batch mode Browser output
in XML |
In real time, or searched by scripts that you have created
for syslog Plain text output |
Completeness |
Guaranteed to be complete, and to appear in the
correct order |
Are not guaranteed to be complete |
Timestamp |
Greenwich Mean Time (GMT) |
Time on the
system that is being audited |
Binary records provide the greatest security and coverage. Binary output meets the requirements
of security certifications, such as the Common Criteria Controlled Access Protection Profile (CAPP).
The records are written to a file system that is protected from snooping.
On a single system, all binary records are collected and are displayed in
order. The GMT timestamp on binary logs enables accurate comparison when systems on
one audit trail are distributed across time zones. The praudit -x command enables you
to view the records in a browser in XML. You can also use
scripts to parse the XML output.
In contrast, the syslog records provide greater convenience and flexibility. For example, you
can collect the syslog data from a variety of sources. Also, when you
monitor audit.notice events in the syslog.conf file, the syslog utility logs an audit record
summary with the current timestamp. You can use the same management and analysis
tools that you have developed for syslog messages from a variety of sources,
including workstations, servers, firewalls, and routers. The records can be viewed in real
time, and can be stored on a remote system.
By using syslog.conf to store audit records remotely, you protect log data from
alteration or deletion by an attacker. On the other hand, when audit records
are stored remotely, the records are susceptible to network attacks such as denial
of service and spoofed source addresses. Also, UDP can drop packets or can
deliver packets out of order. The limit on syslog entries is 1024 characters,
so some audit records could be truncated in the log. On a single
system, not all audit records are collected. The records might not display in
order. Because each audit record is stamped with the local system's date and
time, you can not rely on the timestamp to construct an audit trail
for several systems.
For more information on audit logs, refer to the following:
Audit Storage
An audit directory holds audit files in binary format. A typical installation uses many
audit directories. The contents of all audit directories comprise the audit trail. Audit records are
stored in audit directories in the following order:
Primary audit directory – A directory where the audit files for a system are placed under normal conditions
Secondary audit directory – A directory where the audit files for a system are placed if the primary audit directory is full or not available
Directory of last resort – A local audit directory that is used if the primary audit directory and all secondary audit directories are not available
The directories are specified in the audit_control file. A directory is not used
until a directory that is earlier in the list is full. For an
annotated audit_control file with a list of directory entries, see Example 30-3.
Examining the Audit Trail
The auditing service provides commands to combine and reduce files from the audit
trail. The auditreduce command can merge audit files from the audit trail. The
command can also filter files to locate particular events. The praudit command reads
the binary files. Options to the praudit command provide output that is suitable for
scripting and for browser display.