Git Product home page Git Product logo

sof-elk's Introduction

SOF-ELK® Configuration Files

SOF-ELK Logo

This repository contains the configuration and support files for the SOF-ELK® VM Appliance.

SOF-ELK® is a “big data analytics” platform focused on the typical needs of computer forensic investigators/analysts and information security operations personnel. The platform is a customized build of the open source Elastic stack, consisting of the Elasticsearch storage and search engine, Logstash ingest and enrichment system, Kibana dashboard frontend, and Elastic Beats log shipper (specifically filebeat). With a significant amount of customization and ongoing development, SOF-ELK® users can avoid the typically long and involved setup process the Elastic stack requires. Instead, they can simply download the pre-built and ready-to-use SOF-ELK® virtual appliance that consumes various source data types (numerous log types as well as NetFlow), parsing out the most critical data and visualizing it on several stock dashboards. Advanced users can build visualizations the suit their own investigative or operational requirements, optionally contributing those back to the primary code repository.

The SOF-ELK® platform was initially developed for SANS FOR572, Advanced Network Forensics and Analysis, and is now used in several other SANS courses, with additional course integrations being considered. Most importantly, the platform is also distributed as a free and open source resource for the community at large, without a specific course requirement or tie-in required to use it.

More details about the pre-packaged VM are available here: https://for572.com/sof-elk-readme.

Branches

  • main: This branch is considered suitable for widespread use, but should not be used in the FOR572 class itself. The classroom labs are version-locked, but work on this repository is ongoing.
  • public/*: These branches will be tied to public releases of the VM, allowing version-locked content control after deployment.
  • class/*: When a VM is prepared for distribution in a SANS course such as FOR572, a new sub-branch will be created under the "class" branch with a name corresponding to the VM version. (e.g. "class/v20170629").
  • develop: This branch contains code that should be functional, but may break at times (and remain broken). Of course, we'll try to avoid that, but it should be clear that this is NOT a branch suitable for "real world" use.
  • Other branches may be used for major version updates, etc. These will be merged to main when deployed for mainstream use.

Using

These files are only recommended to be used in the SOF-ELK VM distribution at this time. A great deal of system-level configuration and tie-in is required for them to be used. No support can be provided for the use of these files outside the SOF-ELK VM as distributed via the readme.

Contents by directory

  • /configfiles/: These files conatain parsing/tagging/formatting/etc logic for individual file types as well as output configuration.
  • /configfiles-UNSUPPORTED/: These configuration files are either not ready for operational use, in testing, or otherwise staged/stashed.
  • /doc/: Documentation. Always a work in progress.
  • /grok-patterns/: Custom parsing patterns used by the files in the /configfiles/ directory.
  • /kibana/: These files define the Kibana dashboards and associated files for individual data types. These correspond with the parsing completed by the Logstash files in the /configfiles/ directory, so they probably won't work on your own Logstash instance without some tweaking. To load these to the Kibana interface, run the /supporting-scripts/load_all_dashboards.sh script.
  • /lib/: Supporting files, including elasticsearch mappings, YAML lookup files, and images.
  • /supporting-scripts/: Numerous scripts and supporting files needed for the SOF-ELK VM to function. Any scripts that may be required for user functionality are symlinked to be in the elk_user's $PATH.

Questions/Bug Reports/etc

All bugs and feature requests should be logged via the github issue tracker: https://github.com/philhagen/sof-elk/issues/.

Please see the pull request submission guidelines before starting any development work - this is in the file.

Administrative Notifications/Disclaimers/Legal/Boring Stuff

  • Content of this repository are provided "as is" with no express or implied warranty for accuracy or accessibility.
  • SOF-ELK® is a registered trademark of Lewes Technology Consulting, LLC. Content is copyrighted by its respective contributors. SOF-ELK logo is a wholly owned property of Lewes Technology Consulting, LLC and is used by permission.

sof-elk's People

Contributors

ankerstal avatar bromiley avatar fmurer avatar joshlemon avatar justinhendersonsmapper avatar mjnbrn avatar negrusti avatar philhagen avatar randomaccess3 avatar smapper avatar umairqamar avatar za avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sof-elk's Issues

fix log rotation

elasticsearch (and maybe logstash/kibana?) logs automatically rotate - remove them from logrotate.d

move netflow asn data to root fields

when loading asn in post-processing via geoip, push the ASN number directly into the original netflow fields and remove from the geo-specific fields

Logstash Translate Plugin

Would it be possible to include the logstash-translate plugin into SOF-ELK? I use this for many of my configuration files. It also requires the dictionaries folder in /etc/logstash although we can change the location of this. To install use:

sudo /opt/logstash/bin/plugin install logstash-filter-translate

sudo mkdir /etc/logstash/dictionaries
cd /etc/logstash/dictionaries
sudo wget https://github.com/SMAPPER/Logstash-Configs/raw/master/dictionaries/iana_protocols.yaml
sudo wget https://github.com/SMAPPER/Logstash-Configs/raw/master/dictionaries/iana_services.yaml
sudo wget https://github.com/SMAPPER/Logstash-Configs/raw/master/dictionaries/services.yaml
sudo wget https://github.com/SMAPPER/Logstash-Configs/blob/master/dictionaries/tcp_flags.yaml

I use it for a handful of my configfiles. I am testing the current SOF-ELK with my configfiles and noticed Logstash failed to run because of this.

Move to 4-digit ordinals

0xxx = inputs
0[0-4]xx = forensics
0[5-9]xx = cyber defense
9xxx = output
0[0-4]xx = forensics
0[5-9]xx = cyber defense

  • What are the classification buckets we want to use for filter/parse/enrich segments? Below is an option, but does this make sense?

1xxx = network forensic
2xxx = disk forensic
3xxx = endpoint
4xxx = service logs
6xxx = siem

Pull TLD from domains

can we pull TLD from domain data? Would be useful for pivoting to other intel sources, etc.

Netflow vs Argus

I see that sof-elk can accept netflow data. Do you think it will ever be able to accept Argus flows as well?

Proper field name hygeine

How do you feel about this proposal for field names?

Field name standards (always follow):

  1. Only use lower case characters (“first_name” instead of “FirstName”)
  2. Avoid special characters except underscores (“first_name” instead of “first name”)
  3. Use underscores to separate words in a field name (“destination_port” instead of “destinationport”)
  4. Whenever possible, rename field names with the same purpose to one field name (IPAddress, IP, ip, should be consolidated to ip)
  5. Due to individuals abbreviating differently, do not use appreviations (“source_port” instead of “src_port”)
  6. Always use singular forms not plural (“message” instead of “messages”)
  7. Use proper spelling of words

Field name guidelines (try to follow):

  1. Use present tense unless field describes historical information (Example: end of connection recording “bytes_received”)
  2. Always use singular forms not plural (“message” instead of “messages”)
    a. Exception: When describing something that is past tense and the expectation is for multiple values (“bytes_received” instead of “byte_received”)
  3. Where possible rename fields to match consistent names so long as renaming the field does not cause the event to lose context (Example: “unauthorized_user” may be able to be renamed to “user” if the only event that contains the field “unauthorized_user” has another field that provides the context of a failed login)

figure out bad syslog parsing

the following doesn't parse with the syslog input. possibly related to () in the process name?
<22>Dec 30 20:21:32 systemname deliver(username): msgid=<[email protected]>: saved mail to mailbox.submailbox
<77>Dec 30 20:01:01 systemname run-parts(/etc/cron.hourly)[2284 starting 0yum-hourly.cron

not sure what's up with the following line, though - possibly the space in the "programname" position?
<22>Dec 30 20:08:41 systemname2 spf filter[15569]: SPF status: PASS

syslog parse catches extra? syslog_hostname

input:
Feb 10 01:42:32 quaff fail2ban.filter[3631]: WARNING Determined IP using DNS Lookup: ec2-54-93-46-228.eu-central-1.compute.amazonaws.com = ['54.93.46.228']

results:
syslog_hostname: fail2ban.filter,WARNING Determined IP using DNS Lookup
message: ec2-54-93-46-228.eu-central-1.compute.amazonaws.com = ['54.93.46.228']

better handling of "smtp_relay" field after kv

Need to handle this input better- the (may be forged) gets caught in the "smtp_relay" field from the kv {} filter.
Feb 17 22:56:38 quaff sendmail[10971]: t1HMubqj010971: from=<[email protected]>, size=0, class=0, nrcpts=0, bodytype=8BITMIME, proto=ESMTP, daemon=MTA, relay=z-y-x-w.static.reverse.lstn.net [w.x.y.z] (may be forged)

passivedns hostname parser update needed

does not allow underscores in query/response due to the IPORHOST semantic
also seems there are some replies including the "/" character, e.g. 114.178.112.212.in-addr.arpa. -> 114.96/27.178.112.212.in-addr.arpa.

Parse Carbon Black JSON inputs

parse inputs via syslog and filebeat (maybe via raw JSON socket?)

send to separate index (carbonblack-*), so needs index-mapping, kibana field template, etc. (NOTE: Need a complete(ish) list of all fields CB can output, data types, etc)
add the new index to es_nuke, etc.
probably needs dashboards

what about logstash ingest enrichments for IP address, etc?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.