Az utolsóban
A kurzus nem terjed ki az ELK verem telepítésére, mivel rengeteg cikk létezik ebben a témában, figyelembe vesszük a konfigurációs komponenst.
Készítsünk cselekvési tervet a Logstash konfigurációjához:
- Annak ellenőrzése, hogy az elasticsearch elfogadja-e a naplókat (a port működőképességének és nyitottságának ellenőrzése).
- Megfontoljuk, hogyan küldhetünk eseményeket a Logstash-nak, kiválasztunk egy módszert és azt implementáljuk.
- A Logstash konfigurációs fájlban konfiguráljuk a bemenetet.
- Beállítjuk a kimenetet a Logstash konfigurációs fájlban hibakeresési módban, hogy megértsük, hogyan néz ki a naplóüzenet.
- Szűrő beállítása.
- A megfelelő kimenet beállítása az ElasticSearch-ben.
- Elindul a Logstash.
- A naplók ellenőrzése Kibanában.
Nézzük meg részletesebben az egyes pontokat:
Annak ellenőrzése, hogy az elasticsearch elfogadja-e a naplókat
Ehhez a curl paranccsal ellenőrizheti az Elasticsearch elérését abból a rendszerből, amelyen a Logstash telepítve van. Ha beállította a hitelesítést, akkor a felhasználót/jelszót curl-en keresztül is továbbítjuk, megadva a 9200-as portot, ha nem változtatta meg. Ha az alábbihoz hasonló választ kap, akkor minden rendben van.
[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 ~]$
Ha nem érkezik meg a válasz, akkor többféle hiba is előfordulhat: az elasticsearch folyamat nem fut, rossz port van megadva, vagy a portot blokkolja egy tűzfal azon a szerveren, amelyre az elasticsearch telepítve van.
Nézzük meg, hogyan küldhet naplókat a Logstashnak egy ellenőrzőponti tűzfalról
A Check Point felügyeleti szerverről a log_exporter segédprogrammal syslogon keresztül küldhet naplókat a Logstashnak, erről itt olvashat bővebben
cp_log_export add name check_point_syslog target-server < > target-port 5555 protokoll tcp formátum általános olvasási mód félig egységes
< > - a szerver címe, amin a Logstash fut, cél-port 5555 - port, amelyre a naplókat küldjük, a naplók tcp-n keresztüli küldése terhelheti a szervert, így bizonyos esetekben helyesebb az udp használata.
Az INPUT beállítása a Logstash konfigurációs fájlban
Alapértelmezés szerint a konfigurációs fájl az /etc/logstash/conf.d/ könyvtárban található. A konfigurációs fájl 3 értelmes részből áll: INPUT, FILTER, OUTPUT. BAN BEN INPUT jelezzük, hogy a rendszer honnan veszi a naplókat FILTER a napló elemzése – állítsa be, hogyan osztja fel az üzenetet mezőkre és értékekre KIMENET konfiguráljuk a kimeneti adatfolyamot - ahová az elemzett naplók elküldésre kerülnek.
Először is állítsuk be az INPUT-ot, vegyük figyelembe a lehetséges típusokat: file, tcp és exe.
TCP:
input {
tcp {
port => 5555
host => “10.10.1.205”
type => "checkpoint"
mode => "server"
}
}
mód => "szerver"
Azt jelzi, hogy a Logstash fogad kapcsolatokat.
port => 5555
host => "10.10.1.205"
A 10.10.1.205 (Logstash) IP-címen, az 5555-ös porton keresztül fogadunk kapcsolatokat – a portot engedélyezni kell a tűzfalszabályzatnak.
type => "checkpoint"
Megjelöljük a dokumentumot, nagyon kényelmes, ha több bejövő kapcsolata van. Ezt követően minden kapcsolathoz saját szűrőt írhat a logikai if konstrukció segítségével.
fájl:
input {
file {
path => "/var/log/openvas_report/*"
type => "openvas"
start_position => "beginning"
}
}
A beállítások leírása:
elérési út => "/var/log/openvas_report/*"
Megjelöljük azt a könyvtárat, amelyben a fájlokat be kell olvasni.
type => "openvas"
Esemény típus.
start_position => "kezdet"
Fájl megváltoztatásakor a teljes fájlt beolvassa, ha az „end” beállítást választja, a rendszer megvárja, amíg új rekordok jelennek meg a fájl végén.
Végrehajtó:
input {
exec {
command => "ls -alh"
interval => 30
}
}
Ezzel a bemenettel egy (csak!) shell parancs indul, és a kimenete naplóüzenetté alakul.
parancs => "ls -alh"
A parancs, amelynek kimenete érdekel minket.
intervallum => 30
Parancshívási intervallum másodpercben.
A tűzfal naplóinak fogadása érdekében szűrőt regisztrálunk tcp vagy udp, attól függően, hogy a naplók hogyan kerülnek a Logstashba.
Beállítjuk a kimenetet a Logstash konfigurációs fájlban hibakeresési módban, hogy megértsük, hogyan néz ki a naplóüzenet
Az INPUT konfigurálása után meg kell értenünk, hogyan fog kinézni a naplóüzenet, és milyen módszereket kell használni a naplószűrő (elemző) konfigurálásához.
Ehhez egy szűrőt fogunk használni, amely az eredményt az stdout-ba adja, hogy megtekinthesse az eredeti üzenetet; a teljes konfigurációs fájl jelenleg így fog kinézni:
input
{
tcp
{
port => 5555
type => "checkpoint"
mode => "server"
host => “10.10.1.205”
}
}
output
{
if [type] == "checkpoint"
{
stdout { codec=> json }
}
}
Futtassa a parancsot az ellenőrzéshez:
sudo /usr/share/logstash/bin//logstash -f /etc/logstash/conf.d/checkpoint.conf
Az eredményt látjuk, a kép kattintható:
Ha átmásolod, így fog kinézni:
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,
Ezeket az üzeneteket tekintve megértjük, hogy a naplók formátuma: mező = érték vagy kulcs = érték, ami azt jelenti, hogy a kv nevű szűrő alkalmas. Az egyes esetekhez megfelelő szűrő kiválasztásához érdemes lenne megismerkedni velük a műszaki dokumentációban, vagy megkérdezni egy barátot.
Szűrő beállítása
Az utolsó szakaszban a kv-t választottuk, ennek a szűrőnek a konfigurációja az alábbiakban látható:
filter {
if [type] == "checkpoint"{
kv {
value_split => "="
allow_duplicate_values => false
}
}
}
Kiválasztjuk a szimbólumot, amellyel elosztjuk a mezőt és az értéket - „=”. Ha azonos bejegyzéseink vannak a naplóban, akkor csak egy példányt mentünk el az adatbázisban, ellenkező esetben azonos értékekből álló tömböt kapunk, vagyis ha a „foo = some foo=some” üzenetünk van, akkor csak foo-t írunk. = néhány.
A megfelelő kimenet beállítása az ElasticSearch-ben
A szűrő konfigurálása után naplókat tölthet fel az adatbázisba elasticsearch:
output
{
if [type] == "checkpoint"
{
elasticsearch
{
hosts => ["10.10.1.200:9200"]
index => "checkpoint-%{+YYYY.MM.dd}"
user => "tssolution"
password => "cool"
}
}
}
Ha a dokumentum ellenőrzési pont típussal van aláírva, akkor az eseményt elmentjük az elasticsearch adatbázisba, amely alapértelmezés szerint a 10.10.1.200-as porton fogadja a 9200-as kapcsolatokat. Minden dokumentum egy adott indexbe kerül, ebben az esetben a „checkpoint-” + aktuális dátum indexbe mentjük. Minden index rendelkezhet meghatározott mezőkészlettel, vagy automatikusan létrejön, amikor új mező jelenik meg egy üzenetben, a mezőbeállítások és típusuk a leképezésekben tekinthetők meg.
Ha beállította a hitelesítést (később megnézzük), meg kell adni a hitelesítő adatokat egy adott indexbe való íráshoz, ebben a példában ez a „tssolution” „cool” jelszóval. Megkülönböztetheti a felhasználói jogokat, hogy a naplókat csak egy adott indexre írják, és nem többet.
Indítsa el a Logstash programot.
Logstash konfigurációs fájl:
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"
}
}
}
Ellenőrizzük a konfigurációs fájl helyességét:
/usr/share/logstash/bin//logstash -f checkpoint.conf
Indítsa el a Logstash folyamatot:
sudo systemctl indítsa el a logstash -t
Ellenőrizzük, hogy a folyamat elindult:
sudo systemctl állapot logstash
Ellenőrizzük, hogy az aljzat fent van-e:
netstat -nat |grep 5555
A naplók ellenőrzése Kibanában.
Miután minden fut, menjen a Kibana - Discover oldalra, győződjön meg arról, hogy minden megfelelően van beállítva, a kép kattintható!
Minden napló a helyén van, és láthatjuk az összes mezőt és azok értékét!
Következtetés
Megnéztük, hogyan írhatunk egy Logstash konfigurációs fájlt, és ennek eredményeként kaptunk egy elemzőt az összes mezőből és értékből. Most már dolgozhatunk meghatározott mezők keresésével és ábrázolásával. A kurzus következő részében a Kibana vizualizációját nézzük meg, és egy egyszerű irányítópultot készítünk. Érdemes megemlíteni, hogy a Logstash konfigurációs fájlt bizonyos helyzetekben folyamatosan frissíteni kell, például amikor egy mező értékét számról szóra akarjuk cserélni. A következő cikkekben folyamatosan ezt fogjuk tenni.
Szóval maradj velünk
Forrás: will.com