Solaris 11.2 Compliance Framework
By DarrenMoffat on Apr 29, 2014
During the Solaris 11 launch (November 2011) one of the questions I was asked from the audience was from a retail customer asking for documentation on how to configure Solaris to pass a PCI-DSS audit. At that time we didn't have anything beyond saying that Solaris was secure by default and it was no longer necessary to run the Solaris Security Toolkit to get there. Since then we have produced a PCI-DSS white paper with Coalfire (a PCI-DSS QSA) and we have invested a significant amount of work in building a new Compliance Framework and making compliance a "lifestyle" feature in Solaris core development.
We delievered OpenSCAP in Solaris 11.1 since SCAP is the foundation language of how we will provide compliance reporting. So I'm please to be able to finally talk about the first really signficant part of the Solaris compliance infrastruture which is part of Solaris 11.2.
Starting with Solaris 11.2 we have a new command compliance(1M) for running system assements against security/compliance benchmarks and for generating html reports from those. For now this only works on a single host but the team hard at work adding multi-node support (using the Solaris RAD infrastructure) for a future release.
The much more signficant part of what the compliance team has been working on is "content". A framework without any content is just a new "box of bits, lots of assembly required" and that doesn't meet the needs of busy Solaris administrators. So starting with Solaris 11.2 we are delivering our interpretation of important security/compliance standards such as PCI-DSS. We have also provided two Oracle authored policies: 'Solaris Baseline' and 'Solaris Recommended', a freshly installed system should be getting all passes on the Baseline benchmark. The checks in the Recommended benchmark are those that are a little more controversial and/or take longer to run.
Lets dive in and generate an assesment and report from one of the Solaris 11.2 compliance benchmarks we provide:
# pkg install security/compliance # compliance assess # compliance report
That will give us an html report that we can then view. Since we didn't give any compliance benchmark name it defaults to 'Solaris Baseline', so now lets install and run the PCI-DSS benchmark. The 'security/compliance' package has a group dependency for 'security/compliance/benchmark/pci-dss' so it will be installed already but if you don't want it you can remove that benchmark and keep the others and the infrastructure.
# compliance assess -b pci-dss Assessment will be named 'pci-dss.Solaris_PCI-DSS.2014-04-14,16:39' # compliance report -a pci-dss.Solaris_PCI-DSS.2014-04-14,16:39
If we want the report to only show those tests that failed we can do that like this:
# compliance report -s fail -a pci-dss.Solaris_PCI-DSS.2014-04-14,16:39
We understand that many of your Solaris systems won't match up exactly to the benchmarks we have provided and as a result we have delivered the content in a way that you can customise it. Over time the ability to build custom benchmarks from the checks we provide will be come part of the compliance(1M) command but for now you can enable/disable checks by editing a copy of the XML files. Yes I know many of you don't like XML but this time it isn't too scary for just this part, crafting a whole check from scratch is hard though but that is the SCAP/XCCDF/OVAL language for you!.
So for now here is the harder than it should be way to customise one of the delivered benchmarks, using the PCI-DSS benchmark as an example:
# cd /usr/lib/compliance/benchmarks # mkdir example # cd example # cp ../pci-dss/pci-dss-xccdf.xml example-xccdf.xml # ln -s ../../tests # ln -s example-xccdf.xml xccdf.xml
# vi example-xccdf.xml
In your editor you are looking for lines that look like this to enable or disable a given test:
<select idref="Test_1.2" selected="true" />
You probably also want to update these lines to indicate that it is your benchmark rather than the original we delivered.
<title>Payment Card Industry Data Security Standard</title>
Once you have made the changes you want exit from your editor and run 'compliance list' and you should see your example benchmark listed, you can run run assesments and generate reports from that one just as above. It is important you do this by making a copy of the xccdf.xml file otherwise the 'pkg verify' test is always going to fail and more importantly your changes would be lost on package update.
Note that we have plans to re-number these tests and provide a peristent unique identifier and namespace for each of the tests we deliver, it just didn't make the cut off for Solaris 11.2 release. So for now note that the test numbering will very likely change in a future release.
I would really value feedback on the framework itself and probably even more importantly the actual compliance checks that our Solaris Baseline, Solaris Recommended, and PCI-DSS security benchmarks include.