On Fri, 22 Sep 2006, Joerg Pernfuss wrote:
On Sun, 17 Sep 2006 09:19:03 +0100 (BST)
Robert Watson <[EMAIL PROTECTED]> wrote:
I've just comitted a fix to syscalls.master and regenerated the remaining
system call files, which should correct the auditctl: Invalid Argument
error being returned by auditd. In short order, this fix should be on the
cvsup mirrors -- please let me know if it resolves the problem you were
experiencing.
Thank you for that quick fix Robert, but sadly I am still somewhat at a
loss. The auditd does run now, but does not write back any audit data at
all. I have run at least three full buildworlds during the time you see
below, set flags, deleted things, logged in, logged out, logged in via ssh
to the external interface, ssh'ed to localhost. No gain. /var/log/audit
looks like this:
<snip>
My audit_control file:
dir:/var/audit
flags:all
minfree:20
naflags:lo
My audit_user file:
root:all:no
elessar:all:no
This is somewhat troubling -- I have RELENG_6 audit running on a number of
boxes without problems. Your configuration looks reasonable, though. There
are a few things we can try. The first thing to look at is whether the audit
library and commands are having trouble parsing your configuration files for
some reason -- maybe there is extra white space, and we need to increase
tolerance of unexpected white space, for example. There's a tool in
src/contrib/openbsm/tools called audump, which parses the configuration files
and then spits out what it thinks it found to stdout. It's not built by
default, but it can be quite useful when debugging. You can build it by doing
the following in the tools directory:
-Wall -g -o /tmp/audump audump.c -lbsm
Then, as root, run:
/tmp/audump control
I believe there's a bug in audump's user database support currently, but at
the very least that will tell us if the control file is being properly parsed.
Ideally, the output will very much resemble your configuration file -- if
there's a significant difference, that could be the source of this problem.
Right now the id(1) command in -STABLE doesn't print audit properties of the
process, but I've attached a patch that causes it to do so when "id -a" is
run. If you could apply this patch and run "id -a" as root, that would be
helpful.
Robert N M Watson
Computer Laboratory
University of Cambridge
Index: Makefile
===================================================================
RCS file: /home/ncvs/src/usr.bin/id/Makefile,v
retrieving revision 1.11
diff -u -r1.11 Makefile
--- Makefile 19 May 2004 21:06:36 -0000 1.11
+++ Makefile 23 Sep 2006 12:23:40 -0000
@@ -1,10 +1,18 @@
# @(#)Makefile 8.1 (Berkeley) 6/6/93
# $FreeBSD: src/usr.bin/id/Makefile,v 1.11 2004/05/19 21:06:36 dwmalone Exp $
+.include <bsd.own.mk>
+
PROG= id
WARNS?= 6
LINKS= ${BINDIR}/id ${BINDIR}/groups
LINKS+= ${BINDIR}/id ${BINDIR}/whoami
MAN= id.1 groups.1 whoami.1
+.if ${MK_AUDIT} != "no"
+CFLAGS+= -DUSE_BSM_AUDIT
+DPADD+= ${LIBBSM}
+LDADD+= -lbsm
+.endif
+
.include <bsd.prog.mk>
Index: id.1
===================================================================
RCS file: /home/ncvs/src/usr.bin/id/id.1,v
retrieving revision 1.15
diff -u -r1.15 id.1
--- id.1 29 Apr 2005 08:37:52 -0000 1.15
+++ id.1 23 Sep 2006 12:30:46 -0000
@@ -53,6 +53,8 @@
.Fl P
.Op Ar user
.Nm
+.Fl a
+.Nm
.Fl g Op Fl nr
.Op Ar user
.Nm
@@ -84,6 +86,9 @@
Display the MAC label of the current process.
.It Fl P
Display the id as a password file entry.
+.It Fl a
+Display the process audit user ID and other process audit properties, which
+requires privilege.
.It Fl g
Display the effective group ID as a number.
.It Fl n
Index: id.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/id/id.c,v
retrieving revision 1.27
diff -u -r1.27 id.c
--- id.c 28 May 2006 12:32:30 -0000 1.27
+++ id.c 23 Sep 2006 12:30:16 -0000
@@ -48,6 +48,10 @@
#include <sys/param.h>
#include <sys/mac.h>
+#ifdef USE_BSM_AUDIT
+#include <bsm/audit.h>
+#endif
+
#include <err.h>
#include <errno.h>
#include <grp.h>
@@ -60,6 +64,7 @@
void id_print(struct passwd *, int, int, int);
void pline(struct passwd *);
void pretty(struct passwd *);
+void auditid(void);
void group(struct passwd *, int);
void maclabel(void);
void usage(void);
@@ -73,9 +78,11 @@
struct group *gr;
struct passwd *pw;
int Gflag, Mflag, Pflag, ch, gflag, id, nflag, pflag, rflag, uflag;
+ int aflag;
const char *myname;
Gflag = Mflag = Pflag = gflag = nflag = pflag = rflag = uflag = 0;
+ aflag = 0;
myname = strrchr(argv[0], '/');
myname = (myname != NULL) ? myname + 1 : argv[0];
@@ -89,7 +96,7 @@
}
while ((ch = getopt(argc, argv,
- (isgroups || iswhoami) ? "" : "PGMgnpru")) != -1)
+ (isgroups || iswhoami) ? "" : "PGMagnpru")) != -1)
switch(ch) {
case 'G':
Gflag = 1;
@@ -100,6 +107,9 @@
case 'P':
Pflag = 1;
break;
+ case 'a':
+ aflag = 1;
+ break;
case 'g':
gflag = 1;
break;
@@ -125,7 +135,7 @@
if (iswhoami && argc > 0)
usage();
- switch(Gflag + Pflag + gflag + pflag + uflag) {
+ switch(Gflag + Mflag + Pflag + aflag + gflag + pflag + uflag) {
case 1:
break;
case 0:
@@ -141,6 +151,16 @@
if (Mflag && pw != NULL)
usage();
+#ifdef USE_BSM_AUDIT
+ if (aflag) {
+ auditid();
+ exit(0);
+ }
+#else
+ if (aflag)
+ usage();
+#endif
+
if (gflag) {
id = pw ? pw->pw_gid : rflag ? getgid() : getegid();
if (nflag && (gr = getgrgid(id)))
@@ -278,6 +298,22 @@
printf("\n");
}
+#ifdef USE_BSM_AUDIT
+void
+auditid(void)
+{
+ auditinfo_t auditinfo;
+
+ if (getaudit(&auditinfo) < 0)
+ err(-1, "getauditinfo");
+ printf("auid=%d\n", auditinfo.ai_auid);
+ printf("mask.success=0x%08x\n", auditinfo.ai_mask.am_success);
+ printf("mask.failure=0x%08x\n", auditinfo.ai_mask.am_failure);
+ printf("termid.port=0x%08x\n", auditinfo.ai_termid.port);
+ printf("asid=%d\n", auditinfo.ai_asid);
+}
+#endif
+
void
group(struct passwd *pw, int nflag)
{
@@ -382,11 +418,16 @@
else if (iswhoami)
(void)fprintf(stderr, "usage: whoami\n");
else
- (void)fprintf(stderr, "%s\n%s\n%s\n%s\n%s\n%s\n%s\n",
+ (void)fprintf(stderr, "%s\n%s\n%s\n%s%s\n%s\n%s\n%s\n",
"usage: id [user]",
" id -G [-n] [user]",
" id -M",
" id -P [user]",
+#ifdef USE_BSM_AUDIT
+ " id -a\n",
+#else
+ "",
+#endif
" id -g [-nr] [user]",
" id -p [user]",
" id -u [-nr] [user]");
_______________________________________________
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[EMAIL PROTECTED]"