Viimeisessä
Kurssi ei kata ELK-pinon asennusta, koska tästä aiheesta on valtava määrä artikkeleita; harkitsemme konfigurointikomponenttia.
Tehdään toimintasuunnitelma Logstash-konfiguroinnille:
- Tarkistamalla, että elasticsearch hyväksyy lokit (portin toimivuuden ja avoimuuden tarkistaminen).
- Pohdimme, kuinka voimme lähettää tapahtumia Logstashille, valita menetelmän ja toteuttaa sen.
- Määritämme tulon Logstash-määritystiedostossa.
- Määritämme Output Logstash-määritystiedostossa virheenkorjaustilassa ymmärtääksemme, miltä lokiviesti näyttää.
- Suodattimen määrittäminen.
- Oikean lähdön asettaminen ElasticSearchissa.
- Logstash käynnistyy.
- Tukkien tarkistus Kibanassa.
Katsotaanpa jokaista kohtaa tarkemmin:
Tarkistamalla, että elasticsearch hyväksyy lokit
Voit tehdä tämän käyttämällä curl-komentoa tarkistaaksesi pääsyn Elasticsearchiin järjestelmästä, jossa Logstash on otettu käyttöön. Jos todennus on määritetty, siirrämme myös käyttäjän/salasanan curlin kautta, määrittämällä portin 9200, jos et ole vaihtanut sitä. Jos saat alla olevan kaltaisen vastauksen, kaikki on kunnossa.
[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 ~]$
Jos vastausta ei saada, voi olla useita virhetyyppejä: elasticsearch-prosessi ei ole käynnissä, väärä portti on määritetty tai palomuuri on estänyt portin palvelimella, johon elasticsearch on asennettu.
Katsotaanpa, kuinka voit lähettää lokit Logstashiin tarkistuspisteen palomuurista
Check Pointin hallintapalvelimelta voit lähettää lokit Logstashille syslogin kautta log_exporter-apuohjelman avulla, voit lukea siitä lisää täältä
cp_log_export lisäysnimi check_point_syslog kohdepalvelin < > kohdeportti 5555-protokollan tcp-muoto yleinen lukutila puoliksi yhtenäistetty
< > - palvelimen osoite jolla Logstash toimii, kohdeportti 5555 - portti johon lähetämme lokit, lokien lähettäminen tcp:n kautta voi ladata palvelimen, joten joissain tapauksissa on oikeampaa käyttää udp:tä.
INPUT:n määrittäminen Logstash-määritystiedostossa
Oletusarvoisesti asetustiedosto sijaitsee /etc/logstash/conf.d/-hakemistossa. Konfigurointitiedosto koostuu kolmesta merkityksellisestä osasta: INPUT, FILTER, OUTPUT. SISÄÄN INPUT ilmoitamme, mistä järjestelmä ottaa lokit SUODATIN jäsennä loki - määritä, kuinka viesti jaetaan kenttiin ja arvoihin LÄHTÖ määritämme lähtövirran - minne jäsennetyt lokit lähetetään.
Ensin määritetään INPUT, harkitse joitain tyyppejä, jotka voivat olla - tiedosto, tcp ja exe.
TCP:
input {
tcp {
port => 5555
host => “10.10.1.205”
type => "checkpoint"
mode => "server"
}
}
tila => "palvelin"
Osoittaa, että Logstash hyväksyy yhteyksiä.
portti => 5555
isäntä => "10.10.1.205"
Hyväksymme yhteydet IP-osoitteen 10.10.1.205 (Logstash), portin 5555 kautta - portin tulee olla palomuurikäytännön sallima.
tyyppi => "tarkistuspiste"
Merkitsemme asiakirjan, erittäin kätevää, jos sinulla on useita saapuvia yhteyksiä. Tämän jälkeen jokaiselle yhteydelle voit kirjoittaa oman suodattimen käyttämällä loogista if-rakennetta.
Tiedosto:
input {
file {
path => "/var/log/openvas_report/*"
type => "openvas"
start_position => "beginning"
}
}
Asetusten kuvaus:
polku => "/var/log/openvas_report/*"
Osoitamme hakemiston, jossa tiedostot on luettava.
tyyppi => "openvas"
Tapahtumatyyppi.
start_position => "alku"
Kun muutat tiedostoa, se lukee koko tiedoston; jos asetat "end", järjestelmä odottaa uusien tietueiden ilmestymistä tiedoston loppuun.
Suorittaja:
input {
exec {
command => "ls -alh"
interval => 30
}
}
Tätä syötettä käyttämällä käynnistetään (vain!) shell-komento ja sen tulos muunnetaan lokiviestiksi.
komento => "ls -alh"
Komento, jonka tuotosta olemme kiinnostuneita.
väli => 30
Komennon kutsun aikaväli sekunneissa.
Palomuurin lokien vastaanottamiseksi rekisteröimme suodattimen tcp tai udp, riippuen siitä, kuinka lokit lähetetään Logstashille.
Määritämme ulostulon Logstash-määritystiedostossa virheenkorjaustilassa ymmärtääksemme, miltä lokiviesti näyttää
Kun olemme määrittäneet INPUT:n, meidän on ymmärrettävä, miltä lokiviesti näyttää ja mitä menetelmiä lokisuodattimen (jäsennin) määrittämiseen on käytettävä.
Tätä varten käytämme suodatinta, joka tulostaa tuloksen stdoutiin nähdäksemme alkuperäisen viestin; täydellinen asetustiedosto näyttää tällä hetkellä tältä:
input
{
tcp
{
port => 5555
type => "checkpoint"
mode => "server"
host => “10.10.1.205”
}
}
output
{
if [type] == "checkpoint"
{
stdout { codec=> json }
}
}
Suorita komento tarkistaaksesi:
sudo /usr/share/logstash/bin//logstash -f /etc/logstash/conf.d/checkpoint.conf
Näemme tuloksen, kuvaa voi klikata:
Jos kopioit sen, se näyttää tältä:
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,
Näitä viestejä tarkastellessamme ymmärrämme, että lokit näyttävät tältä: kenttä = arvo tai avain = arvo, mikä tarkoittaa, että kv-niminen suodatin on sopiva. Oikean suodattimen valitsemiseksi kuhunkin yksittäiseen tapaukseen on hyvä tutustua niihin teknisessä dokumentaatiossa tai kysyä ystävältäsi.
Suodattimen määrittäminen
Viimeisessä vaiheessa valitsimme kv, tämän suodattimen kokoonpano on esitetty alla:
filter {
if [type] == "checkpoint"{
kv {
value_split => "="
allow_duplicate_values => false
}
}
}
Valitsemme symbolin, jolla jaamme kentän ja arvon - "=". Jos meillä on identtiset merkinnät lokissa, tallennamme vain yhden esiintymän tietokantaan, muuten saat joukon identtisiä arvoja, eli jos meillä on viesti "foo = some foo=some", kirjoitamme vain foo = jotkut.
Oikean lähdön asettaminen ElasticSearchissa
Kun suodatin on määritetty, voit ladata lokit tietokantaan elasticsearch:
output
{
if [type] == "checkpoint"
{
elasticsearch
{
hosts => ["10.10.1.200:9200"]
index => "checkpoint-%{+YYYY.MM.dd}"
user => "tssolution"
password => "cool"
}
}
}
Jos dokumentti on allekirjoitettu tarkistuspistetyypillä, tallennamme tapahtuman elasticsearch-tietokantaan, joka hyväksyy oletuksena yhteydet 10.10.1.200 portissa 9200. Jokainen dokumentti tallennetaan tiettyyn hakemistoon, tässä tapauksessa tallennetaan hakemistoon "checkpoint-" + nykyinen aikapäivämäärä. Jokaisella indeksillä voi olla tietty joukko kenttiä tai se luodaan automaattisesti, kun viestiin ilmestyy uusi kenttä; kenttäasetukset ja niiden tyyppi voidaan tarkastella kartoituksissa.
Jos todennus on määritetty (tarkastelemme sitä myöhemmin), on määritettävä kirjautumistiedot tiettyyn hakemistoon kirjoittamista varten, tässä esimerkissä se on "tssolution" salasanalla "cool". Voit erottaa käyttäjien oikeudet kirjoittaa lokeja vain tiettyyn hakemistoon, ei enempää.
Käynnistä Logstash.
Logstash-määritystiedosto:
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"
}
}
}
Tarkistamme asetustiedoston oikeellisuuden:
/usr/share/logstash/bin//logstash -f checkpoint.conf
Aloita Logstash-prosessi:
sudo systemctl käynnistää logstash
Tarkistamme, että prosessi on alkanut:
sudo systemctl status logstash
Katsotaan, onko pistorasia ylhäällä:
netstat -nat |grep 5555
Tukkien tarkistus Kibanassa.
Kun kaikki on käynnissä, mene Kibanaan - Tutustu, varmista, että kaikki on määritetty oikein, kuva on napsautettava!
Kaikki lokit ovat paikoillaan ja näemme kaikki kentät ja niiden arvot!
Johtopäätös
Tarkastelimme Logstash-määritystiedoston kirjoittamista, ja tuloksena saimme jäsentimen kaikista kentistä ja arvoista. Nyt voimme etsiä ja piirtää tiettyjä kenttiä. Seuraavaksi kurssilla tarkastellaan visualisointia Kibanassa ja luodaan yksinkertainen kojelauta. On syytä mainita, että Logstash-määritystiedostoa on jatkuvasti päivitettävä tietyissä tilanteissa, esimerkiksi kun haluamme korvata kentän arvon numerosta sanaksi. Seuraavissa artikkeleissa teemme tämän jatkuvasti.
Pysy siis kuulolla
Lähde: will.com