Paskutiniame
Kursas neapima ELK kamino diegimo, nes šia tema yra daugybė straipsnių; mes apsvarstysime konfigūracijos komponentą.
Sudarykite Logstash konfigūracijos veiksmų planą:
- Tikrinama, ar elasticsearch priims žurnalus (prievado funkcionalumo ir atvirumo tikrinimas).
- Svarstome, kaip galėtume siųsti įvykius į Logstash, pasirinkti metodą ir jį įgyvendinti.
- Konfigūruojame įvestį Logstash konfigūracijos faile.
- Mes sukonfigūruojame išvestį Logstash konfigūracijos faile derinimo režimu, kad suprastume, kaip atrodo žurnalo pranešimas.
- Filtro nustatymas.
- Tinkamos išvesties nustatymas ElasticSearch.
- Paleidžiamas „Logstash“.
- Tikrinami rąstai Kibanoje.
Pažvelkime į kiekvieną tašką išsamiau:
Tikrinama, ar elasticsearch priims žurnalus
Norėdami tai padaryti, galite naudoti komandą curl, kad patikrintumėte prieigą prie Elasticsearch iš sistemos, kurioje įdiegtas Logstash. Jei sukonfigūravote autentifikavimą, mes taip pat perduodame vartotoją / slaptažodį per curl, nurodydami 9200 prievadą, jei jo nepakeitėte. Jei gaunate atsakymą, panašų į žemiau pateiktą, vadinasi, viskas tvarkoje.
[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 ~]$
Jei atsakymas negaunamas, gali būti kelių tipų klaidų: elasticsearch procesas nevyksta, nurodytas netinkamas prievadas arba prievadą blokuoja ugniasienė serveryje, kuriame įdiegta elasticsearch.
Pažiūrėkime, kaip galite siųsti žurnalus į Logstash iš patikros taško užkardos
Iš Check Point valdymo serverio galite siųsti žurnalus į Logstash per syslog naudodami log_exporter įrankį, daugiau apie tai galite perskaityti čia
cp_log_export pridėti pavadinimą check_point_syslog target-server < > tikslinio prievado 5555 protokolo tcp formato bendras skaitymo režimas pusiau suvienodintas
< > - serverio, kuriame veikia Logstash, adresas, tikslinis prievadas 5555 - prievadas, į kurį siųsime žurnalus, siunčiant žurnalus per tcp galima apkrauti serverį, todėl kai kuriais atvejais teisingiau naudoti udp.
Įvesties nustatymas „Logstash“ konfigūracijos faile
Pagal numatytuosius nustatymus konfigūracijos failas yra /etc/logstash/conf.d/ kataloge. Konfigūracijos failas susideda iš 3 reikšmingų dalių: INPUT, FILTER, OUTPUT. IN ĮVADAS nurodome, iš kur sistema paims žurnalus FILTRAS išanalizuoti žurnalą – nustatyti, kaip padalyti pranešimą į laukus ir reikšmes IŠĖJIMAS sukonfigūruojame išvesties srautą – kur bus siunčiami išanalizuoti žurnalai.
Pirma, sukonfigūruokime INPUT, apsvarstykite kai kuriuos tipus, kurie gali būti - failas, tcp ir exe.
TCP:
input {
tcp {
port => 5555
host => “10.10.1.205”
type => "checkpoint"
mode => "server"
}
}
režimas => "serveris"
Nurodo, kad Logstash priima ryšius.
prievadas => 5555
priegloba => "10.10.1.205"
Priimame prisijungimus per IP adresą 10.10.1.205 (Logstash), 5555 prievadą – prievadą turi leisti ugniasienės politika.
tipo => "kontrolinis taškas"
Pažymime dokumentą, labai patogu, jei turite keletą įeinančių jungčių. Vėliau kiekvienam ryšiui galite parašyti savo filtrą naudodami loginį jei konstrukciją.
Vaizdas:
input {
file {
path => "/var/log/openvas_report/*"
type => "openvas"
start_position => "beginning"
}
}
Nustatymų aprašymas:
kelias => "/var/log/openvas_report/*"
Nurodome katalogą, kuriame reikia skaityti failus.
tipo => "openvas"
Renginio tipas.
start_position => "pradžia"
Keičiant failą, jis nuskaito visą failą; jei nustatote „end“, sistema laukia, kol failo pabaigoje pasirodys nauji įrašai.
Vykdytojas:
input {
exec {
command => "ls -alh"
interval => 30
}
}
Naudojant šią įvestį, paleidžiama (tik!) apvalkalo komanda ir jos išvestis paverčiama žurnalo pranešimu.
komanda => "ls -alh"
Komanda, kurios išvestis mus domina.
intervalas => 30
Komandos iškvietimo intervalas sekundėmis.
Norėdami gauti žurnalus iš ugniasienės, registruojame filtrą tcp arba udp, priklausomai nuo to, kaip žurnalai siunčiami į Logstash.
Mes sukonfigūruojame išvestį Logstash konfigūracijos faile derinimo režimu, kad suprastume, kaip atrodo žurnalo pranešimas
Sukonfigūravę INPUT, turime suprasti, kaip atrodys žurnalo pranešimas ir kokius metodus reikia naudoti norint sukonfigūruoti žurnalo filtrą (analizatorių).
Norėdami tai padaryti, naudosime filtrą, kuris išveda rezultatą į stdout, kad peržiūrėtume pradinį pranešimą; visas konfigūracijos failas šiuo metu atrodys taip:
input
{
tcp
{
port => 5555
type => "checkpoint"
mode => "server"
host => “10.10.1.205”
}
}
output
{
if [type] == "checkpoint"
{
stdout { codec=> json }
}
}
Paleiskite komandą, kad patikrintumėte:
sudo /usr/share/logstash/bin//logstash -f /etc/logstash/conf.d/checkpoint.conf
Matome rezultatą, paveikslėlį galima spustelėti:
Jei nukopijuosite, jis atrodys taip:
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,
Žvelgdami į šiuos pranešimus suprantame, kad žurnalai atrodo taip: laukas = vertė arba raktas = vertė, o tai reiškia, kad tinka filtras, vadinamas kv. Norint pasirinkti tinkamą filtrą kiekvienam konkrečiam atvejui, būtų naudinga su jais susipažinti techninėje dokumentacijoje arba paklausti draugo.
Filtro nustatymas
Paskutiniame etape pasirinkome kv, šio filtro konfigūracija pateikiama žemiau:
filter {
if [type] == "checkpoint"{
kv {
value_split => "="
allow_duplicate_values => false
}
}
}
Mes pasirenkame simbolį, iš kurio padalinsime lauką ir reikšmę - „=“. Jei žurnale turime identiškus įrašus, duomenų bazėje išsaugome tik vieną egzempliorių, kitaip gausite identiškų reikšmių masyvą, tai yra, jei turime pranešimą „foo = some foo=some“, rašome tik foo = kai kurie.
Tinkamos išvesties nustatymas ElasticSearch
Kai filtras yra sukonfigūruotas, galite įkelti žurnalus į duomenų bazę elastinga paieška:
output
{
if [type] == "checkpoint"
{
elasticsearch
{
hosts => ["10.10.1.200:9200"]
index => "checkpoint-%{+YYYY.MM.dd}"
user => "tssolution"
password => "cool"
}
}
}
Jei dokumentas pasirašytas tikrinimo taško tipu, įvykį išsaugome elasticsearch duomenų bazėje, kuri pagal numatytuosius nustatymus priima ryšius 10.10.1.200 prie 9200 prievado. Kiekvienas dokumentas išsaugomas tam tikrame indekse, šiuo atveju įrašome į indeksą „checkpoint-“ + esamo laiko data. Kiekvienas indeksas gali turėti tam tikrą laukų rinkinį arba sukuriamas automatiškai, kai pranešime atsiranda naujas laukas; lauko parametrus ir jų tipą galima peržiūrėti atvaizduose.
Jei sukonfigūravote autentifikavimą (pažiūrėsime vėliau), reikia nurodyti kredencialus, leidžiančius rašyti į konkretų indeksą, šiame pavyzdyje tai yra „tssolution“ su slaptažodžiu „cool“. Galite atskirti vartotojo teises rašyti žurnalus tik į tam tikrą indeksą ir ne daugiau.
Paleiskite „Logstash“.
Logstash konfigūracijos failas:
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"
}
}
}
Mes patikriname konfigūracijos failo teisingumą:
/usr/share/logstash/bin//logstash -f checkpoint.conf
Pradėkite „Logstash“ procesą:
sudo systemctl pradėti logstash
Mes patikriname, ar procesas prasidėjo:
sudo systemctl būsena logstash
Pažiūrėkime, ar lizdas yra pakeltas:
netstat -nat |grep 5555
Tikrinami rąstai Kibanoje.
Kai viskas veikia, eikite į Kibana - Atraskite, įsitikinkite, kad viskas teisingai sukonfigūruota, paveikslėlį galima spustelėti!
Visi žurnalai yra vietoje ir mes matome visus laukus ir jų reikšmes!
išvada
Pažiūrėjome, kaip parašyti Logstash konfigūracijos failą, ir gavome visų laukų ir reikšmių analizatorių. Dabar galime dirbti su konkrečių laukų paieška ir braižymu. Toliau kurso metu apžvelgsime vizualizaciją „Kibana“ ir sukursime paprastą prietaisų skydelį. Verta paminėti, kad Logstash konfigūracijos failą reikia nuolat atnaujinti tam tikrose situacijose, pavyzdžiui, kai norime pakeisti lauko reikšmę iš skaičiaus į žodį. Tolesniuose straipsniuose tai darysime nuolat.
Taigi sekite naujienas (
Šaltinis: www.habr.com