🎶 In your wildest Streams 🎶
The whole reason we made this sandbox was to showcase the power of Cribl Stream as a replacement for your Syslog-NG deployment. Understandably, you’re not going to go in and rip out Syslog-NG for Cribl Stream overnight. As syslog needs scale up, Cribl Edge helps stopgap some of the issues we've seen arise, giving you time to deploy Cribl Stream for your toughest projects.
Cribl Stream is our endgame, however. Here, we’ll configure Stream to:
- Receive our syslog (rather than Syslog-NG).
- Send the syslog data off to the SIEM and low-cost object storage (rather than using a secondary agent).
- Use pre-made Packs to help reduce event sizes.
Buckle up, it’s gonna be a...pretty straightforward ride, actually. But you should always wear a seatbelt when in a moving vehicle...or a sandbox? The point is, Stream’s UI makes these things rather simple.
Our Syslog, Comrade​
In a real-world environment, you would install Stream on the Syslog-NG server and avoid changing the IPs of all your syslog devices. Kind of tough to do that with how our sandbox is architected, however. So we have configured syslog data to send to both Syslog-NG and Stream. As a result, we can skip installing and get right to configuring.
- Navigate to Cribl Stream
- On the top tabs, click
Cribl
. - At Edge's top left, hover over
Edge
to unroll the product switcher. - From the product switcher, click
Stream
.
- On the top tabs, click
- Click into the
goatfarm
Worker Group. - Once in Stream, click the large
QuickConnect
tile on the left.
Look familiar? It's the same UI we used in Cribl Edge to quickly connect our Sources and Destinations. This time, we'll do two things differently: Use a syslog
Source, and a Pack to condition our syslog data.
Luckily, someone has achieved their Cribl Certified Observability Engineer User certification, and was already in here configuring a stream-syslog
Source, an s3
Destination, and our splunk
Destination. All that's left for us to do is add our Pack and connect our Destinations.
A Pack a Day​
Remember when we said that Stream comes with pre-made Packs that can help us reduce event sizes? Let’s see how simple they are to deploy, how much data reduction they can offer, and [need a joke here]. (See what we did there? We reduced the size of the joke.)
- With the
Manage
tab active, clickProcessing
from the submenu, and then selectPacks
. If theProcessing
link is not visible, click the submenu's ••• overflow menu to reveal it. - Click
Add Pack
and selectAdd from Dispensary
. - Search for and click on
Syslog Pre‑Processing
.- Feel free to take a minute and read what the Pack will do for us.
- From the
Syslog Pre‑Processing
drawer, clickAdd Pack
. - Click
X
to close theSyslog Pre‑Processing
drawer. - Click
X
to close theAdd Pack from Dispensary
drawer.
This Pack contains a CriblSyslogPreProcessing
Pipeline with over 60 Functions in it, the content of which is beyond the scope of this sandbox. Suffice to say, it does great things for syslog data. Let's go add it to our stream‑syslog
Source and finish out this journey.
From Stream to Shining SIEM​
We have our Sources and Destinations configured, as well as our Syslog Pre‑Processing
Pack. To finish out, we need to mirror the initial Syslog-NG + Splunk UF configuration. Or rather, since Security Operations enjoyed having the low-cost, full-fidelity archive, we’ll be mirroring the Syslog-NG + Cribl Edge configuration, to send syslog data to both the SIEM and S3.
- Navigate back to QuickConnect:
Manage > goatfarm > Routing > QuickConnect
. - Hover over the
stream-syslog
Source and clickConfigure
. - In the resulting drawer, click the
Pre‑Processing
left tab. - For the
Pipeline
, selectPACK cribl‑syslog‑input (Syslog Pre‑processing)
.
Awesome! This pack will clean up our syslog data and reduce its volume somewhat. However, it does set the sourcetype
to syslog
. In the real world, this is fine. In our sandbox, though, we have been using sourcetype
to illustrate that we are, in fact, sending data to the SIEM. So, real quickly, let's add another JavaScript expression to label our Fields
in order to set our sourcetype
. This one will be more for checking our work than actually being usable in a real environment.
sourcetype
- Just above the
Pre‑Processing
left tab, clickFields
. - Click
Add Field
.- In the
Name
column, putsourcetype
. - In the
Value
column, put:host.includes("syslog") ? "stream-pan" : "stream-apache"
- In the
Like we said above, this conditional expression is here merely to get the job done. Our syslog data coming from the Palo Alto firewall includes syslog
in the hostname. Our Apache web server sends from hosts web*.cribl.io
. This conditional simply looks for syslog
and labels it as pan traffic.
- Click
Save
Now that our input is being pre-conditioned with a few nice-to-haves (e.g., automatic sourcetype
and index
addition), let's configure our Routes, Commit and Deploy
, check our work, and close out this sandbox.
- Connect
stream-syslog
to boths3
andsplunk
. (Drag the+
onstream-syslog
over to each of the two Destinations.) - In each resulting pop-up, leave the default
Passthru
selection and clickSave
.
Some of our syslog input for this sandbox comes from Palo Alto Networks firewall logs. We do have a Pack to help reduce unnecessary fields (and more), but that isn't in the scope of this sandbox. We actually have a different sandbox to go over that.
- At the Stream UI's top right, click
Commit
. - In the resulting
Git Changes
modal, enter a descriptive message, and clickCommit and Deploy
.
Once again, that's it! With just a little bit of configuration, you were able to configure our Stream deployment to receive syslog directly, and then pass it on to S3 for low-cost, full-fidelity retention, as well as on to the current SIEM. In the future, if you need to switch SIEM vendors or investigate a data breach, you have the infrastructure in place.
Let's wrap up.
Well sure, we configured it, but how do we know it all works?! Don’t take our word for it! Feel free to go back to the Splunk UI (Splunk
top tab) and search for the syslog
sourcetype.
index="syslog" sourcetype="stream-pan"
index="syslog" sourcetype="stream-apache"