* [PATCH 2/2] fix a bug that use option '-k key-string' cannot search out all matched logs
@ 2008-07-29 5:41 Peng Haitao
2008-07-29 21:22 ` Steve Grubb
2008-07-30 1:33 ` [graphics 06448] " zhangxiliang
0 siblings, 2 replies; 5+ messages in thread
From: Peng Haitao @ 2008-07-29 5:41 UTC (permalink / raw)
To: sgrubb; +Cc: audit-list
Hello Steve,
Use option '-k key-string' cannot search out the log which contains the given key-string and message type is CONFIG_CHANGE.
For example:
echo 'node=RHEL5.2GA type=CONFIG_CHANGE msg=audit(1217404709.683:23182): auid=0 subj=root:system_r:auditctl_t:s0-s0:c0.c1023 op=remove rule key="haha" list=4 res=1' | ausearch -k haha
The output is: <no matches>
Signed-off-by: Peng Haitao <penght@cn.fujitsu.com>
---
src/ausearch-parse.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 52 insertions(+), 3 deletions(-)
diff --git a/src/ausearch-parse.c b/src/ausearch-parse.c
index 0c38be1..fd00013 100755
--- a/src/ausearch-parse.c
+++ b/src/ausearch-parse.c
@@ -1411,7 +1411,7 @@ static int parse_simple_message(const lnode *n, search_items *s)
errno = 0;
s->loginuid = strtoul(ptr, NULL, 10);
if (errno)
- return 2;
+ return 1;
if (term)
*term = ' ';
else
@@ -1437,7 +1437,56 @@ static int parse_simple_message(const lnode *n, search_items *s)
else // Set it back to something sane
term = str;
} else
- return 3;
+ return 2;
+ }
+ }
+
+ if (event_key) {
+ str = strstr(term, "key=");
+ if (str != NULL) {
+ if (!s->key) {
+ //create
+ s->key = malloc(sizeof(slist));
+ if (s->key == NULL)
+ return 3;
+ slist_create(s->key);
+ }
+ ptr = str + 4;
+ if (*ptr == '"') {
+ ptr++;
+ term = strchr(ptr, '"');
+ if (term != NULL) {
+ *term = 0;
+ if (s->key) {
+ // append
+ snode sn;
+ sn.str = strdup(ptr);
+ sn.key = NULL;
+ sn.hits = 1;
+ slist_append(s->key, &sn);
+ }
+ *term = '"';
+ } else
+ return 4;
+ } else {
+ if (s->key) {
+ char *saved=NULL;
+ char *keyptr = unescape(ptr);
+ char *kptr = strtok_r(keyptr,
+ key_sep, &saved);
+ while (kptr) {
+ snode sn;
+ // append
+ sn.str = strdup(kptr);
+ sn.key = NULL;
+ sn.hits = 1;
+ slist_append(s->key, &sn);
+ kptr = strtok_r(NULL,
+ key_sep, &saved);
+ }
+ free(keyptr);
+ }
+ }
}
}
@@ -1457,7 +1506,7 @@ static int parse_simple_message(const lnode *n, search_items *s)
errno = 0;
s->success = strtoul(ptr, NULL, 10);
if (errno)
- return 4;
+ return 5;
if (term)
*term = ' ';
}
--
1.5.4.2
--
Regards
Peng Haitao
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] fix a bug that use option '-k key-string' cannot search out all matched logs
2008-07-29 5:41 [PATCH 2/2] fix a bug that use option '-k key-string' cannot search out all matched logs Peng Haitao
@ 2008-07-29 21:22 ` Steve Grubb
2008-07-30 1:33 ` [graphics 06448] " zhangxiliang
1 sibling, 0 replies; 5+ messages in thread
From: Steve Grubb @ 2008-07-29 21:22 UTC (permalink / raw)
To: Peng Haitao; +Cc: audit-list
On Tuesday 29 July 2008 01:41:59 Peng Haitao wrote:
> Use option '-k key-string' cannot search out the log which contains the
> given key-string and message type is CONFIG_CHANGE.
Patch applied - Thanks! The way that the return codes work in the parsers is
that I wanted each return to have a different return code so that I can tell
exactly which line it fails on when I debug. I made some adjustmenst to the
patch for this.
Thanks,
-Steve
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [graphics 06448] [PATCH 2/2] fix a bug that use option '-k key-string' cannot search out all matched logs
2008-07-29 5:41 [PATCH 2/2] fix a bug that use option '-k key-string' cannot search out all matched logs Peng Haitao
2008-07-29 21:22 ` Steve Grubb
@ 2008-07-30 1:33 ` zhangxiliang
2008-07-30 11:06 ` Steve Grubb
1 sibling, 1 reply; 5+ messages in thread
From: zhangxiliang @ 2008-07-30 1:33 UTC (permalink / raw)
Cc: audit-list
Hello Steve,
> echo 'node=RHEL5.2GA type=CONFIG_CHANGE msg=audit(1217404709.683:23182): auid=0 subj=root:system_r:auditctl_t:s0-s0:c0.c1023 op=remove rule key="haha" list=4 res=1'
Why the message which type is "CONFIG_CHANGE" contains "key" field?
The "CONFIG_CHANGE" audit message should only describe the audit object status.
You can get the audit message by following steps:
1. # touch test1
2. # auditctl -w `pwd`/test1 -k haha
3. # mv test1 test2
I think we'd better not output "key" field in "CONFIG_CHANGE" message.
What's your opinion? If you agree with me, I'll make a patch for kernel.
Peng Haitao said the following on 2008-07-29 13:41:
> Hello Steve,
>
> Use option '-k key-string' cannot search out the log which contains the given key-string and message type is CONFIG_CHANGE.
>
> For example:
> echo 'node=RHEL5.2GA type=CONFIG_CHANGE msg=audit(1217404709.683:23182): auid=0 subj=root:system_r:auditctl_t:s0-s0:c0.c1023 op=remove rule key="haha" list=4 res=1' | ausearch -k haha
> The output is: <no matches>
>
> Signed-off-by: Peng Haitao <penght@cn.fujitsu.com>
> ---
> src/ausearch-parse.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++--
> 1 files changed, 52 insertions(+), 3 deletions(-)
>
> diff --git a/src/ausearch-parse.c b/src/ausearch-parse.c
> index 0c38be1..fd00013 100755
> --- a/src/ausearch-parse.c
> +++ b/src/ausearch-parse.c
> @@ -1411,7 +1411,7 @@ static int parse_simple_message(const lnode *n, search_items *s)
> errno = 0;
> s->loginuid = strtoul(ptr, NULL, 10);
> if (errno)
> - return 2;
> + return 1;
> if (term)
> *term = ' ';
> else
> @@ -1437,7 +1437,56 @@ static int parse_simple_message(const lnode *n, search_items *s)
> else // Set it back to something sane
> term = str;
> } else
> - return 3;
> + return 2;
> + }
> + }
> +
> + if (event_key) {
> + str = strstr(term, "key=");
> + if (str != NULL) {
> + if (!s->key) {
> + //create
> + s->key = malloc(sizeof(slist));
> + if (s->key == NULL)
> + return 3;
> + slist_create(s->key);
> + }
> + ptr = str + 4;
> + if (*ptr == '"') {
> + ptr++;
> + term = strchr(ptr, '"');
> + if (term != NULL) {
> + *term = 0;
> + if (s->key) {
> + // append
> + snode sn;
> + sn.str = strdup(ptr);
> + sn.key = NULL;
> + sn.hits = 1;
> + slist_append(s->key, &sn);
> + }
> + *term = '"';
> + } else
> + return 4;
> + } else {
> + if (s->key) {
> + char *saved=NULL;
> + char *keyptr = unescape(ptr);
> + char *kptr = strtok_r(keyptr,
> + key_sep, &saved);
> + while (kptr) {
> + snode sn;
> + // append
> + sn.str = strdup(kptr);
> + sn.key = NULL;
> + sn.hits = 1;
> + slist_append(s->key, &sn);
> + kptr = strtok_r(NULL,
> + key_sep, &saved);
> + }
> + free(keyptr);
> + }
> + }
> }
> }
>
> @@ -1457,7 +1506,7 @@ static int parse_simple_message(const lnode *n, search_items *s)
> errno = 0;
> s->success = strtoul(ptr, NULL, 10);
> if (errno)
> - return 4;
> + return 5;
> if (term)
> *term = ' ';
> }
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [graphics 06448] [PATCH 2/2] fix a bug that use option '-k key-string' cannot search out all matched logs
2008-07-30 1:33 ` [graphics 06448] " zhangxiliang
@ 2008-07-30 11:06 ` Steve Grubb
2008-07-31 9:16 ` zhangxiliang
0 siblings, 1 reply; 5+ messages in thread
From: Steve Grubb @ 2008-07-30 11:06 UTC (permalink / raw)
To: zhangxiliang; +Cc: audit-list
On Tuesday 29 July 2008 21:33:13 zhangxiliang wrote:
> > echo 'node=RHEL5.2GA type=CONFIG_CHANGE msg=audit(1217404709.683:23182):
> > auid=0 subj=root:system_r:auditctl_t:s0-s0:c0.c1023 op=remove rule
> > key="haha" list=4 res=1'
>
> Why the message which type is "CONFIG_CHANGE" contains "key" field?
> The "CONFIG_CHANGE" audit message should only describe the audit object
> status.
The reason that the key field is output is an attempt at telling the security
officer more about which rule was deleted. Yes at the commandline you know
what rules you just deleted, but if all you have is the logs and it happened
some time in the past, how do you know *exactly* which rule was deleted? This
gets us closer without having to write something in the kernel that iterates
through the fields and changes them to text. We really can't do that in the
kernel.
-Steve
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [graphics 06448] [PATCH 2/2] fix a bug that use option '-k key-string' cannot search out all matched logs
2008-07-30 11:06 ` Steve Grubb
@ 2008-07-31 9:16 ` zhangxiliang
0 siblings, 0 replies; 5+ messages in thread
From: zhangxiliang @ 2008-07-31 9:16 UTC (permalink / raw)
To: Steve Grubb; +Cc: audit-list
Hello Steve,
Thanks for your detailed explanation.
But I found two cases for "CONFIG_CHANGE" message miss "key" field.
for example1:
1. # touch temp_file
2. # auditctl -w `pwd`/temp_file -k temp_file
3. # rm -f temp_file
The "CONFIG_CHANGE" message is "type=CONFIG_CHANGE msg=audit(1217667917.265:1027): op=updated rules specifying path="/root/temp_file" with dev=4294967295 ino=4294967295 list=0 res=1".
for example2:
1. # auditctl -e 2
2. # auditctl -a exit,always -S open -k temp_file
The "CONFIG_CHANGE" message is "type=CONFIG_CHANGE msg=audit(1217668048.831:1031): user pid=13202 uid=0 auid=0 ses=1 subj=root:system_r:auditctl_t:s0-s0:c0.c1023 audit_enabled=2 res=0".
Are they OK or error?
Steve Grubb said the following on 2008-07-30 19:06:
> On Tuesday 29 July 2008 21:33:13 zhangxiliang wrote:
>>> echo 'node=RHEL5.2GA type=CONFIG_CHANGE msg=audit(1217404709.683:23182):
>>> auid=0 subj=root:system_r:auditctl_t:s0-s0:c0.c1023 op=remove rule
>>> key="haha" list=4 res=1'
>> Why the message which type is "CONFIG_CHANGE" contains "key" field?
>> The "CONFIG_CHANGE" audit message should only describe the audit object
>> status.
>
> The reason that the key field is output is an attempt at telling the security
> officer more about which rule was deleted. Yes at the commandline you know
> what rules you just deleted, but if all you have is the logs and it happened
> some time in the past, how do you know *exactly* which rule was deleted? This
> gets us closer without having to write something in the kernel that iterates
> through the fields and changes them to text. We really can't do that in the
> kernel.
>
> -Steve
>
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-07-31 9:16 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-07-29 5:41 [PATCH 2/2] fix a bug that use option '-k key-string' cannot search out all matched logs Peng Haitao
2008-07-29 21:22 ` Steve Grubb
2008-07-30 1:33 ` [graphics 06448] " zhangxiliang
2008-07-30 11:06 ` Steve Grubb
2008-07-31 9:16 ` zhangxiliang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox