]> git.pld-linux.org Git - packages/audit.git/blob - audit.h
- updated to 1.1.4
[packages/audit.git] / audit.h
1 /* audit.h -- Auditing support
2  *
3  * Copyright 2003-2004 Red Hat Inc., Durham, North Carolina.
4  * All Rights Reserved.
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  *
20  * Written by Rickard E. (Rik) Faith <faith@redhat.com>
21  *
22  */
23
24 #ifndef _LINUX_AUDIT_H_
25 #define _LINUX_AUDIT_H_
26
27 #include <elf.h>
28
29 /* The netlink messages for the audit system is divided into blocks:
30  * 1000 - 1099 are for commanding the audit system
31  * 1100 - 1199 user space trusted application messages
32  * 1200 - 1299 messages internal to the audit daemon
33  * 1300 - 1399 audit event messages
34  * 1400 - 1499 SE Linux use
35  * 1500 - 1999 future use
36  * 2000 is for otherwise unclassified kernel audit messages
37  *
38  * Messages from 1000-1199 are bi-directional. 1200-1299 are exclusively user
39  * space. Anything over that is kernel --> user space communication.
40  */
41 #define AUDIT_GET               1000    /* Get status */
42 #define AUDIT_SET               1001    /* Set status (enable/disable/auditd) */
43 #define AUDIT_LIST              1002    /* List syscall filtering rules */
44 #define AUDIT_ADD               1003    /* Add syscall filtering rule */
45 #define AUDIT_DEL               1004    /* Delete syscall filtering rule */
46 #define AUDIT_USER              1005    /* Message from userspace -- deprecated */
47 #define AUDIT_LOGIN             1006    /* Define the login id and information */
48 #define AUDIT_WATCH_INS         1007    /* Insert file/dir watch entry */
49 #define AUDIT_WATCH_REM         1008    /* Remove file/dir watch entry */
50 #define AUDIT_WATCH_LIST        1009    /* List all file/dir watches */
51 #define AUDIT_SIGNAL_INFO       1010    /* Get info about sender of signal to auditd */
52
53 #define AUDIT_FIRST_USER_MSG    1100    /* Userspace messages uninteresting to kernel */
54 #define AUDIT_LAST_USER_MSG     1199
55  
56 #define AUDIT_DAEMON_START      1200    /* Daemon startup record */
57 #define AUDIT_DAEMON_END        1201    /* Daemon normal stop record */
58 #define AUDIT_DAEMON_ABORT      1202    /* Daemon error stop record */
59 #define AUDIT_DAEMON_CONFIG     1203    /* Daemon config change */
60
61 #define AUDIT_SYSCALL           1300    /* Syscall event */
62 #define AUDIT_FS_WATCH          1301    /* Filesystem watch event */
63 #define AUDIT_PATH              1302    /* Filname path information */
64 #define AUDIT_IPC               1303    /* IPC record */
65 #define AUDIT_SOCKETCALL        1304    /* sys_socketcall arguments */
66 #define AUDIT_CONFIG_CHANGE     1305    /* Audit system configuration change */
67 #define AUDIT_SOCKADDR          1306    /* sockaddr copied as syscall arg */
68
69 #define AUDIT_AVC               1400    /* SE Linux avc denial or grant */
70 #define AUDIT_SELINUX_ERR       1401    /* Internal SE Linux Errors */
71 #define AUDIT_AVC_PATH          1402    /* dentry, vfsmount pair from avc */
72
73 #define AUDIT_KERNEL            2000    /* Asynchronous audit record. NOT A REQUEST. */
74
75 /* Rule flags */
76 #define AUDIT_PER_TASK 0x01     /* Apply rule at task creation (not syscall) */
77 #define AUDIT_AT_ENTRY 0x02     /* Apply rule at syscall entry */
78 #define AUDIT_AT_EXIT  0x04     /* Apply rule at syscall exit */
79 #define AUDIT_PREPEND  0x10     /* Prepend to front of list */
80
81 /* Rule actions */
82 #define AUDIT_NEVER    0        /* Do not build context if rule matches */
83 #define AUDIT_POSSIBLE 1        /* Build context if rule matches  */
84 #define AUDIT_ALWAYS   2        /* Generate audit record if rule matches */
85
86 /* Rule structure sizes -- if these change, different AUDIT_ADD and
87  * AUDIT_LIST commands must be implemented. */
88 #define AUDIT_MAX_FIELDS   64
89 #define AUDIT_BITMASK_SIZE 64
90 #define AUDIT_WORD(nr) ((uint32_t)((nr)/32))
91 #define AUDIT_BIT(nr)  (1 << ((nr) - AUDIT_WORD(nr)*32))
92
93 /* Rule fields */
94                                 /* These are useful when checking the
95                                  * task structure at task creation time
96                                  * (AUDIT_PER_TASK).  */
97 #define AUDIT_PID       0
98 #define AUDIT_UID       1
99 #define AUDIT_EUID      2
100 #define AUDIT_SUID      3
101 #define AUDIT_FSUID     4
102 #define AUDIT_GID       5
103 #define AUDIT_EGID      6
104 #define AUDIT_SGID      7
105 #define AUDIT_FSGID     8
106 #define AUDIT_LOGINUID  9
107 #define AUDIT_PERS      10
108 #define AUDIT_ARCH      11
109
110                                 /* These are ONLY useful when checking
111                                  * at syscall exit time (AUDIT_AT_EXIT). */
112 #define AUDIT_DEVMAJOR  100
113 #define AUDIT_DEVMINOR  101
114 #define AUDIT_INODE     102
115 #define AUDIT_EXIT      103
116 #define AUDIT_SUCCESS   104     /* exit >= 0; value ignored */
117
118 #define AUDIT_ARG0      200
119 #define AUDIT_ARG1      (AUDIT_ARG0+1)
120 #define AUDIT_ARG2      (AUDIT_ARG0+2)
121 #define AUDIT_ARG3      (AUDIT_ARG0+3)
122
123 #define AUDIT_NEGATE    0x80000000
124
125
126 /* Status symbols */
127                                 /* Mask values */
128 #define AUDIT_STATUS_ENABLED            0x0001
129 #define AUDIT_STATUS_FAILURE            0x0002
130 #define AUDIT_STATUS_PID                0x0004
131 #define AUDIT_STATUS_RATE_LIMIT         0x0008
132 #define AUDIT_STATUS_BACKLOG_LIMIT      0x0010
133                                 /* Failure-to-log actions */
134 #define AUDIT_FAIL_SILENT       0
135 #define AUDIT_FAIL_PRINTK       1
136 #define AUDIT_FAIL_PANIC        2
137
138 /* distinguish syscall tables */
139 #define __AUDIT_ARCH_64BIT 0x80000000
140 #define __AUDIT_ARCH_LE    0x40000000
141 #define AUDIT_ARCH_ALPHA        (EM_ALPHA|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
142 #define AUDIT_ARCH_ARM          (EM_ARM|__AUDIT_ARCH_LE)
143 #define AUDIT_ARCH_ARMEB        (EM_ARM)
144 #define AUDIT_ARCH_CRIS         (EM_CRIS|__AUDIT_ARCH_LE)
145 #define AUDIT_ARCH_FRV          (EM_FRV)
146 #define AUDIT_ARCH_H8300        (EM_H8_300)
147 #define AUDIT_ARCH_I386         (EM_386|__AUDIT_ARCH_LE)
148 #define AUDIT_ARCH_IA64         (EM_IA_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
149 #define AUDIT_ARCH_M32R         (EM_M32R)
150 #define AUDIT_ARCH_M68K         (EM_68K)
151 #define AUDIT_ARCH_MIPS         (EM_MIPS)
152 #define AUDIT_ARCH_MIPSEL       (EM_MIPS|__AUDIT_ARCH_LE)
153 #define AUDIT_ARCH_MIPS64       (EM_MIPS|__AUDIT_ARCH_64BIT)
154 #define AUDIT_ARCH_MIPSEL64     (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
155 #define AUDIT_ARCH_PARISC       (EM_PARISC)
156 #define AUDIT_ARCH_PARISC64     (EM_PARISC|__AUDIT_ARCH_64BIT)
157 #define AUDIT_ARCH_PPC          (EM_PPC)
158 #define AUDIT_ARCH_PPC64        (EM_PPC64|__AUDIT_ARCH_64BIT)
159 #define AUDIT_ARCH_S390         (EM_S390)
160 #define AUDIT_ARCH_S390X        (EM_S390|__AUDIT_ARCH_64BIT)
161 #define AUDIT_ARCH_SH           (EM_SH)
162 #define AUDIT_ARCH_SHEL         (EM_SH|__AUDIT_ARCH_LE)
163 #define AUDIT_ARCH_SH64         (EM_SH|__AUDIT_ARCH_64BIT)
164 #define AUDIT_ARCH_SHEL64       (EM_SH|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
165 #define AUDIT_ARCH_SPARC        (EM_SPARC)
166 #define AUDIT_ARCH_SPARC64      (EM_SPARC64|__AUDIT_ARCH_64BIT)
167 #define AUDIT_ARCH_V850         (EM_V850|__AUDIT_ARCH_LE)
168 #define AUDIT_ARCH_X86_64       (EM_X86_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
169
170 struct audit_status {
171         uint32_t                mask;           /* Bit mask for valid entries */
172         uint32_t                enabled;        /* 1 = enabled, 0 = disabled */
173         uint32_t                failure;        /* Failure-to-log action */
174         uint32_t                pid;            /* pid of auditd process */
175         uint32_t                rate_limit;     /* messages rate limit (per second) */
176         uint32_t                backlog_limit;  /* waiting messages limit */
177         uint32_t                lost;           /* messages lost */
178         uint32_t                backlog;        /* messages waiting in queue */
179 };
180
181 struct audit_rule {             /* for AUDIT_LIST, AUDIT_ADD, and AUDIT_DEL */
182         uint32_t                flags;  /* AUDIT_PER_{TASK,CALL}, AUDIT_PREPEND */
183         uint32_t                action; /* AUDIT_NEVER, AUDIT_POSSIBLE, AUDIT_ALWAYS */
184         uint32_t                field_count;
185         uint32_t                mask[AUDIT_BITMASK_SIZE];
186         uint32_t                fields[AUDIT_MAX_FIELDS];
187         uint32_t                values[AUDIT_MAX_FIELDS];
188 };
189
190 #endif /* _LINUX_AUDIT_H_ */
This page took 0.065326 seconds and 3 git commands to generate.