On Wednesday, May 02, 2012 11:47:44 AM Patrick Synor wrote:
I am struggling here quite a bit trying to implement a ruleset to
help
us log PCI related events. I was able to get a good ruleset that I am
using successfully on RHEL5 which consists of the following rules:
Before looking at the rules, we can only have forward compatibility. The audit
rules are implemented in the kernel rather than user space. So, once a kernel is
released with new features its sometimes hard to backport those changes to older
kernels.
-a exclude,always -F msgtype=CWD
-a exit,never -F arch=b32 -F path=/var/log/audit/audit.log
-a exit,never -F arch=b32 -F path=/var/log/messages
-a always,exit -F euid=0 -F perm=wxa -k ROOT_ACTION
-a exit,always -S all -F dir=/var/log -k LOG_ACCESS
-a exit,always -F arch=b32 -F dir=/var/log -S truncate -S unlink -S
rename -S unlinkat -k LOGS_INIT
-a exit,always -F arch=b64 -F dir=/var/log -S truncate -S unlink -S
rename -S unlinkat -k LOGS_INIT
-w /etc -p wa -k CONF_ACCESS
However, when I started deploying this I ran into some RHEL4 servers,
and it appears the version of audit on the RHEL4 servers is 1.0.16.
This version doesn't seem to like the rules above. For example, the
first rule results in the following:
Append rule - bad keyword exclude,always
The exclude filter was required for LSPP but not for CAPP. RHEL4 was only
certified to CAPP.
Changing this rule to -a entry,never -F msgtype=CWD results in:
-F unknown field: msgtype=CWD
This was intended to be used with the exclude filter, so its also not present.
And -a always,exit -S all -F euid=0 -k ROOT_ACTION results in:
filterkey option needs a watch given prior to it
The kernel API was changed in 2.6.16 to allow strings to be passed as keys for
syscalls. So, the older kernels cannot do this.
So clearly a lot has changed from this version to the version on the
RHEL5 box (1.7.18). Anyhow, since upgrading the RHEL4 boxes for this
isn't an option, I am trying to figure out what I can do to possibly
modify these rules to work with the older version, or replace the older
version with a newer version for the sake of this project. From what I
understand, the kernel on the RHEL4 box (2.6.9-103.EL) may not allow
this since I understand that the versions of audit are generally kernel
dependant.
Yes.
Additionally, just looking at some of the dependencies on
the audit-libs package on the RHEL4 box I am seeing that a lot of
critical things depend on it (e.g. PAM, passwd, shadow-utils,
openssh-server, etc.) so removing it and replacing it will likely be
quite a mess.
Correct. You really can't upgrade user space and get this to work. It will only
change the error from something meaningful to Invalid Option.
If anyone has any input or suggestions I would greatly appreciate
it.
Ideally, we shouldn't have any RHEL4 boxes today, but the case is that
we do, and they cannot be upgraded for the sake of this project, so
creative solutions are welcomed, and encouraged.
You'll need to alter the rules for the RHEL4 system. RHEL4 was the beginning of
the current audit system and just lacks some things that are common in more
recent kernel/user space.
-Steve