freebsd-nq/contrib/openbsm
Pawel Jakub Dawidek 2609222ab4 Merge Capsicum overhaul:
- Capability is no longer separate descriptor type. Now every descriptor
  has set of its own capability rights.

- The cap_new(2) system call is left, but it is no longer documented and
  should not be used in new code.

- The new syscall cap_rights_limit(2) should be used instead of
  cap_new(2), which limits capability rights of the given descriptor
  without creating a new one.

- The cap_getrights(2) syscall is renamed to cap_rights_get(2).

- If CAP_IOCTL capability right is present we can further reduce allowed
  ioctls list with the new cap_ioctls_limit(2) syscall. List of allowed
  ioctls can be retrived with cap_ioctls_get(2) syscall.

- If CAP_FCNTL capability right is present we can further reduce fcntls
  that can be used with the new cap_fcntls_limit(2) syscall and retrive
  them with cap_fcntls_get(2).

- To support ioctl and fcntl white-listing the filedesc structure was
  heavly modified.

- The audit subsystem, kdump and procstat tools were updated to
  recognize new syscalls.

- Capability rights were revised and eventhough I tried hard to provide
  backward API and ABI compatibility there are some incompatible changes
  that are described in detail below:

	CAP_CREATE old behaviour:
	- Allow for openat(2)+O_CREAT.
	- Allow for linkat(2).
	- Allow for symlinkat(2).
	CAP_CREATE new behaviour:
	- Allow for openat(2)+O_CREAT.

	Added CAP_LINKAT:
	- Allow for linkat(2). ABI: Reuses CAP_RMDIR bit.
	- Allow to be target for renameat(2).

	Added CAP_SYMLINKAT:
	- Allow for symlinkat(2).

	Removed CAP_DELETE. Old behaviour:
	- Allow for unlinkat(2) when removing non-directory object.
	- Allow to be source for renameat(2).

	Removed CAP_RMDIR. Old behaviour:
	- Allow for unlinkat(2) when removing directory.

	Added CAP_RENAMEAT:
	- Required for source directory for the renameat(2) syscall.

	Added CAP_UNLINKAT (effectively it replaces CAP_DELETE and CAP_RMDIR):
	- Allow for unlinkat(2) on any object.
	- Required if target of renameat(2) exists and will be removed by this
	  call.

	Removed CAP_MAPEXEC.

	CAP_MMAP old behaviour:
	- Allow for mmap(2) with any combination of PROT_NONE, PROT_READ and
	  PROT_WRITE.
	CAP_MMAP new behaviour:
	- Allow for mmap(2)+PROT_NONE.

	Added CAP_MMAP_R:
	- Allow for mmap(PROT_READ).
	Added CAP_MMAP_W:
	- Allow for mmap(PROT_WRITE).
	Added CAP_MMAP_X:
	- Allow for mmap(PROT_EXEC).
	Added CAP_MMAP_RW:
	- Allow for mmap(PROT_READ | PROT_WRITE).
	Added CAP_MMAP_RX:
	- Allow for mmap(PROT_READ | PROT_EXEC).
	Added CAP_MMAP_WX:
	- Allow for mmap(PROT_WRITE | PROT_EXEC).
	Added CAP_MMAP_RWX:
	- Allow for mmap(PROT_READ | PROT_WRITE | PROT_EXEC).

	Renamed CAP_MKDIR to CAP_MKDIRAT.
	Renamed CAP_MKFIFO to CAP_MKFIFOAT.
	Renamed CAP_MKNODE to CAP_MKNODEAT.

	CAP_READ old behaviour:
	- Allow pread(2).
	- Disallow read(2), readv(2) (if there is no CAP_SEEK).
	CAP_READ new behaviour:
	- Allow read(2), readv(2).
	- Disallow pread(2) (CAP_SEEK was also required).

	CAP_WRITE old behaviour:
	- Allow pwrite(2).
	- Disallow write(2), writev(2) (if there is no CAP_SEEK).
	CAP_WRITE new behaviour:
	- Allow write(2), writev(2).
	- Disallow pwrite(2) (CAP_SEEK was also required).

	Added convinient defines:

	#define	CAP_PREAD		(CAP_SEEK | CAP_READ)
	#define	CAP_PWRITE		(CAP_SEEK | CAP_WRITE)
	#define	CAP_MMAP_R		(CAP_MMAP | CAP_SEEK | CAP_READ)
	#define	CAP_MMAP_W		(CAP_MMAP | CAP_SEEK | CAP_WRITE)
	#define	CAP_MMAP_X		(CAP_MMAP | CAP_SEEK | 0x0000000000000008ULL)
	#define	CAP_MMAP_RW		(CAP_MMAP_R | CAP_MMAP_W)
	#define	CAP_MMAP_RX		(CAP_MMAP_R | CAP_MMAP_X)
	#define	CAP_MMAP_WX		(CAP_MMAP_W | CAP_MMAP_X)
	#define	CAP_MMAP_RWX		(CAP_MMAP_R | CAP_MMAP_W | CAP_MMAP_X)
	#define	CAP_RECV		CAP_READ
	#define	CAP_SEND		CAP_WRITE

	#define	CAP_SOCK_CLIENT \
		(CAP_CONNECT | CAP_GETPEERNAME | CAP_GETSOCKNAME | CAP_GETSOCKOPT | \
		 CAP_PEELOFF | CAP_RECV | CAP_SEND | CAP_SETSOCKOPT | CAP_SHUTDOWN)
	#define	CAP_SOCK_SERVER \
		(CAP_ACCEPT | CAP_BIND | CAP_GETPEERNAME | CAP_GETSOCKNAME | \
		 CAP_GETSOCKOPT | CAP_LISTEN | CAP_PEELOFF | CAP_RECV | CAP_SEND | \
		 CAP_SETSOCKOPT | CAP_SHUTDOWN)

	Added defines for backward API compatibility:

	#define	CAP_MAPEXEC		CAP_MMAP_X
	#define	CAP_DELETE		CAP_UNLINKAT
	#define	CAP_MKDIR		CAP_MKDIRAT
	#define	CAP_RMDIR		CAP_UNLINKAT
	#define	CAP_MKFIFO		CAP_MKFIFOAT
	#define	CAP_MKNOD		CAP_MKNODAT
	#define	CAP_SOCK_ALL		(CAP_SOCK_CLIENT | CAP_SOCK_SERVER)

Sponsored by:	The FreeBSD Foundation
Reviewed by:	Christoph Mallon <christoph.mallon@gmx.de>
Many aspects discussed with:	rwatson, benl, jonathan
ABI compatibility discussed with:	kib
2013-03-02 00:53:12 +00:00
..
bin When we are waiting for new trail files we may have been disconnected and 2013-02-28 01:24:24 +00:00
bsm Merge OpenBSM 1.2-alpha2 from vendor branch to FreeBSD 10-CURRENT; the 2012-12-01 11:58:08 +00:00
compat Merge OpenBSM 1.2-alpha2 from vendor branch to FreeBSD 10-CURRENT; the 2012-12-01 11:58:08 +00:00
config Merge OpenBSM 1.2-alpha3 from the vendor branch to 10-CURRENT; this version 2012-12-15 14:59:00 +00:00
etc Merge Capsicum overhaul: 2013-03-02 00:53:12 +00:00
libauditd Merge OpenBSM 1.2-alpha2 from vendor branch to FreeBSD 10-CURRENT; the 2012-12-01 11:58:08 +00:00
libbsm Merge OpenBSM 1.2-alpha2 from vendor branch to FreeBSD 10-CURRENT; the 2012-12-01 11:58:08 +00:00
m4 Merge OpenBSM 1.2-alpha2 from vendor branch to FreeBSD 10-CURRENT; the 2012-12-01 11:58:08 +00:00
man Merge OpenBSM 1.2-alpha2 from vendor branch to FreeBSD 10-CURRENT; the 2012-12-01 11:58:08 +00:00
modules Merge OpenBSM 1.2-alpha2 from vendor branch to FreeBSD 10-CURRENT; the 2012-12-01 11:58:08 +00:00
sys Merge OpenBSM 1.2-alpha3 from the vendor branch to 10-CURRENT; this version 2012-12-15 14:59:00 +00:00
test Merge OpenBSM 1.2-alpha2 from vendor branch to FreeBSD 10-CURRENT; the 2012-12-01 11:58:08 +00:00
tools Merge OpenBSM 1.2-alpha2 from vendor branch to FreeBSD 10-CURRENT; the 2012-12-01 11:58:08 +00:00
aclocal.m4 Merge OpenBSM 1.2-alpha2 from vendor branch to FreeBSD 10-CURRENT; the 2012-12-01 11:58:08 +00:00
autogen.sh Merge OpenBSM 1.2-alpha2 from vendor branch to FreeBSD 10-CURRENT; the 2012-12-01 11:58:08 +00:00
configure Merge OpenBSM 1.2-alpha3 from the vendor branch to 10-CURRENT; this version 2012-12-15 14:59:00 +00:00
configure.ac Merge OpenBSM 1.2-alpha3 from the vendor branch to 10-CURRENT; this version 2012-12-15 14:59:00 +00:00
CREDITS Merge OpenBSM 1.2-alpha2 from vendor branch to FreeBSD 10-CURRENT; the 2012-12-01 11:58:08 +00:00
FREEBSD-upgrade
INSTALL Merge OpenBSM 1.2-alpha3 from the vendor branch to 10-CURRENT; this version 2012-12-15 14:59:00 +00:00
LICENSE Merge OpenBSM 1.2-alpha2 from vendor branch to FreeBSD 10-CURRENT; the 2012-12-01 11:58:08 +00:00
Makefile.am Merge OpenBSM 1.2-alpha2 from vendor branch to FreeBSD 10-CURRENT; the 2012-12-01 11:58:08 +00:00
Makefile.in Merge OpenBSM 1.2-alpha2 from vendor branch to FreeBSD 10-CURRENT; the 2012-12-01 11:58:08 +00:00
NEWS Merge OpenBSM 1.2-alpha3 from the vendor branch to 10-CURRENT; this version 2012-12-15 14:59:00 +00:00
README Merge OpenBSM 1.2-alpha2 from vendor branch to FreeBSD 10-CURRENT; the 2012-12-01 11:58:08 +00:00
TODO Merge OpenBSM 1.2-alpha2 from vendor branch to FreeBSD 10-CURRENT; the 2012-12-01 11:58:08 +00:00
VERSION Merge OpenBSM 1.2-alpha3 from the vendor branch to 10-CURRENT; this version 2012-12-15 14:59:00 +00:00

OpenBSM 1.2a2

  Introduction

OpenBSM is an open source implementation of Sun's BSM event auditing file
format and API.  Originally created for Apple Computer by McAfee Research,
OpenBSM is now maintained by volunteers and through the generous contribution
of several organizations.

OpenBSM includes several command line tools, including auditreduce(8) and
praudit(8) for reducing and printing audit trails, as well as the libbsm(3)
library to manage configuration files, generate audit records, and parse and
print audit trils.

Coupled with a kernel audit implementation, OpenBSM can be used to maintain
system audit streams, and is a foundation for a full audit-enabled system.
Portions of OpenBSM, including include files and token-building routines, are
reusable in a kernel audit implementation, and may be found in the FreeBSD
and Mac OS X kernels.

  Contents

OpenBSM consists of several directories:

    bin/           Audit-related command line tools
    bsm/           Library include files for BSM
    compat/        Compatibility code to build on various operating systems
    etc/           Sample /etc/security configuration files
    libauditd      Common audit management functions for auditd and launchd
    libbsm/        Implementation of BSM library interfaces and man pages
    man/           System call and configuration file man pages
    modules/       Directory for auditfilterd module source
    sys/           System include files for BSM
    test/          Test token sets and geneneration program
    tools/         Tool directory, including audump to dump databases

The following programs are included with OpenBSM:

    audit          Command line audit control tool
    auditd         Audit management daemon
    auditdistd     Audit trail distribution daemon
    auditfilterd   Experimental event monitoring framework
    auditreduce    Audit trail reduction tool
    audump         Debugging tool to parse and print audit databases
    praudit        Tool to print audit trails

  Build and Installation

Please see the file INSTALL for build and installation instructions.

  Contributions

The TrustedBSD Project would appreciate the contribution of bug fixes, 
enhancements, etc, under identically or substantially similar licenses to 
those present on the remainder of the OpenBSM source code.  Please see the
file CREDITS to learn more about who has contributed to the project.

  Location

Information on OpenBSM may be found on the OpenBSM home page:

    http://www.OpenBSM.org/

Information on TrustedBSD may be found on the TrustedBSD home page:

    http://www.TrustedBSD.org/

$P4: //depot/projects/trustedbsd/openbsm/README#41 $