Use case not covered by the audit library?

Steve Grubb sgrubb at redhat.com
Wed Jan 6 20:05:44 UTC 2016


On Wednesday, January 06, 2016 06:03:58 PM Gulland, Scott A wrote:
> > -----Original Message-----
> > From: Steve Grubb [mailto:sgrubb at redhat.com]
> > It has to be a field name that auparse expects to be encoded.
> > 
> > > So I plan on using the "op", "data" and "euid" fields.
> > 
> > euid would be a kernel originating field name. User space could lie about
> > it. The kernel is the only thing that knows the truth.
> 
> Unfortunately, that is not true for HTTP servers which run as root but
> authenticates the true user issuing the REST request.   The authentication
> is done through PAM.  The HTTP server then carries out the action on behalf
> of that user.   The kernel thinks it's a root user, but the HTTP server
> knows otherwise.   It sounds like there is no way for a trusted user app to
> inject the correct uid into the audit event.   Would you recommend I use
> the "user" field instead of "euid" to indicate who is issuing the request?
> > > Only the data field needs to encoded and ausearch does decode this
> > > 
> > > field correctly.  My message text would look like:
> > >     "op=<op text> data=<encoded data> euid=<uid>"
> > > 
> > > When I was using ausearch I expected to be able to find events by uid
> > > using either the "-ua" or "-ue" option that would match the euid
> > > field's value,
> > 
> > but no matching events were found.  Is this expected behavior?
> > 
> > What is the record type? ausearch is optimized to expect certain record
> > types to have fields in a specific order.
> 
> I am using the AUDIT_USYS_CONFIG event type as I would like to use
> "aureport -c" to get a summary of the configuration changes to the switch.
> As an alternative, I could use the AUDIT_TRUSTED_APP event type.

The USYS_CONFIG event is like this:

type=USYS_CONFIG msg=audit(1389095562.552:540): pid=2249 uid=0 auid=4325 ses=1  
subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=change-system-
time exe="/usr/sbin/hwclock" hostname=? addr=? terminal=pts/0 res=success'


The kernel supplies all the pieces up to the msg= portion. After that is what 
you build. The only real field the event writer does is the op= field, The rest 
are supplied by libaudit. Ausearch does not parse the op= field.

What I would suggest in a case like this is to create a small utility that 
generates the exact report that you want. The auparse library makes that super 
easy. I can dig up the skeleton code for something like this if you want.

-Steve



> > > The "-I" option did correctly convert the euid into the user name.
> > 
> > Interpreting and searching are different areas of the code base and are
> > independent. Interpreting is done after searching. No need to interpret
> > fields
> > that will never be output.




More information about the Linux-audit mailing list