Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected{color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background::[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity:60)';}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0em 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0em 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0em 1em;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which use a logographic writing system and need larger font sizes.
***/

/*{{{*/
body {font-size:0.8em;}

#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}

.subtitle {font-size:0.8em;}

.viewer table.listView {font-size:0.95em;}

.htmlarea .toolbarHA table {border:1px solid ButtonFace; margin:0em 0em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton {display: none ! important;}
#displayArea {margin: 1em 1em 0em 1em;}
/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
noscript {display:none;}
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar closeTiddler closeOthers +editTiddler > fields syncing permalink references jump'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteTiddler'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
<!--}}}-->
To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:
* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* MainMenu: The menu (usually on the left)
* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These InterfaceOptions for customising TiddlyWiki are saved in your browser

Your username for signing your edits. Write it as a WikiWord (eg JoeBloggs)

<<option txtUserName>>
<<option chkSaveBackups>> SaveBackups
<<option chkAutoSave>> AutoSave
<<option chkRegExpSearch>> RegExpSearch
<<option chkCaseSensitiveSearch>> CaseSensitiveSearch
<<option chkAnimate>> EnableAnimations

----
Also see AdvancedOptions
RoraScanner is divided up into separate script files to enable different modes of access to the scanning engine relatively easily.

oracle-scanner.rb and oracle-file-scanner.rb are initialization scripts which deal with command-line parameters and execution of methods from the main RoraScanner and RoraFileScanner objects respectively.

rora_scanner.rb and rora_file_scanner.rb are the main two class files.  rora_scanner.rb is the class file for the TNS connection checks and rora_file_scanner.rb deals with file parsing checks.

In addition to those two there are some supplemental files which contain specific groups of checks.  there's no particular architecural reason for this separation, it's more for organisation and ease of finding specific checks or groups of checks.  

Configuration information for the scanner is stored in scanner.conf.  This is a [[yaml|http://www.yaml.org/]] file which is read in during the initialization of the RoraScanner and RoraFileScanner objects 

Whilst the current number of checks doesn't really warrent this, as that number increases the separation of having groups of checks should help keep things organised.

!!!Additional Topics

RoraScannerArchitecture
RoraFileScannerArchitecture
This release of RoraScanner was made available on the 26th of July and is available [[here|http://rubyforge.org/frs/?group_id=3878]].

Trivia - Hjaltland is the old norse name for the [[Shetland Isles|http://en.wikipedia.org/wiki/Shetland]], the release is called that, as I got a fair bit of work done whilst it was raining when I was up there on holiday!

This is a list of the checks in the CIS benchmark Document and their status in RoraScanner.

Key 
I - Implemented
PI - Planned to be Implemented
NI - Not possible/appropriate to be Implemented .  Many of the checks in the CIS benchmark are better adressed by OS level scanners like [[Nessus|http://www.nessus.org]] or require validation/human input that make them unsuitable for automation.  Additionally there are several classes of checks which use terminology like "Set X to the appropriate level".  Obviously a scanner can't derive appropriate so these sections aren't checked.


!!CIS Section 1 - Operating System Specific Settings
|!CIS Section Number|!Status|
|1.01|NI|
|1.02|NI|
|1.03|NI|
|1.04|NI|
|1.05|NI|
|1.06|NI|
|1.07|NI|
|1.08|NI|
|1.09|NI|
|1.10|NI|
|1.11|NI|
|1.12|PI|
|1.13|PI|
|1.14|NI|
|1.15|NI|
|1.16|NI|
|1.17|NI|
|1.18|NI|
|1.19|NI|
|1.20|NI|

!!CIS Section 2 - Installation and Patch
|!CIS Section Number|!Status|
|2.01|NI|
|2.02|I|
|2.03|PI|
|2.04|I|
|2.05|PI|
|2.06|PI|
|2.07|I|
|2.08|I|
|2.09|NI|
|2.10|PI|
|2.11|I|
|2.12|I|
|2.13|PI|
|2.14|NI|

!!CIS Section 3 - Oracle Directory and File Permissions
|!CIS Section Number|!Status|
|3.01|I|
|3.02|I|
|3.03|I|
|3.04|NI|
|3.05|I|
|3.06|I|
|3.07|I|
|3.08|I(?)|
|3.09|NI|
|3.10|NI|
|3.11|NI|
|3.12|NI|
|3.13|NI|
|3.14|NI|
|3.15|I|
|3.16|I|
|3.17|I|
|3.18|I|
|3.19|I|
|3.20|NI|
|3.21|NI|
|3.22|NI|
|3.23|NI|
|3.24|I|
|3.25|NI|
|3.26|NI|
|3.27|NI|
|3.28|I|
|3.29|I|
|3.30|I|
|3.31|I|


!!CIS Section 4 - Oracle Parameter Settings
|!CIS Section Number|!Status|!Comments|
|4.01|NI|init.ora parameter not settable at a session level so would need to edit init.ora|
|4.02|I||
|4.03|I||
|4.04|I||
|4.05|I||
|4.06|I||
|4.07|I||
|4.08|I||
|4.09|I||
|4.10|I||
|4.11|NI||
|4.12|NI||
|4.13|I||
|4.14|I||
|4.15|I||
|4.16|NI||
|4.17|NI||
|4.18|I||
|4.19|NI||
|4.20|I||
|4.21|I||
|4.22|I||
|4.23|I||
|4.24|I||
|4.25|I||
|4.26|I||
|4.27|NI||
|4.28|I||
|4.29|PI||
|4.30|PI||
|4.31|PI||

!!CIS Section 5 - Encryption Specific Settings
|!CIS Section Number|!Status|!Comments|
|5.x|NI| (All the settings in this section are implementation dependant so not really appropriate for a general scanner)|

!!CIS Section 6 - Startup and Shutdown
|!CIS Section Number|!Status|
|6.x|NI|

!!CIS Section 7 - Backups and Disaster Recovery
|!CIS Section Number|!Status|
|7.x|NI|

!!CIS Section 8 - Oracle Profile (User) Setup Settings
|!CIS Section Number|!Status|
|8.01|I|
|8.02|I|
|8.03|I|
|8.04|I|
|8.05|I|
|8.06|I|
|8.07|NI|
|8.08|I|
|8.09|NI|
|8.10|NI|
|8.11|NI|
|8.12|NI|
|8.13|NI|
|8.14|NI|

!!CIS Section 9 - Oracle Profile (User) Access Settings
|!CIS Section Number|!Status|
|9.01|I|
|9.02|NI|
|9.03|PI|
|9.04|I|
|9.05|I|
|9.06|I|
|9.07|I|
|9.08|I|
|9.09|I|
|9.10|I|
|9.11|I|
|9.12|I|
|9.13|I|
|9.14|I|
|9.15|I|
|9.16|I|
|9.17|I|
|9.18|I|
|9.19|I|
|9.20|I|
|9.21|I|
|9.22|I|
|9.23|I|
|9.24|I|
|9.25|NI|
|9.26|NI|
|9.27|I|
|9.28|NI|
|9.29|I|
|9.30|PI|
|9.31|PI|
|9.32|PI|
|9.33|PI|
|9.34|PI|
|9.35|PI|
|9.36|PI|
|9.37|I|
|9.38|PI|
|9.39|PI|
|9.40|PI|
|9.41|I|
|9.42|I|
|9.43|I|
|9.44|PI|
|9.45|PI|
|9.46|PI|
|9.47|PI|
|9.48|PI|
|9.49|PI|
|9.50|PI|
|9.51|NI|
|9.52|NI|
|9.53|NI|
|9.54|NI|
|9.55|PI|
|9.56|PI|
|9.57|NI|
|9.58|PI|
|9.59|PI|

!!CIS Section 10 - Enterprise Manage/Grid Control/Agents
|!CIS Section Number|!Status|
|10.x|NI|

!!CIS Section 11 - 10g Specific Systems
|!CIS Section Number|!Status|
|11.x|NI|

!!CIS Section 12 - General Policy and Procedures
|!CIS Section Number|!Status|
|12.x|NI|

!!CIS Section 13 - Auditing Policy and Procedures
|!CIS Section Number|!Status|
|13.01|NI|
|13.02|NI|
|13.03|I|
|13.04|PI|
|13.05|NI|
|13.06|NI|
|13.07|I|
|13.08|I|
|13.09|PI|
|13.10|I|
|13.11|I|
|13.12|I|
|13.13|PI|
|13.14|I|
|13.15|I|
|13.16|I|
|13.17|I|
|13.18|PI|
|13.19|NI|
|13.20|NI|
|13.21|NI|
|13.22|PI|
|13.23|NI|
The current release of RoraScanner is [[Beta 0.1 Hjaltland]]
[[Introduction]]
RoraScanner
At the moment RoraScanner has been mostly tested on Linux.  It should work on windows, but there may be some problems.


!! Install Ruby


You'll need ruby installed to run RoraScanner.  

!!! Linux

In linux the easiest way to do this will be to use your package manager of choice to install ruby

Yum/RPM based - yum install ruby, yum install rubygems
apt/dpkg based - apt-get install ruby, apt-get install rubygems


!!! Windows


The easiest way to install ruby on windows, is to use the one-click installer found here http://rubyforge.org/projects/rubyinstaller/ (This installer includes rubygems by default so there's no need for an additonal installation)

!! Install the Oracle Client


The oracle client programs can be downloaded and installed from Oracles site here - http://www.oracle.com/technology/software/tech/oci/instantclient/index.html



!! Install Supporting Files


Run - "gem install ruport" from a command line to install ruport
Run - "gem install builder" to install builder

and install the oci8 library from the instuctions at http://ruby-oci8.rubyforge.org/en/ .



!! Weak Password Checking


RoraScanner can call checkpwd from Red database security to check for weak passwords.  If you want to use this function get the latest version of the checker from http://www.red-database-security.com/software/checkpwd.html .  Then put the information about the program location and the location of any password lists you'd like to use into scanner.conf , RoraScanner will then call checkpwd for each user in the userlist.



This is a [[TiddlyWiki|http://www.tiddywiki.com/]] which contains the documentation for RoraScanner . Several starting points can be found in the main menu on the left.  

If you've got any questions or queries on RoraScanner, please drop me a mail at raesene@gmail.com
[[Introduction]]
RoraScanner
[[Installation]]
[[Main Scanner Usage|oracle-scanner.rb usage]]
[[File Scanner Usage|oracle-file-scanner.rb usage]]
!! Beta 0.1

The rights required for this version are fairly straightforward.  As RoraScanner uses DBMS_METADATA.GET_DDL to do patch level checking the user running the scan must have the SELECT_CATALOG_ROLE in order to complete this check.  As this covers all the other rights required to complete the scan the user just needs

GRANT CREATE SESSION to <Username>
GRANT SELECT_CATALOG_ROLE to <Username>
These are the planned milestones for RoraScanner

!!!Near Term
Implement all potential checks from CIS
Implement any additional checks from SANS S.C.O.R.E

!!!Medium Term
Improve the reporting interface to offer multiple report types

!!!Long Term
Introduce persistance to allow for scan comparision (using ActiveRecord)
Introduce a web front-end using Rails.
RoraScanner is a security scanner for Oracle 10G databases.  It was started as part of my SANS GSOC gold paper "Automated Scanning of Oracle 10G Databases" which should be online soon.

The goal of RoraScanner is to provide a security scanner which can be run with minimal impact on the scanned server.  The checks carried out by the scanner are primarily based on the Center for Internet Securitys [[Oracle Benchmark|http://www.cisecurity.org/bench_oracle.html]].

At present it provides two different scanner modules to achieve this.

oracle-scanner.rb queries the database over a TNS connection allowing for the checking of database parameters, user rights and default and weak password checking.

oracle-file-scanner.rb parses Oracle initialization files like listener.ora and sqlnet.ora for security relevant parameters.  It can also scan file permissions listings to show potential security problems with them.

RoraScanner is the main class file for the TNS checks carried out on the databse.

The initialization method sets up two things which are then used throughout the Class.  The first is a logger object (@scan_log) which uses rubys [[logger class|http://www.ruby-doc.org/stdlib/libdoc/logger/rdoc/]].  this provides a simple logging framework with 4 different log levels.  the level of logging required by the user can be set in the scanner.conf file.  

The second is the OCI8 connection to the Oracle database @conn.  This is then used by all the subsequent checks to perform their queries on the database.
Documentation for the RoraScanner Oracle Security Scanner
RoraScanner Wiki
oracle-file-scanner.rb is designed to analyse various files to review security related parameters.  At the moment it's got a couple of checks for sqlnet.ora and listener.ora
as well as the ability to review the file permissions from unix installations of Oracle.

for sqlnet.ora

./oracle-file-scanner.rb -f sqlnet.ora

for listener.ora

./oracle-file-scanner.rb -f listener.ora

for reviewing file permissions on unix First go to the $ORACLE_HOME directory on your database server and run ls -alR > <output-file> then copy the output-file
to the RoraScanner directory then run

./oracle-file-scanner.rb -f <output-file> -u <oracle-user> -g <oracle-group>
oracle-scanner.rb makes a SQL*NET connection to an Oracle database and completes various queries

the required parameters are

-u <username>
-p <password>
-c <Connection String>

Optional parameters are

-d - Connect as SYSDBA
-o - Connect as SYSOPER

So an example of connection to a database with a SID of ORCL on a host 192.168.1.161 with a username of SYS (so need SYSDBA) and a password of PASSWORD would be

./oracle-scanner.rb -u SYS -p PASSWORD -c 192.168.1.161/ORCL -d

The report should then be placed in the directory that the scanner was started from.  The name of the report is <server ip address><Date/Time>.html

Obviously the account that scans the server will require the appropriate OracleRights.  It is not advisable to use the SYS or SYSTEM users to run any security scanners as obviously any issues with them could then cause damage to the database (and also DBAs should be leary of giving up those high-privilege passwords).  There's a page on the wiki called OracleRights which lists the permissions needed for oracle-scanner to run.