auditctl man page on SuSE

Man page or keyword search:  
man Server   14857 pages
apropos Keyword Search (all sections)
Output format
SuSE logo
[printable version]

AUDITCTL:(8)		System Administration Utilities		  AUDITCTL:(8)

NAME
       auditctl - a utility to assist controlling the kernel's audit system

SYNOPSIS
       auditctl [options]

DESCRIPTION
       The  auditctl  program is used to control the behavior, get status, and
       add or delete rules into the 2.6 kernel's audit system.

OPTIONS
       -b backlog
	      Set max number of	 outstanding  audit  buffers  allowed  (Kernel
	      Default=64)  If  all  buffers are full, the failure flag is con‐
	      sulted by the kernel for action.

       -e [0..2]
	      Set enabled flag. When 0 is passed, this can be used  to	tempo‐
	      rarily  disable  auditing.  When	1 is passed as an argument, it
	      will enable auditing. To lock the audit configuration so that it
	      can't be changed, pass a 2 as the argument. Locking the configu‐
	      ration is intended to be the last	 command  in  audit.rules  for
	      anyone  wishing this feature to be active. Any attempt to change
	      the configuration in this mode will be audited and  denied.  The
	      configuration can only be changed by rebooting the machine.

       -f [0..2]
	      Set failure flag 0=silent 1=printk 2=panic. This option lets you
	      determine how you want the kernel	 to  handle  critical  errors.
	      Example conditions where this flag is consulted includes: trans‐
	      mission  errors  to  userspace  audit  daemon,   backlog	 limit
	      exceeded,	 out  of  kernel  memory, and rate limit exceeded. The
	      default value is 1. Secure environments will  probably  want  to
	      set this to 2.

       -h     Help

       -i     Ignore errors when reading rules from a file

       -l     List all rules 1 per line. This can take a key option (-k), too.

       -k key Set  a  filter  key on an audit rule. The filter key is an arbi‐
	      trary string of text that can be up to 31	 bytes	long.  It  can
	      uniquely	identify the audit records produced by a rule. Typical
	      use is for when you have several rules that together  satisfy  a
	      security	requirement.  The  key	value  can be searched on with
	      ausearch so that no matter which rule triggered the  event,  you
	      can  find	 its  results.	The key can also be used on delete all
	      (-D) and list rules (-l) to select rules with  a	specific  key.
	      You  may have more than one key on a rule if you want to be able
	      to search logged events in multiple ways or if you have an  aud‐
	      ispd plugin that uses a key to aid its analysis.

       -m text
	      Send  a  user space message into the audit system. This can only
	      be done if you have  CAP_AUDIT_WRITE  capability	(normally  the
	      root user has this). The resulting event will be the USER type.

       -p [r|w|x|a]
	      Describe	the  permission	 access	 type that a file system watch
	      will trigger on. r=read, w=write, x=execute, a=attribute change.
	      These  permissions  are  not  the standard file permissions, but
	      rather the kind of syscall that would do this kind of thing. The
	      read & write syscalls are omitted from this set since they would
	      overwhelm the logs. But rather for reads	or  writes,  the  open
	      flags are looked at to see what permission was requested.

       -q mount-point,subtree
	      If  you  have an existing directory watch and bind or move mount
	      another subtree in the watched subtree, you  need	 to  tell  the
	      kernel  to  make	the  subtree  being  mounted equivalent to the
	      directory being watched. If the subtree is  already  mounted  at
	      the time the directory watch is issued, the subtree is automati‐
	      cally tagged for watching. Please note the comma separating  the
	      two values. Omitting it will cause errors.

       -r rate
	      Set limit in messages/sec (0=none). If this rate is non-zero and
	      is exceeded, the failure flag is consulted  by  the  kernel  for
	      action. The default value is 0.

       -R file
	      Read  rules from a file. The rules must be 1 per line and in the
	      order that they are to be executed in. The  rule	file  must  be
	      owned  by	 root  and  not	 readable by other users or it will be
	      rejected. The rule file may have comments embedded  by  starting
	      the  line	 with a '#' character. Rules that are read from a file
	      are identical to what you would type on a	 command  line	except
	      they  are	 not  preceded	by auditctl (since auditctl is the one
	      executing the file).

       -s     Report status. Note that a pid of 0  indicates  that  the	 audit
	      daemon is not running.

       -t     Trim the subtrees after a mount command.

       -a list,action
	      Append  rule  to	the  end  of list with action. Please note the
	      comma separating the two values. Omitting it will cause  errors.
	      The following describes the valid list names:

	      task	  Add  a  rule to the per task list. This rule list is
			  used only at the time a  task	 is  created  --  when
			  fork()  or  clone()  are  called by the parent task.
			  When using this list, you  should  only  use	fields
			  that	are  known  at task creation time, such as the
			  uid, gid, etc.

	      entry	  Add a rule to the syscall entry list. This  list  is
			  used	upon entry to a system call to determine if an
			  audit event should be created.

	      exit	  Add a rule to the syscall exit list.	This  list  is
			  used upon exit from a system call to determine if an
			  audit event should be created.

	      user	  Add a rule to the user  message  filter  list.  This
			  list	is  used by the kernel to filter events origi‐
			  nating in user space before  relaying	 them  to  the
			  audit	 daemon.  It  should  be  noted	 that the only
			  fields that are valid are: uid, auid, gid, and  pid.
			  All other fields will be treated as non-matching.

	      exclude	  Add  a rule to the event type exclusion filter list.
			  This list is used to filter events that you  do  not
			  want	to see. For example, if you do not want to see
			  any avc messages,  you  would	 using	this  list  to
			  record  that.	 The message type that you do not wish
			  to see is given with the msgtype field.

       The following describes the valid actions for the rule:

	      never	  No audit records will be generated. This can be used
			  to  suppress	event generation. In general, you want
			  suppressions at the top of the list instead  of  the
			  bottom.  This	 is  because the event triggers on the
			  first matching rule.

	      always	  Allocate an audit context,  always  fill  it	in  at
			  syscall entry time, and always write out a record at
			  syscall exit time.

       -A list,action
	      Add rule to the beginning list with action.

       -d list,action
	      Delete rule from list with action. The rule is deleted  only  if
	      it  exactly  matches  syscall  name(s)  and every field name and
	      value.

       -D     Delete all rules and watches. This can take a key	 option	 (-k),
	      too.

       -S [Syscall name or number|all]
	      Any  syscall name or number may be used. The word 'all' may also
	      be used.	If the given syscall is made by a program, then	 start
	      an  audit	 record.  If  a	 field rule is given and no syscall is
	      specified, it will default to all syscalls. You may also specify
	      multiple	syscalls in the same rule by using multiple -S options
	      in the same rule. Doing  so  improves  performance  since	 fewer
	      rules need to be evaluated. If you are on a bi-arch system, like
	      x86_64, you should be aware that auditctl simply takes the text,
	      looks  it	 up  for  the native arch (in this case b64) and sends
	      that rule to the kernel. If there are no additional arch	direc‐
	      tives, IT WILL APPLY TO BOTH 32 & 64 BIT SYSCALLS. This can have
	      undesirable effects since there is no guarantee that, for	 exam‐
	      ple,  the open syscall has the same number on both 32 and 64 bit
	      interfaces. You will likely want to control  this	 and  write  2
	      rules,  one with arch equal to b32 and one with b64 to make sure
	      the kernel finds the events that you intend. See the arch	 field
	      discussion for more info.

       -F [n=v | n!=v | n<v | n>v | n<=v | n>=v | n&v | n&=v]
	      Build  a	rule field: name, operation, value. You may have up to
	      64 fields passed on a single command line. Each one  must	 start
	      with -F. Each field equation is anded with each other to trigger
	      an audit record. There are 8 operators supported	-  equal,  not
	      equal,  less than, greater than, less than or equal, and greater
	      than or equal, bit mask, and bit	test  respectively.  Bit  test
	      will  "and"  the	values and check that they are equal, bit mask
	      just "ands" the values. Fields that take a user ID  may  instead
	      have  the user's name; the program will convert the name to user
	      ID. The same is true of group names. Valid fields are:

	      a0, a1, a2, a3
			  Respectively, the first 4 arguments  to  a  syscall.
			  Note	that  string arguments are not supported. This
			  is because the kernel is passed  a  pointer  to  the
			  string. Triggering on a pointer address value is not
			  likely to work. So, when using this, you should only
			  use  on  numeric  values.  This is most likely to be
			  used on platforms that multiplex socket or IPC oper‐
			  ations.

	      arch	  The CPU architecture of the syscall. The arch can be
			  found doing 'uname -m'. If you do not know the  arch
			  of  your  machine  but  you  want  to use the 32 bit
			  syscall table and your machine supports 32 bit,  you
			  can  also  use b32 for the arch. The same applies to
			  the 64 bit syscall table, you can use b64.  In  this
			  way,	you  can  write	 rules	that are somewhat arch
			  independent because the family  type	will  be  auto
			  detected. However, syscalls can be arch specific and
			  what is available on x86_64, may not be available on
			  ppc. The arch directive should precede the -S option
			  so that auditctl knows which internal table  to  use
			  to look up the syscall numbers.

	      auid	  The  original	 ID  the  user	logged in with. Its an
			  abbreviation of audit uid. Sometimes its referred to
			  as loginuid. Either the text or number may be used.

	      devmajor	  Device Major Number

	      devminor	  Device Minor Number

	      dir	  Full	Path  of Directory to watch. This will place a
			  recursive watch on the directory and its whole  sub‐
			  tree. Should only be used on exit list. See "-w".

	      egid	  Effective Group ID

	      euid	  Effective User ID

	      exit	  Exit	value  from  a syscall. If the exit code is an
			  errno, you may use the text representation, too.

	      fsgid	  Filesystem Group ID

	      fsuid	  Filesystem User ID

	      filetype	  The target file's type. Can  be  either  file,  dir,
			  socket, symlink, char, block, or fifo.

	      gid	  Group ID

	      inode	  Inode Number

	      key	  This	is  another  way  of setting a filter key. See
			  discussion above for -k option.

	      msgtype	  This is used to match the event's  record  type.  It
			  should only be used on the exclude filter list.

	      obj_user	  Resource's SE Linux User

	      obj_role	  Resource's SE Linux Role

	      obj_type	  Resource's SE Linux Type

	      obj_lev_low Resource's SE Linux Low Level

	      obj_lev_high
			  Resource's SE Linux High Level

	      path	  Full	Path  of File to watch. It can only be used on
			  exit list.

	      perm	  Permission filter for file operations. See "-p".  It
			  can  only  be	 used  on  exit list. You can use this
			  without specifying a syscall	and  the  kernel  will
			  select  the  syscalls	 that  satisfy the permissions
			  being requested.

	      pers	  OS Personality Number

	      pid	  Process ID

	      ppid	  Parent's Process ID

	      subj_user	  Program's SE Linux User

	      subj_role	  Program's SE Linux Role

	      subj_type	  Program's SE Linux Type

	      subj_sen	  Program's SE Linux Sensitivity

	      subj_clr	  Program's SE Linux Clearance

	      sgid	  Saved Group ID. See getresgid(2) man page.

	      success	  If the exit value is >= 0 this is true/yes otherwise
			  its  false/no.  When	writing	 a  rule,  use a 1 for
			  true/yes and a 0 for false/no

	      suid	  Saved User ID. See getresuid(2) man page.

	      uid	  User ID

       -w path
	      Insert a watch for the file system object at  path.  You	cannot
	      insert a watch to the top level directory. This is prohibited by
	      the kernel. Wildcards are not supported either and will generate
	      a	 warning.  The	way that watches work is by tracking the inode
	      internally. If you place a watch on a  file,  its	 the  same  as
	      using the -F path option on a syscall rule. If you place a watch
	      on a directory, its the same as using the -F  dir	 option	 on  a
	      syscall  rule.  The  -w form of writing watches is for backwards
	      compatibility and the syscall based  form	 is  more  expressive.
	      Unlike  most  syscall auditing rules, watches do not impact per‐
	      formance based on the number of rules sent to  the  kernel.  The
	      only  valid options when using a watch are the -p and -k. If you
	      need to anything fancy like audit a specific  user  accessing  a
	      file,  then  use	the syscall auditing form with the path or dir
	      fields. See the EXAMPLES section for an  example	of  converting
	      one form to another.

       -W path
	      Remove a watch for the file system object at path. The rule must
	      match exactly. See -d discussion for more info.

PERFORMANCE TIPS
       Syscall rules get evaluated for each syscall for every program. If  you
       have 10 syscall rules, every program on your system will delay during a
       syscall while the audit system evaluates each rule.  Too	 many  syscall
       rules will hurt performance. Try to combine as many as you can whenever
       the filter, action, key, and fields are identical. For example:

       auditctl -a exit,always -S open -F success=0
       auditctl -a exit,always -S truncate -F success=0

       could be re-written as one rule:

       auditctl -a exit,always -S open -S truncate -F success=0

       Also, try to use file system auditing wherever practical. This improves
       performance.  For  example,  if	you were wanting to capture all failed
       opens & truncates like above, but were only concerned  about  files  in
       /etc  and  didn't  care	about  /usr or /sbin, its possible to use this
       rule:

       auditctl -a exit,always -S open -S truncate -F dir=/etc -F success=0

       This will be higher performance since the kernel will not  evaluate  it
       each  and  every syscall. It will be handled by the filesystem auditing
       code and only checked on filesystem related syscalls.

EXAMPLES
       To see all syscalls made by a specific program:

       auditctl -a exit,always -S all -F pid=1005

       To see files opened by a specific user:

       auditctl -a exit,always -S open -F auid=510

       To see unsuccessful open calls:

       auditctl -a exit,always -S open -F success=0

       To watch a file for changes (2 ways to express):

       auditctl -w /etc/shadow -p wa
       auditctl -a exit,always -F path=/etc/shadow -F perm=wa

       To recursively watch a directory for changes (2 ways to express):

       auditctl -w /etc/ -p wa
       auditctl -a exit,always -F dir=/etc/ -F perm=wa

FILES
       /etc/audit/audit.rules

SEE ALSO
       audit.rules(7), auditd(8).

AUTHOR
       Steve Grubb

Red Hat				   Feb 2011			  AUDITCTL:(8)
[top]

List of man pages available for SuSE

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net