An der leschter
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:
- Iwwerpréift datt elasticsearch Logbicher akzeptéiert (iwwerpréift d'Funktionalitéit an d'Ouverture vum Hafen).
- Mir betruechten wéi mir Eventer op Logstash schécken, eng Method wielen an se ëmsetzen.
- Mir konfiguréieren Input an der Logstash Konfiguratiounsdatei.
- Mir konfiguréieren d'Output an der Logstash Konfiguratiounsdatei am Debugmodus fir ze verstoen wéi d'Protokollmeldung ausgesäit.
- Filter opsetzen.
- De korrekten Output op ElasticSearch opstellen.
- Logstash lancéiert.
- 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
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
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:
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
Start de Logstash Prozess:
sudo systemctl start Logstash
Mir kontrolléieren ob de Prozess ugefaang huet:
sudo systemctl Status Logstash
Loosst eis kucken ob de Socket erop ass:
netstat -nat |grep 5555
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!
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 drun
Source: will.com