2. Pila elastikoa: segurtasun-erregistroen azterketa. Logstash

2. Pila elastikoa: segurtasun-erregistroen azterketa. Logstash

Azkenean Artikulu ezagutu genuen ELK pila, zer software produktuz osatuta dagoen. Eta ingeniari batek ELK pilarekin lan egiten duenean aurre egin behar dion lehen zeregina elastiko bilaketan biltegiratzeko erregistroak bidaltzea da, ondoren aztertzeko. Hala ere, hau ezpain-zerbitzua besterik ez da, elasticsearch-ek eremu eta balio jakin batzuekin dokumentu moduan gordetzen ditu erregistroak, hau da, ingeniariak hainbat tresna erabili behar ditu amaierako sistemetatik bidaltzen den mezua analizatzeko. Hau hainbat modutan egin daiteke: idatzi APIa erabiliz dokumentuak datu-basera gehituko dituen programa bat, edo prest dauden irtenbideak erabili. Ikastaro honetan irtenbidea aztertuko dugu Logstash, ELK pilaren parte dena. Azken puntuko sistemetatik Logstash-era erregistroak nola bidal ditzakegun aztertuko dugu, eta gero konfigurazio-fitxategi bat ezarriko dugu Elasticsearch datu-basera analizatzeko eta birbideratzeko. Horretarako, Check Pointeko suebakiko erregistroak hartzen ditugu sarrerako sistema gisa.

Ikastaroak ez du ELK pilaren instalazioa lantzen, gai honi buruzko artikulu ugari baitago; konfigurazio osagaia hartuko dugu kontuan.

Egin dezagun Logstash konfiguraziorako ekintza-plan bat:

  1. elasticsearch-ek erregistroak onartuko dituela egiaztatzea (portuaren funtzionaltasuna eta irekitasuna egiaztatzea).
  2. Gertaerak Logstash-era nola bidal ditzakegun aztertzen dugu, metodo bat aukeratu eta hura inplementatu.
  3. Sarrera Logstash konfigurazio fitxategian konfiguratzen dugu.
  4. Irteera Logstash konfigurazio fitxategian konfiguratzen dugu arazketa moduan, erregistro-mezua nolakoa den ulertzeko.
  5. Iragazkia konfiguratzea.
  6. Irteera zuzena konfiguratzea ElasticSearch-en.
  7. Logstash abiarazten da.
  8. Kibanako erregistroak egiaztatzea.

Ikus ditzagun puntu bakoitza zehatzago:

Elastsearch-ek erregistroak onartuko dituela egiaztatzea

Horretarako, curl komandoa erabil dezakezu Logstash inplementatuta dagoen sistematik Elasticsearch-erako sarbidea egiaztatzeko. Autentifikazioa konfiguratuta baduzu, erabiltzailea/pasahitza ere transferituko dugu curl bidez, aldatu ez baduzu 9200 ataka zehaztuz. Behekoaren antzeko erantzuna jasotzen baduzu, dena ondo dago.

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

Erantzuna jasotzen ez bada, hainbat akats mota egon daitezke: elasticsearch prozesua ez dago martxan, okerreko ataka zehaztuta dago edo portua blokeatuta dago elasticsearch instalatuta dagoen zerbitzarian suebaki batek.

Ikus dezagun Logstash-era erregistroak nola bidal ditzakezun checkpoint suebaki batetik

Check Point kudeaketa zerbitzaritik Logstash-era erregistroak bidal ditzakezu syslog bidez log_exporter utilitatea erabiliz, honi buruz gehiago irakur dezakezu hemen Artikulu, hemen korrontea sortzen duen komandoa bakarrik utziko dugu:

cp_log_export gehitu izena check_point_syslog target-server < > target-port 5555 protokoloa tcp formatua irakurketa modu generikoa erdi-bateratua

< > - Logstash-ek exekutatzen duen zerbitzariaren helbidea, target-port 5555 - log-ak bidaliko ditugun ataka, tcp bidez erregistroak bidaltzeak zerbitzaria kargatu dezake, beraz, kasu batzuetan zuzenagoa da udp erabiltzea.

INPUT konfiguratzea Logstash konfigurazio fitxategian

2. Pila elastikoa: segurtasun-erregistroen azterketa. Logstash

Lehenespenez, konfigurazio fitxategia /etc/logstash/conf.d/ direktorioan dago. Konfigurazio fitxategiak 3 zati esanguratsu ditu: INPUT, FILTER, OUTPUT. IN INPUT sistemak nondik hartuko dituen erregistroak adieraziko dugu FILTER analizatu erregistroa - konfiguratu mezua nola banatu eremuetan eta balioetan OUTPUT irteerako korrontea konfiguratzen dugu - non bidaliko diren analizatutako erregistroak.

Lehenik eta behin, konfigura ditzagun INPUT, kontuan izan daitezkeen mota batzuk: fitxategia, tcp eta exe.

Tcp:

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

modua => "zerbitzaria"
Logstash konexioak onartzen ari dela adierazten du.

ataka => 5555
ostalaria => "10.10.1.205"
Konexioak onartzen ditugu 10.10.1.205 (Logstash) IP helbidearen bidez, 5555 ataka - Suebakiaren politikak baimenduta egon behar du ataka.

mota => "kontrol-puntua"
Dokumentua markatzen dugu, oso erosoa sarrerako hainbat konexio badituzu. Ondoren, konexio bakoitzerako zure iragazkia idatz dezakezu if konstrukzio logikoa erabiliz.

File:

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

Ezarpenen deskribapena:
bidea => "/var/log/openvas_report/*"
Fitxategiak zein direktoriotan irakurri behar diren adierazten dugu.

mota => "openvas"
Gertaera mota.

start_position => "hasiera"
Fitxategi bat aldatzean, fitxategi osoa irakurtzen du; "amaiera" ezartzen baduzu, sistemak fitxategiaren amaieran erregistro berriak agertu arte itxarongo du.

Zuzendaria:

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

Sarrera hau erabiliz, (soilik!) shell komando bat abiarazten da eta bere irteera erregistro-mezu bihurtzen da.

komandoa => "ls -alh"
Irteera interesatzen zaigun komandoa.

tartea => 30
Aginduak deitzeko tartea segundotan.

Suebakitik erregistroak jasotzeko, iragazki bat erregistratzen dugu tcp edo udp, Logstash-era erregistroak nola bidaltzen diren arabera.

Irteera Logstash konfigurazio fitxategian konfiguratzen dugu arazketa moduan, erregistro-mezua nolakoa den ulertzeko

INPUT konfiguratu ondoren, log-mezua nolakoa izango den eta zer metodo erabili behar diren ulertu behar dugu erregistro-iragazkia (analizatzailea) konfiguratzeko.

Horretarako, emaitza stdout-era ateratzen duen iragazki bat erabiliko dugu jatorrizko mezua ikusteko; momentu honetan konfigurazio fitxategi osoa honela izango da:

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

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

Exekutatu komandoa egiaztatzeko:
sudo /usr/share/logstash/bin//logstash -f /etc/logstash/conf.d/checkpoint.conf
Emaitza ikusten dugu, argazkia klikagarria da:

2. Pila elastikoa: segurtasun-erregistroen azterketa. Logstash

Kopiatzen baduzu, itxura hau izango du:

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,

Mezu hauei erreparatuz, ulertzen dugu erregistroek itxura dutela: eremua = balioa edo gakoa = balioa, hau da, kv izeneko iragazkia egokia da. Kasu zehatz bakoitzerako iragazki egokia aukeratzeko, komenigarria litzateke dokumentazio teknikoan haiekin ezagutzea edo lagun bati galdetzea.

Iragazkia konfiguratzea

kv hautatu genuen azken fasean, iragazki honen konfigurazioa jarraian aurkezten da:

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

Eremua eta balioa banatuko dugun ikurra hautatzen dugu - "=". Erregistroan sarrera berdinak baditugu, datu-basean instantzia bakarra gordetzen dugu, bestela balio berdinen array batekin amaituko duzu, hau da, β€œfoo = some foo=some” mezua badugu, foo bakarrik idatziko dugu. = batzuk.

Irteera zuzena konfiguratzea ElasticSearch-en

Iragazkia konfiguratuta dagoenean, erregistroak datu-basera igo ditzakezu elastiko bilaketa:

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

Dokumentua kontrol-puntu motarekin sinatzen bada, gertaera elasticsearch datu-basean gordetzen dugu, 10.10.1.200 9200 atakan lehenespenez konexioak onartzen dituena. Dokumentu bakoitza indize zehatz batean gordetzen da, kasu honetan "checkpoint-" + uneko ordu-data indizean gordetzen dugu. Indize bakoitzak eremu-multzo jakin bat izan dezake, edo automatikoki sortzen da eremu berri bat mezu batean agertzen denean; eremuen ezarpenak eta haien mota mapetan ikus daitezke.

Autentifikazioa konfiguratuta baduzu (gero ikusiko dugu), indize zehatz batean idazteko kredentzialak zehaztu behar dira, adibide honetan β€œtssolution” da β€œcool” pasahitzarekin. Erabiltzaile-eskubideak bereiz ditzakezu erregistroak indize zehatz batean soilik idazteko eta ez gehiago.

Abiarazi Logstash.

Logstash konfigurazio fitxategia:

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

Konfigurazio fitxategia zuzena dela egiaztatzen dugu:
/usr/share/logstash/bin//logstash -f checkpoint.conf
2. Pila elastikoa: segurtasun-erregistroen azterketa. Logstash

Hasi Logstash prozesua:
sudo systemctl hasiera logstash

Prozesua hasi dela egiaztatzen dugu:
sudo systemctl status logstash

2. Pila elastikoa: segurtasun-erregistroen azterketa. Logstash

Ikus dezagun entxufea piztuta dagoen:
netstat -nat |grep 5555

2. Pila elastikoa: segurtasun-erregistroen azterketa. Logstash

Kibanako erregistroak egiaztatzea.

Dena martxan jarri ondoren, joan Kibanara - Ezagutu, ziurtatu dena behar bezala konfiguratuta dagoela, argazkia klikagarria dela!

2. Pila elastikoa: segurtasun-erregistroen azterketa. Logstash

Erregistro guztiak daude eta eremu guztiak eta haien balioak ikus ditzakegu!

Ondorioa

Logstash konfigurazio-fitxategi bat nola idatzi aztertu genuen eta, ondorioz, eremu eta balio guztien analizatzailea lortu genuen. Orain eremu zehatzen bilaketa eta grafikoarekin lan egin dezakegu. Ondoren, ikastaroan Kibana-n bistaratzea aztertuko dugu eta panel sinple bat sortuko dugu. Aipatzekoa da Logstash konfigurazio fitxategia etengabe eguneratu behar dela zenbait egoeratan, adibidez, eremu baten balioa zenbaki batetik hitz batera ordezkatu nahi dugunean. Hurrengo artikuluetan hau etengabe egingo dugu.

Beraz, egon adi (Telegrama, Facebook, VK, TS Solution Bloga), Yandex.Zen.

Iturria: www.habr.com

Gehitu iruzkin berria