2. Stack Elastic: analîzkirina têketinên ewlehiyê. Logstash

2. Stack Elastic: analîzkirina têketinên ewlehiyê. Logstash

Di ya paşîn de gotara me hev dît ELK stack, ew ji kîjan hilberên nermalavê pêk tê. Û gava yekem karê ku endezyarek pê re rû bi rû dimîne dema ku bi stacka ELK re dixebite ev e ku ji bo analîza paşîn têketinên hilanînê di elasticsearch de dişîne. Lêbelê, ev tenê karûbarê lêv e, elasticsearch têketinên di forma belgeyên bi hin zevî û nirxan de hilîne, ku tê vê wateyê ku endezyar pêdivî ye ku amûrên cihêreng bikar bîne da ku peyama ku ji pergalên paşîn ve hatî şandin pars bike. Ev dikare bi çend awayan were kirin - bixwe bernameyek binivîse ku dê bi karanîna API-ê belgeyan li databasê zêde bike, an çareseriyên amade bikar bîne. Di vê qursê de em ê çareseriyê bifikirin Logstash, ku beşek ji stack ELK e. Em ê lê binerin ka em çawa dikarin têketinên ji pergalên xala dawîn ji Logstash re bişînin, û dûv re em ê pelek vesazkirinê saz bikin da ku ji databasa Elasticsearch veqetînin û beralî bikin. Ji bo kirina vê yekê, em têketinên ji dîwarê dîwarê Check Point wekî pergala gihîştinê digirin.

Kurs sazkirina ELK stackê nagire, ji ber ku di vê mijarê de hejmareke mezin gotar hene; em ê pêkhateya mîhengê bifikirin.

Ka em ji bo veavakirina Logstash plansaziyek çalakiyê derxînin:

  1. Kontrolkirina ku elasticsearch dê têketin qebûl bike (kontrolkirina fonksiyon û vebûna portê).
  2. Em difikirin ka em çawa dikarin bûyeran ji Logstash re bişînin, rêbazek hilbijêrin û wê bicîh bikin.
  3. Em Input di pelê veavakirina Logstash de mîheng dikin.
  4. Em Outputê di pelê veavakirina Logstash de di moda debugkirinê de mîheng dikin da ku fêm bikin ka peyama têketinê çawa xuya dike.
  5. Sazkirina Parzûnê.
  6. Di ElasticSearch de Hilbera rast saz bikin.
  7. Logstash dest pê dike.
  8. Kontrolkirina têketinên li Kibana.

Ka em li her xalê bi hûrgulî binêrin:

Kontrolkirina ku elasticsearch dê têketin qebûl bike

Ji bo kirina vê yekê, hûn dikarin fermana curl bikar bînin da ku gihîştina Elasticsearch ji pergala ku Logstash li ser hatî bicîh kirin kontrol bikin. Ger we erêkirin mîheng kiriye, wê hingê em bikarhêner / şîfreya xwe jî bi riya curl veguhezînin, ger we ew neguherandiye porta 9200 diyar dike. Ger hûn bersivek mîna ya jêrîn bistînin, wê hingê her tişt di rê de ye.

[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 ~]$

Ger bersiv neyê wergirtin, wê hingê dibe ku çend celeb xeletî hebin: pêvajoya elasticsearch nayê xebitandin, porta xelet tête diyar kirin, an port ji hêla dîwarê agir ve li ser servera ku elasticsearch tê saz kirin tê asteng kirin.

Ka em binihêrin ka hûn çawa dikarin têketinên ji agirê xala kontrolê ji Logstash re bişînin

Ji servera rêveberiya Check Point hûn dikarin têketinên ji Logstash re bi riya syslog-ê bi karanîna kargêriya log_exporter bişînin, hûn dikarin li vir bêtir li ser wê bixwînin. gotara, li vir em ê tenê fermana ku tîrêjê diafirîne bihêlin:

cp_log_export navê lê zêde bike check_point_syslog target-server < > target-port 5555 protokola tcp formata moda xwendina gelemperî ya nîv-yekgirtî

< > - Navnîşana servera ku Logstash li ser dimeşe, porta target 5555 - porta ku em ê têketin jê re bişînin, şandina têketin bi tcp dikare serverê bar bike, ji ber vê yekê di hin rewşan de rasttir e ku meriv udp bikar bîne.

Di pelê veavakirina Logstash de INPUT saz bikin

2. Stack Elastic: analîzkirina têketinên ewlehiyê. Logstash

Bi xwerû, pelê veavakirinê di pelrêça /etc/logstash/conf.d/ de ye. Pela veavakirinê ji 3 beşên watedar pêk tê: INPUT, FILTER, DERKET. LI BEYAN em destnîşan dikin ku pergal dê ji ku derê têketinan bigire, tê de PARZÛN têketinê parsek bikin - saz bikin ka meriv çawa peyamê li qad û nirxan dabeş dike, tê de KARÛABR em herikîna derketinê mîheng dikin - li ku derê têketinên parskirî dê werin şandin.

Pêşîn, werin em INPUT-ê mîheng bikin, hin celebên ku dikarin bibin - pel, tcp û exe binirxînin.

TCP:

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

mod => "server"
Nîşan dide ku Logstash pêwendiyan qebûl dike.

port => 5555
host => "10.10.1.205"
Em pêwendiyan bi navnîşana IP-ya 10.10.1.205 (Logstash), port 5555 qebûl dikin - port divê ji hêla polîtîkaya firewall ve were destûr kirin.

type => "kontrol xal"
Em belgeyê destnîşan dikin, heke we çend girêdanên hatinê hebin, pir rehet e. Dûv re, ji bo her pêwendiyê hûn dikarin parzûna xwe bi karanîna avakirina heke-ya mantiqî binivîsin.

Dosî:

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

Danasîna mîhengan:
rê => "/var/log/openvas_report/*"
Em pelrêça ku tê de pêdivî ye ku pel werin xwendin destnîşan dikin.

type => "openvas"
Cureyê bûyerê.

start_position => "destpêk"
Dema ku pelek diguhezîne, ew pelê tevahî dixwîne; heke hûn "dawî" destnîşan bikin, pergal li bendê ye ku tomarên nû li dawiya pelê xuya bibin.

Exec:

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

Bi karanîna vê têketinê, fermanek (tenê!) şêlê tê dest pê kirin û derketina wê vediguhere peyamek têketinê.

ferman => "ls -alh"
Fermana ku derenca wê me eleqedar dike.

navber => 30
Navbera banga fermanê di çirkeyan de.

Ji bo ku em têketinên ji dîwarê agir bistînin, em parzûnek tomar dikin tcp an udp, Li gor ka çawa têketin ji Logstash re têne şandin.

Em Derketinê di pelê veavakirinê de Logstash di moda debugkirinê de mîheng dikin da ku fêm bikin ka peyama têketinê çawa xuya dike

Piştî ku me INPUT mîheng kir, divê em fêhm bikin ka dê peyama têketinê çawa xuya bike û ji bo mîhengkirina parzûna têketinê (parser) çi rêbaz hewce ne ku werin bikar anîn.

Ji bo vê yekê, em ê fîlterek bikar bînin ku encamê ji stdout re derdixe da ku em peyama orîjînal bibînin; pelê mîhengê ya bêkêmasî ya niha dê bi vî rengî xuya bike:

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

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

Ji bo kontrolkirinê fermanê bimeşînin:
sudo /usr/share/logstash/bin//logstash -f /etc/logstash/conf.d/checkpoint.conf
Em encamê dibînin, wêne tê klîk kirin:

2. Stack Elastic: analîzkirina têketinên ewlehiyê. Logstash

Ger hûn wê kopî bikin ew ê weha xuya bike:

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,

Dema ku em li van peyaman dinêrin, em fam dikin ku têketin wiha xuya dikin: zevî = nirx an jî kilît = nirx, ku tê vê wateyê ku parzûnek bi navê kv guncan e. Ji bo ku hûn ji bo her dozek taybetî parzûna rast hilbijêrin, dê fikrek baş be ku hûn di belgeyên teknîkî de xwe bi wan re nas bikin, an ji hevalek xwe bipirsin.

Sazkirina Parzûnê

Di qonaxa paşîn de me kv hilbijart, veavakirina vê parzûnê li jêr tê pêşkêş kirin:

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

Em sembola ku em ê zeviyê û nirxê dabeş bikin - "=" hilbijêrin. Ger di têketinê de têketinên me yên yeksan hebin, em tenê mînakek di databasê de tomar dikin, wekî din hûn ê bi rêzek nirxên yeksan biqedin, ango heke me peyama "foo = hin foo = hin" hebe em tenê foo dinivîsin. = hin.

Di ElasticSearch de Hilbera rast saz bikin

Piştî ku Parzûn hate mîheng kirin, hûn dikarin têketinên li databasê bar bikin elasticsearch:

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

Ger belge bi celebê nuqteya kontrolê were îmze kirin, em bûyerê di databasa elasticsearch de hilînin, ku pêwendiyan di 10.10.1.200-ê de li port 9200-ê wekî xwerû qebûl dike. Her belge li pêdekek taybetî tê hilanîn, di vê rewşê de em di navnîşa "kontrol-" + dîroka dema niha de hilînin. Her index dikare xwedan komek zeviyên taybetî be, an jî dema ku qadek nû di peyamekê de xuya dibe bixweber tê afirandin; mîhengên zeviyê û celebê wan dikare di nexşeyan de were dîtin.

Ger we erêkirin mîheng kiriye (em ê paşê lê binerin), divê pêbaweriyên ji bo nivîsandina navnîşek taybetî bêne diyar kirin, di vê nimûneyê de ew "tssolution" bi şîfreya "cool" e. Hûn dikarin mafên bikarhêneran ji hev cuda bikin ku têketin tenê li ser navnîşek taybetî û ne bêtir binivîsin.

Logstash dest pê bikin.

Pelê veavakirina Logstash:

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"
  	}
}
}

Em pelê mîhengê ji bo rastbûnê kontrol dikin:
/usr/share/logstash/bin//logstash -f checkpoint.conf
2. Stack Elastic: analîzkirina têketinên ewlehiyê. Logstash

Pêvajoya Logstash dest pê bikin:
sudo systemctl destpêkirina logstash

Em kontrol dikin ku pêvajo dest pê kiriye:
sudo systemctl statuya logstash

2. Stack Elastic: analîzkirina têketinên ewlehiyê. Logstash

Ka em binihêrin ka soket rabûye:
netstat -nat |grep 5555

2. Stack Elastic: analîzkirina têketinên ewlehiyê. Logstash

Kontrolkirina têketinên li Kibana.

Piştî ku her tişt dimeşe, biçin Kibana - Vedîtin, pê ewle bine ku her tişt rast hatî mîheng kirin, wêne klîk e!

2. Stack Elastic: analîzkirina têketinên ewlehiyê. Logstash

Hemî têketin di cîh de ne û em dikarin hemî qadan û nirxên wan bibînin!

encamê

Me nihêrî ka meriv çawa pelek mîhengê Logstash dinivîse, û di encamê de me parsekek hemî zevî û nirxan girt. Naha em dikarin bi lêgerîn û xêzkirina zeviyên taybetî re bixebitin. Dûv re di qursê de em ê li dîtbarîkirinê li Kibana binêrin û tabloyek sade biafirînin. Hêjayî gotinê ye ku pelê veavakirina Logstash di hin rewşan de pêdivî ye ku bi domdarî were nûve kirin, mînakî, dema ku em dixwazin nirxa zeviyek ji hejmarekê li peyvekê biguhezînin. Di gotarên paşîn de em ê vê yekê bi berdewamî bikin.

Ji ber vê yekê hişyar bimînin (Têlxiram, facebook, VK, TS Çareseriya Blog), Yandex Zen.

Source: www.habr.com

Add a comment