Skip to main content
User guide

Baseline

CIS / MLPS 2.0 compliance verdicts as rules over osquery results. No model involved; reproducible and usable air-gapped.

Baseline answers "are the SSH config, password policy and audit switches on these 40 hosts compliant". Each rule = one osquery SQL collection + one judge operator; verdicts are deterministic and spend no model quota. Every edition.

Baseline

Onboarding (first time)

Baseline data flow

With no runs yet the page shows the setup steps:

Setup steps

Create the indices

The gateway creates three: rules baseline-rules, results baseline-results, runs baseline-runs (renamable via RST_BASELINE_*_INDEX).

Import the rules

Import the built-in library (127 rules covering common MLPS 2.0 and CIS items for Linux / Windows); view and edit them on the Rules tab.

Deploy osquery

Install osquery on the target hosts and run the library's collection queries as a pack on a schedule; ship results to ES with Fleet (Osquery Manager) / Filebeat / Logstash. The gateway reads logs-osquery_manager.result-* by default (RST_BASELINE_OSQUERY_INDEX).

Check the field mapping

"osquery field check" at the top shows the host field, rule key and column prefix the gateway inferred. Self-managed ELK stacks often differ; override with RST_BASELINE_* variables.

Run

Once data is flowing, click "Run now"; every rule is judged per host. For a schedule set RST_BASELINE_INTERVAL_SECONDS (≥ 300; match the osquery pack interval, e.g. 86400).

Results

Four cards on top: compliance score (hosts × rules), passed, failed (configuration to fix), manual / error (not counted). The score's denominator is passed + failed only.

Below: score trend across runs, this run's verdict mix, per-host scores, and the result table: host / rule / category / severity / verdict / observed. Click a row for expected value, observed value, remediation and standard references (e.g. MLPS2.0-8.1.4.2, CIS-5.4.1).

osquery results older than 48 hours (RST_BASELINE_MAX_AGE_HOURS) are stale and never judged pass / fail; hosts silent for 30 days (RST_BASELINE_HOST_ROSTER_DAYS) drop out of the roster.

Rules

Rules

Each rule: ID, title, platform (linux / windows / any), judge operator, enabled, source (built-in / custom). Filter by ID / title / category; disable what you do not need.

New / edit rule

New rule

FieldNotes
Rule ID3–64 chars [A-Za-z0-9._-]; also the query name in the osquery pack
Collection queryosquery SQL, e.g. SELECT value FROM ... WHERE key='PermitRootLogin'
Judge field / operator / expectedWhich column of the result, how to compare (equals / contains / regex / numeric), what is expected
On missing fieldPass, fail or manual when the result lacks the field
Remediation templateShown on failure, e.g. "edit /etc/ssh/sshd_config, set PermitRootLogin no"
Standard referencesComma-separated, shown verbatim

History

The History tab lists every run: finished at, score, passed / failed, hosts × rules; open one for its full results. Reports cite the period's pass rate.

On this page