The states I've written where I am at are based and CIS as well. My final
approach has been to break them up into logical parts (core/selinux,
core/sysctl, etc).
After trying to specify every single thing that should be off and not
installed, I decided it was overkill. My solution was to do a bare bones
kickstart install of CentOS, and from there only add what is needed. All of
my servers have everything in core/ (examples above) and from there, I add
server/apache or whatever application as needed for a specific server.
I will also caution to not blindly trust CIS guidelines. THe RHEL 5.0 version
1.0 had suggestions for bash commands to run for parts in section 9 that
either (a) Outright did not check what it claimed or (b) Worked in say HP-UX,
but had no hope of working in Linux. The Python script I wrote to check those
items has modifications to actually do what CIS suggested. Another example is
I researched what /tmp and /var/tmp are expected to do in Linux (Section
1.1.6), and I opted to not do what CIS suggested and link them. It almost
felt like someone who specialized in UNIX wrote parts of the RHEL guidelines.
I have not had time to look over the latest for RHEL 6 to see if they actually
got someone who knew Red Hat to write the entire thing.
Just my two cents.