GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  AUDITPIPE (4)

NAME

auditpipe - pseudo-device for live audit event tracking

CONTENTS

Synopsis
Description
     Audit Pipe Queue Ioctls
     Audit Pipe Preselection Mode Ioctls
     Audit Pipe Local Preselection Mode Ioctls
Examples
See Also
History
Authors
Bugs

SYNOPSIS


.Cd options AUDIT

DESCRIPTION

While audit trail files generated with audit(4) and maintained by auditd(8) provide a reliable long-term store for audit log information, current log files are owned by the audit daemon until terminated making them somewhat unwieldy for live monitoring applications such as host-based intrusion detection. For example, the log may be cycled and new records written to a new file without notice to applications that may be accessing the file.

The audit facility provides an audit pipe facility for applications requiring direct access to live BSM audit data for the purposes of real-time monitoring. Audit pipes are available via a clonable special device, /dev/auditpipe, subject to the permissions on the device node, and provide a "tee" of the audit event stream. As the device is clonable, more than one instance of the device may be opened at a time; each device instance will provide independent access to all records.

The audit pipe device provides discrete BSM audit records; if the read buffer passed by the application is too small to hold the next record in the sequence, it will be dropped. Unlike audit data written to the audit trail, the reliability of record delivery is not guaranteed. In particular, when an audit pipe queue fills, records will be dropped. Audit pipe devices are blocking by default, but support non-blocking I/O, asynchronous I/O using SIGIO, and polled operation via select(2) and poll(2).

Applications may choose to track the global audit trail, or configure local preselection parameters independent of the global audit trail parameters.

    Audit Pipe Queue Ioctls

The following ioctls retrieve and set various audit pipe record queue properties:
AUDITPIPE_GET_QLEN Query the current number of records available for reading on the pipe.
AUDITPIPE_GET_QLIMIT Retrieve the current maximum number of records that may be queued for reading on the pipe.
AUDITPIPE_SET_QLIMIT Set the current maximum number of records that may be queued for reading on the pipe. The new limit must fall between the queue limit minimum and queue limit maximum queryable using the following two ioctls.
AUDITPIPE_GET_QLIMIT_MIN Query the lowest possible maximum number of records that may be queued for reading on the pipe.
AUDITPIPE_GET_QLIMIT_MAX Query the highest possible maximum number of records that may be queued for reading on the pipe.
AUDITPIPE_FLUSH Flush all outstanding records on the audit pipe; useful after setting initial preselection properties to delete records queued during the configuration process which may not match the interests of the user process.
AUDITPIPE_GET_MAXAUDITDATA
  Query the maximum size of an audit record, which is a useful minimum size for a user space buffer intended to hold audit records read from the audit pipe.

    Audit Pipe Preselection Mode Ioctls

By default, the audit pipe facility configures pipes to present records matched by the system-wide audit trail, configured by auditd(8). However, the preselection mechanism for audit pipes can be configured using alternative criteria, including pipe-local flags and naflags settings, as well as auid-specific selection masks. This allows applications to track events not captured in the global audit trail, as well as limit records presented to those of specific interest to the application.

The following ioctls configure the preselection mode on an audit pipe:
AUDITPIPE_GET_PRESELECT_MODE
  Return the current preselect mode on the audit pipe. The ioctl argument should be of type
.Vt int .
AUDITPIPE_SET_PRESELECT_MODE
  Set the current preselection mode on the audit pipe. The ioctl argument should be of type
.Vt int .

Possible preselection mode values are:
AUDITPIPE_PRESELECT_MODE_TRAIL
  Use the global audit trail preselection parameters to select records for the audit pipe.
AUDITPIPE_PRESELECT_MODE_LOCAL
  Use local audit pipe preselection; this model is similar to the global audit trail configuration model, consisting of global flags and naflags parameters, as well as a set of per-auid masks. These parameters are configured using further ioctls.

After changing the audit pipe preselection mode, records selected under earlier preselection configuration may still be in the audit pipe queue. The application may flush the current record queue after changing the configuration to remove possibly undesired records.

    Audit Pipe Local Preselection Mode Ioctls

The following ioctls configure the preselection parameters used when an audit pipe is configured for the AUDITPIPE_PRESELECT_MODE_LOCAL preselection mode.
AUDITPIPE_GET_PRESELECT_FLAGS Retrieve the current default preselection flags for attributable events on the pipe. These flags correspond to the flags field in audit_control(5). The ioctl argument should be of type
.Vt u_int .
AUDITPIPE_SET_PRESELECT_FLAGS Set the current default preselection flags for attributable events on the pipe. These flags correspond to the flags field in audit_control(5). The ioctl argument should be of type
.Vt u_int .
AUDITPIPE_GET_PRESELECT_NAFLAGS
  Retrieve the current default preselection flags for non-attributable events on the pipe. These flags correspond to the naflags field in audit_control(5). The ioctl argument should be of type
.Vt u_int .
AUDITPIPE_SET_PRESELECT_NAFLAGS
  Set the current default preselection flags for non-attributable events on the pipe. These flags correspond to the naflags field in audit_control(5). The ioctl argument should be of type
.Vt u_int .
AUDITPIPE_GET_PRESELECT_AUID Query the current preselection masks for a specific auid on the pipe. The ioctl argument should be of type
.Vt struct auditpipe_ioctl_preselect . The auid to query is specified via the ap_auid field of type
.Vt au_id_t ; the mask will be returned via ap_mask of type
.Vt au_mask_t .
AUDITPIPE_SET_PRESELECT_AUID Set the current preselection masks for a specific auid on the pipe. Arguments are identical to AUDITPIPE_GET_PRESELECT_AUID, except that the caller should properly initialize the ap_mask field to hold the desired preselection mask.
AUDITPIPE_DELETE_PRESELECT_AUID
  Delete the current preselection mask for a specific auid on the pipe. Once called, events associated with the specified auid will use the default flags mask. The ioctl argument should be of type
.Vt au_id_t .
AUDITPIPE_FLUSH_PRESELECT_AUID Delete all auid specific preselection specifications.

EXAMPLES

The praudit(1) utility may be directly executed on /dev/auditpipe to review the default audit trail.

SEE ALSO

poll(2), select(2), audit(4), audit_control(5), audit(8), auditd(8)

HISTORY

The OpenBSM implementation was created by McAfee Research, the security division of McAfee Inc., under contract to Apple Computer Inc. in 2004. It was subsequently adopted by the TrustedBSD Project as the foundation for the OpenBSM distribution.

Support for kernel audit first appeared in
.Fx 6.2 .

AUTHORS

The audit pipe facility was designed and implemented by
.An Robert Watson Aq rwatson@FreeBSD.org .

The Basic Security Module (BSM) interface to audit records and audit event stream format were defined by Sun Microsystems.

BUGS

See the audit(4) manual page for information on audit-related bugs and limitations.

The configurable preselection mechanism mirrors the selection model present for the global audit trail. It might be desirable to provided a more flexible selection model.

The per-pipe audit event queue is fifo, with drops occurring if either the user thread provides in sufficient for the record on the queue head, or on enqueue if there is insufficient room. It might be desirable to support partial reads of records, which would be more compatible with buffered I/O as implemented in system libraries, and to allow applications to select which records are dropped, possibly in the style of preselection.

Search for    or go to Top of page |  Section 4 |  Main Index


Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.