2. Elastesche Stack: Analyse vu Sécherheetsprotokoller. Logstash

2. Elastesche Stack: Analyse vu Sécherheetsprotokoller. Logstash

An der leschter Artikel mir begéint ELK Stack, aus wat fir Softwareprodukter et besteet. An déi éischt Aufgab, déi en Ingenieur konfrontéiert ass wann Dir mam ELK Stack schafft, ass d'Logbicher fir d'Späichere vun der Elasticsearch fir eng spéider Analyse ze schécken. Wéi och ëmmer, dëst ass just Lip Service, elasticsearch späichert Logbicher a Form vun Dokumenter mat bestëmmte Felder a Wäerter, dat heescht datt den Ingenieur verschidde Tools benotze muss fir de Message ze analyséieren deen aus den Endsystemer geschéckt gëtt. Dëst kann op verschidde Manéiere gemaach ginn - schreift e Programm selwer, deen Dokumenter an d'Datebank mat der API bäidréit, oder benotzt fäerdeg Léisungen. An dësem Cours wäerte mir d'Léisung betruechten logstash, deen Deel vum ELK Stack ass. Mir wäerte kucken wéi mir Logbicher vun Endpunktsystemer op Logstash schécken kënnen, an dann setzen mir eng Konfiguratiounsdatei fir ze analyséieren an an d'Elasticsearch-Datebank ze redirectéieren. Fir dëst ze maachen, huelen mir Logbicher vun der Check Point Firewall als erakommen System.

De Cours deckt net d'Installatioun vum ELK Stack of, well et eng grouss Zuel vun Artikelen iwwer dëst Thema gëtt; mir wäerte d'Konfiguratiounskomponent berücksichtegen.

Loosst eis en Aktiounsplang fir Logstash Konfiguratioun opstellen:

  1. Iwwerpréift datt elasticsearch Logbicher akzeptéiert (iwwerpréift d'Funktionalitéit an d'Ouverture vum Hafen).
  2. Mir betruechten wéi mir Eventer op Logstash schécken, eng Method wielen an se ëmsetzen.
  3. Mir konfiguréieren Input an der Logstash Konfiguratiounsdatei.
  4. Mir konfiguréieren d'Output an der Logstash Konfiguratiounsdatei am Debugmodus fir ze verstoen wéi d'Protokollmeldung ausgesäit.
  5. Filter opsetzen.
  6. De korrekten Output op ElasticSearch opstellen.
  7. Logstash lancéiert.
  8. Iwwerpréift d'Logbicher zu Kibana.

Loosst eis all Punkt méi detailléiert kucken:

Iwwerpréift datt elasticsearch Logbicher akzeptéiert

Fir dëst ze maachen, kënnt Dir de Curl Kommando benotzen fir den Zougang zu Elasticsearch aus dem System ze kontrolléieren op deem Logstash ofgesat ass. Wann Dir Authentifikatioun konfiguréiert hutt, da transferéiere mir och de Benotzer / Passwuert iwwer Curl, spezifizéiert den Hafen 9200 wann Dir et net geännert hutt. Wann Dir eng Äntwert ähnlech wéi déi hei ënnen kritt, dann ass alles an der Rei.

[elastic@elasticsearch ~]$ curl -u <<user_name>> : <<password>> -sS -XGET "<<ip_address_elasticsearch>>:9200"
{
  "name" : "elastic-1",
  "cluster_name" : "project",
  "cluster_uuid" : "sQzjTTuCR8q4ZO6DrEis0A",
  "version" : {
    "number" : "7.4.1",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "fc0eeb6e2c25915d63d871d344e3d0b45ea0ea1e",
    "build_date" : "2019-10-22T17:16:35.176724Z",
    "build_snapshot" : false,
    "lucene_version" : "8.2.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}
[elastic@elasticsearch ~]$

Wann d'Äntwert net kritt ass, da kënnen et verschidden Aarte vu Feeler sinn: den elastesche Sichprozess leeft net, de falschen Hafen gëtt spezifizéiert, oder den Hafen gëtt vun enger Firewall um Server blockéiert wou elasticsearch installéiert ass.

Loosst eis kucken wéi Dir Logbicher op Logstash vun enger Kontrollpunkt Firewall schécken

Vum Check Point Management Server kënnt Dir Logbicher op Logstash iwwer Syslog schécken mat dem Log_exporter Utility, Dir kënnt méi doriwwer liesen hei Artikel, hei verloosse mir nëmmen de Kommando deen de Stream erstellt:

cp_log_export addéieren Numm check_point_syslog Zilserver < > Zil-Port 5555 Protokoll tcp Format generesch liesen-Modus semi-vereenegt

< > - Adress vum Server op deem de Logstash leeft, Zil-Port 5555 - Port op deen mir Logbicher schécken, Logbicher iwwer tcp schécken kann de Server lueden, also an e puer Fäll ass et méi korrekt fir udp ze benotzen.

Astellung INPUT an der Logstash Konfiguratiounsdatei

2. Elastesche Stack: Analyse vu Sécherheetsprotokoller. Logstash

Par défaut ass d'Konfiguratiounsdatei am /etc/logstash/conf.d/ Verzeichnis. D'Configuratiounsdatei besteet aus 3 sënnvoll Deeler: INPUT, FILTER, OUTPUT. IN Doduerch fällt et mir uginn wou de System Logbicher aus huelen wäert, an FILTER Parse de Log - astellen wéi Dir de Message a Felder a Wäerter opdeelt, an Däischterheet mir konfiguréieren den Output Stream - wou d'parséiert Logbicher geschéckt ginn.

Als éischt, loosst eis INPUT konfiguréieren, betruecht e puer vun den Typen déi kënne sinn - Datei, tcp an exe.

TCP:

input {
tcp {
    port => 5555
    host => “10.10.1.205”
    type => "checkpoint"
    mode => "server"
}
}

mode => "Server"
Gëtt un datt Logstash Verbindungen akzeptéiert.

port => 5555
host => "10.10.1.205"
Mir akzeptéieren Verbindungen iwwer IP Adress 10.10.1.205 (Logstash), port 5555 - den Hafen muss vun der Firewall Politik erlaabt ginn.

Typ => "Kontrollpunkt"
Mir markéieren d'Dokument, ganz praktesch wann Dir e puer erakommen Verbindungen hutt. Duerno, fir all Verbindung kënnt Dir Ären eegene Filter mat der logescher Konstruktioun schreiwen.

Datei:

input {
  file {
    path => "/var/log/openvas_report/*"
    type => "openvas"
    start_position => "beginning"
    }
}

Beschreiwung vun Astellungen:
path => "/var/log/openvas_report/*"
Mir weisen de Verzeechnes an deem d'Dateien gelies musse ginn.

Typ => "Openvas"
Event Typ.

start_position => "Ufank"
Wann Dir eng Datei ännert, liest se déi ganz Datei; wann Dir "Enn" setzt, waart de System op nei Opzeechnungen um Enn vun der Datei.

Exec:

input {
  exec {
    command => "ls -alh"
    interval => 30
  }
}

Mat dësem Input gëtt e (nëmmen!) Shell Kommando lancéiert a seng Ausgang gëtt an e Log Message ëmgewandelt.

command => "ls -alh"
De Kommando deem seng Ausgang mir interesséiert sinn.

Intervall => 30
Kommando Uruff Intervall a Sekonnen.

Fir Logbicher vun der Firewall ze kréien, registréiere mir e Filter tcp oder pud, jee no wéi d'Logbicher op Logstash geschéckt ginn.

Mir konfiguréieren d'Output an der Logstash Konfiguratiounsdatei am Debug Modus fir ze verstoen wéi d'Logbuch Message ausgesäit

Nodeems mir INPUT konfiguréiert hunn, musse mir verstoen wéi d'Protokollmeldung ausgesäit a wéi eng Methoden musse benotzt ginn fir de Logfilter (Parser) ze konfiguréieren.

Fir dëst ze maachen, benotze mir e Filter deen d'Resultat op stdout ausgëtt fir den urspréngleche Message ze gesinn; déi komplett Konfiguratiounsdatei am Moment gesäit esou aus:

input 
{
         tcp 
         {
                port => 5555
  	  	type => "checkpoint"
    		mode => "server"
                host => “10.10.1.205”
   	 }
}

output 
{
	if [type] == "checkpoint" 
       {
		stdout { codec=> json }
	}
}

Fëllt de Kommando aus fir ze kontrolléieren:
sudo /usr/share/logstash/bin//logstash -f /etc/logstash/conf.d/checkpoint.conf
Mir gesinn d'Resultat, d'Bild ass klickbar:

2. Elastesche Stack: Analyse vu Sécherheetsprotokoller. Logstash

Wann Dir et kopéiert wäert et esou ausgesinn:

action="Accept" conn_direction="Internal" contextnum="1" ifdir="outbound" ifname="bond1.101" logid="0" loguid="{0x5dfb8c13,0x5,0xfe0a0a0a,0xc0000000}" origin="10.10.10.254" originsicname="CN=ts-spb-cpgw-01,O=cp-spb-mgmt-01.tssolution.local.kncafb" sequencenum="8" time="1576766483" version="5" context_num="1" dst="10.10.10.10" dst_machine_name="[email protected]" layer_name="TSS-Standard Security" layer_name="TSS-Standard Application" layer_uuid="dae7f01c-4c98-4c3a-a643-bfbb8fcf40f0" layer_uuid="dbee3718-cf2f-4de0-8681-529cb75be9a6" match_id="8" match_id="33554431" parent_rule="0" parent_rule="0" rule_action="Accept" rule_action="Accept" rule_name="Implicit Cleanup" rule_uid="6dc2396f-9644-4546-8f32-95d98a3344e6" product="VPN-1 & FireWall-1" proto="17" s_port="37317" service="53" service_id="domain-udp" src="10.10.1.180" ","type":"qqqqq","host":"10.10.10.250","@version":"1","port":50620}{"@timestamp":"2019-12-19T14:50:12.153Z","message":"time="1576766483" action="Accept" conn_direction="Internal" contextnum="1" ifdir="outbound" ifname="bond1.101" logid="0" loguid="{0x5dfb8c13,

Wann Dir dës Messagen kuckt, verstinn mir datt d'Logbicher ausgesinn wéi: Feld = Wäert oder Schlëssel = Wäert, dat heescht datt e Filter genannt kv gëeegent ass. Fir de passende Filter fir all spezifesche Fall ze wielen, wier et eng gutt Iddi fir Iech mat hinnen an der technescher Dokumentatioun vertraut ze maachen oder e Frënd ze froen.

Filter opsetzen

Op der leschter Stuf hu mir kv ausgewielt, d'Konfiguratioun vun dësem Filter gëtt hei ënnen presentéiert:

filter {
if [type] == "checkpoint"{
	kv {
		value_split => "="
		allow_duplicate_values => false
	}
}
}

Mir wielen d'Symbol mat deem mir d'Feld a Wäert deelen - "=". Wa mir identesch Entréen am Logbuch hunn, späichere mir nëmmen eng Instanz an der Datebank, soss wäert Dir mat enger Rei vun identesche Wäerter ophalen, dat heescht, wa mir de Message "foo = e puer foo = e puer" schreiwen, schreiwen mir nëmmen foo = puer.

De richtege Output op ElasticSearch opstellen

Wann de Filter konfiguréiert ass, kënnt Dir Logbicher op d'Datebank eroplueden elastesch Sich:

output 
{
if [type] == "checkpoint"
{
 	elasticsearch 
        {
		hosts => ["10.10.1.200:9200"]
		index => "checkpoint-%{+YYYY.MM.dd}"
    		user => "tssolution"
    		password => "cool"
  	}
}
}

Wann d'Dokument mam Checkpoint Typ ënnerschriwwen ass, späichere mir d'Evenement an d'elasticsearch-Datebank, déi d'Verbindungen den 10.10.1.200 um Port 9200 als Standard akzeptéiert. All Dokument gëtt zu engem spezifeschen Index gespäichert, an dësem Fall späichere mir op den Index "Checkpoint-" + aktuellen Zäitdatum. All Index kann e spezifesche Set vu Felder hunn, oder gëtt automatesch erstallt wann en neit Feld an enger Noriicht erschéngt; Feldastellungen an hiren Typ kënnen a Mappings gekuckt ginn.

Wann Dir Authentifikatioun konfiguréiert hutt (mir kucken et méi spéit), mussen d'Umeldungsinformatiounen fir e spezifeschen Index ze schreiwen, an dësem Beispill ass et "tssolution" mam Passwuert "cool". Dir kënnt d'Benotzerrechter differenzéieren fir Logbicher nëmmen op e spezifeschen Index ze schreiwen an net méi.

Start Logstash.

Logstash Konfiguratiounsdatei:

input 
{
         tcp 
         {
                port => 5555
  	  	type => "checkpoint"
    		mode => "server"
                host => “10.10.1.205”
   	 }
}

filter {
        if [type] == "checkpoint"{
	kv {
		value_split => "="
		allow_duplicate_values => false
	}
        }
}

output 
{
if [type] == "checkpoint"
{
 	elasticsearch 
        {
		hosts => ["10.10.1.200:9200"]
		index => "checkpoint-%{+YYYY.MM.dd}"
    		user => "tssolution"
    		password => "cool"
  	}
}
}

Mir kontrolléieren d'Konfiguratiounsdatei fir Richtegkeet:
/usr/share/logstash/bin//logstash -f checkpoint.conf
2. Elastesche Stack: Analyse vu Sécherheetsprotokoller. Logstash

Start de Logstash Prozess:
sudo systemctl start Logstash

Mir kontrolléieren ob de Prozess ugefaang huet:
sudo systemctl Status Logstash

2. Elastesche Stack: Analyse vu Sécherheetsprotokoller. Logstash

Loosst eis kucken ob de Socket erop ass:
netstat -nat |grep 5555

2. Elastesche Stack: Analyse vu Sécherheetsprotokoller. Logstash

Iwwerpréift d'Logbicher zu Kibana.

Nodeems alles leeft, gitt op Kibana - Entdeckt, gitt sécher datt alles richteg konfiguréiert ass, d'Bild ass klickbar!

2. Elastesche Stack: Analyse vu Sécherheetsprotokoller. Logstash

All Logbicher sinn op der Plaz a mir kënnen all Felder an hir Wäerter gesinn!

Konklusioun

Mir hu gekuckt wéi een eng Logstash Konfiguratiounsdatei schreift, an als Resultat krute mir e Parser vun alle Felder a Wäerter. Elo kënne mir mat Sich a Plotte fir spezifesch Felder schaffen. Als nächst wäerte mir d'Visualiséierung an der Kibana kucken an en einfachen Dashboard erstellen. Et ass derwäert ze erwähnen datt d'Konfiguratiounsdatei Logstash a bestëmmte Situatiounen dauernd aktualiséiert muss ginn, zum Beispill wa mir de Wäert vun engem Feld vun enger Zuel an e Wuert ersetzen wëllen. An de folgenden Artikelen wäerte mir dat dauernd maachen.

Also bleiwt drunHëllefe profitéieren, Facebook, VK, TS Léisung Blog), Yandex Zen.

Source: will.com

Setzt e Commentaire