PagÄtnÄ
Kurss neaptver ELK steka uzstÄdÄ«Å”anu, jo par Å”o tÄmu ir daudz rakstu; mÄs apsvÄrsim konfigurÄcijas komponentu.
IzstrÄdÄsim rÄ«cÄ«bas plÄnu Logstash konfigurÄcijai:
- PÄrbaude, vai elasticsearch pieÅems žurnÄlus (porta funkcionalitÄtes un atvÄrtÄ«bas pÄrbaude).
- MÄs apsveram, kÄ mÄs varam nosÅ«tÄ«t notikumus uz Logstash, izvÄlÄties metodi un ieviest to.
- MÄs konfigurÄjam ievadi Logstash konfigurÄcijas failÄ.
- MÄs konfigurÄjam izvadi Logstash konfigurÄcijas failÄ atkļūdoÅ”anas režīmÄ, lai saprastu, kÄ izskatÄs žurnÄla ziÅojums.
- Filtra iestatīŔana.
- Pareizas izvades iestatÄ«Å”ana pakalpojumÄ ElasticSearch.
- Logstash tiek palaists.
- Baļķu pÄrbaude KibanÄ.
ApskatÄ«sim katru punktu sÄ«kÄk:
PÄrbauda, āāvai elasticsearch pieÅems žurnÄlus
Lai to izdarÄ«tu, varat izmantot komandu curl, lai pÄrbaudÄ«tu piekļuvi Elasticsearch no sistÄmas, kurÄ ir izvietots Logstash. Ja jums ir konfigurÄta autentifikÄcija, mÄs arÄ« pÄrsÅ«tÄm lietotÄju/paroli caur curl, norÄdot portu 9200, ja neesat to mainÄ«jis. Ja saÅemat lÄ«dzÄ«gu atbildi kÄ zemÄk, tad viss ir kÄrtÄ«bÄ.
[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 ~]$
Ja atbilde netiek saÅemta, var bÅ«t vairÄku veidu kļūdas: elasticsearch process nedarbojas, ir norÄdÄ«ts nepareizs ports vai portu bloÄ·Ä ugunsmÅ«ris serverÄ«, kurÄ ir instalÄta elasticsearch.
ApskatÄ«sim, kÄ no kontrolpunkta ugunsmÅ«ra varat nosÅ«tÄ«t žurnÄlus uz Logstash
No Check Point pÄrvaldÄ«bas servera varat nosÅ«tÄ«t žurnÄlus uz Logstash, izmantojot syslog, izmantojot utilÄ«tu log_exporter, vairÄk par to varat lasÄ«t Å”eit
cp_log_export pievienoÅ”anas nosaukums check_point_syslog mÄrÄ·a-serveris < > mÄrÄ·a porta 5555 protokols tcp formÄta vispÄrÄ«gs lasÄ«Å”anas režīms daļÄji unificÄts
< > - servera adrese, uz kura darbojas Logstash, target-port 5555 - ports uz kuru mÄs sÅ«tÄ«sim žurnÄlus, žurnÄlu nosÅ«tÄ«Å”ana caur tcp var noslogot serveri, tÄpÄc dažos gadÄ«jumos pareizÄk ir izmantot udp.
INPUT iestatÄ«Å”ana Logstash konfigurÄcijas failÄ
PÄc noklusÄjuma konfigurÄcijas fails atrodas direktorijÄ /etc/logstash/conf.d/. KonfigurÄcijas fails sastÄv no 3 jÄgpilnÄm daļÄm: INPUT, FILTER, OUTPUT. IN INPUT mÄs norÄdÄm, no kurienes sistÄma Åems žurnÄlus FILTER parsÄt žurnÄlu ā iestatiet, kÄ ziÅojumu sadalÄ«t laukos un vÄrtÄ«bÄs REZULTÄTS mÄs konfigurÄjam izvades straumi - kur tiks nosÅ«tÄ«ti parsÄtie žurnÄli.
Vispirms konfigurÄsim INPUT, apsveriet dažus veidus, kas var bÅ«t - fails, tcp un exe.
TCP:
input {
tcp {
port => 5555
host => ā10.10.1.205ā
type => "checkpoint"
mode => "server"
}
}
režīms => "serveris"
NorÄda, ka Logstash pieÅem savienojumus.
ports => 5555
saimniekdators => ā10.10.1.205ā
MÄs pieÅemam savienojumus, izmantojot IP adresi 10.10.1.205 (Logstash), portu 5555 - portam ir jÄatļauj ugunsmÅ«ra politika.
ierakstiet => "kontrolpunkts"
MÄs atzÄ«mÄjam dokumentu, ļoti Ärti, ja jums ir vairÄki ienÄkoÅ”ie savienojumi. PÄc tam katram savienojumam varat uzrakstÄ«t savu filtru, izmantojot loÄ£isko if konstrukciju.
Fails:
input {
file {
path => "/var/log/openvas_report/*"
type => "openvas"
start_position => "beginning"
}
}
Iestatījumu apraksts:
ceļŔ => "/var/log/openvas_report/*"
MÄs norÄdÄm direktoriju, kurÄ faili ir jÄlasa.
tips => "openvas"
PasÄkuma veids.
start_position => "sÄkums"
Mainot failu, tas nolasa visu failu; ja iestatÄt ābeigasā, sistÄma gaida, lÄ«dz faila beigÄs parÄdÄ«sies jauni ieraksti.
IzpildÄ«tÄja:
input {
exec {
command => "ls -alh"
interval => 30
}
}
Izmantojot Å”o ievadi, tiek palaista (tikai!) Äaulas komanda un tÄs izvade tiek pÄrvÄrsta žurnÄla ziÅojumÄ.
komanda => "ls -alh"
Komanda, kuras izvade mÅ«s interesÄ.
intervÄls => 30
Komandu izsaukÅ”anas intervÄls sekundÄs.
Lai saÅemtu žurnÄlus no ugunsmÅ«ra, mÄs reÄ£istrÄjam filtru tcp vai udp, atkarÄ«bÄ no tÄ, kÄ Å¾urnÄli tiek nosÅ«tÄ«ti uz Logstash.
MÄs konfigurÄjam izvadi Logstash konfigurÄcijas failÄ atkļūdoÅ”anas režīmÄ, lai saprastu, kÄ izskatÄs žurnÄla ziÅojums
Kad esam konfigurÄjuÅ”i INPUT, mums ir jÄsaprot, kÄ izskatÄ«sies žurnÄla ziÅojums un kÄdas metodes ir jÄizmanto žurnÄla filtra (parsÄtÄja) konfigurÄÅ”anai.
Lai to izdarÄ«tu, mÄs izmantosim filtru, kas izvada rezultÄtu uz stdout, lai skatÄ«tu sÄkotnÄjo ziÅojumu; pilns konfigurÄcijas fails Å”obrÄ«d izskatÄ«sies Å”Ädi:
input
{
tcp
{
port => 5555
type => "checkpoint"
mode => "server"
host => ā10.10.1.205ā
}
}
output
{
if [type] == "checkpoint"
{
stdout { codec=> json }
}
}
Palaidiet komandu, lai pÄrbaudÄ«tu:
sudo /usr/share/logstash/bin//logstash -f /etc/logstash/conf.d/checkpoint.conf
MÄs redzam rezultÄtu, attÄls ir noklikŔķinÄms:
Ja to nokopÄsit, tas izskatÄ«sies Å”Ädi:
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,
AplÅ«kojot Å”os ziÅojumus, mÄs saprotam, ka žurnÄli izskatÄs Å”Ädi: lauks = vÄrtÄ«ba vai atslÄga = vÄrtÄ«ba, kas nozÄ«mÄ, ka filtrs ar nosaukumu kv ir piemÄrots. Lai izvÄlÄtos pareizo filtru katram konkrÄtajam gadÄ«jumam, bÅ«tu ieteicams ar tiem iepazÄ«ties tehniskajÄ dokumentÄcijÄ vai pajautÄt draugam.
Filtra iestatīŔana
PÄdÄjÄ posmÄ mÄs izvÄlÄjÄmies kv, Ŕī filtra konfigurÄcija ir parÄdÄ«ta zemÄk:
filter {
if [type] == "checkpoint"{
kv {
value_split => "="
allow_duplicate_values => false
}
}
}
MÄs izvÄlamies simbolu, ar kuru sadalÄ«sim lauku un vÄrtÄ«bu - ā=ā. Ja mums ir identiski ieraksti žurnÄlÄ, mÄs datu bÄzÄ saglabÄjam tikai vienu gadÄ«jumu, pretÄjÄ gadÄ«jumÄ jÅ«s iegÅ«sit identisku vÄrtÄ«bu masÄ«vu, tas ir, ja mums ir ziÅojums āfoo = daži foo=someā, mÄs rakstÄm tikai foo = daži.
Pareizas izvades iestatÄ«Å”ana pakalpojumÄ ElasticSearch
Kad filtrs ir konfigurÄts, varat augÅ”upielÄdÄt žurnÄlus datu bÄzÄ elastÄ«gÄ meklÄÅ”ana:
output
{
if [type] == "checkpoint"
{
elasticsearch
{
hosts => ["10.10.1.200:9200"]
index => "checkpoint-%{+YYYY.MM.dd}"
user => "tssolution"
password => "cool"
}
}
}
Ja dokuments ir parakstÄ«ts ar kontrolpunkta tipu, mÄs saglabÄjam notikumu elasticsearch datu bÄzÄ, kas pÄc noklusÄjuma pieÅem savienojumus 10.10.1.200 portÄ 9200. Katrs dokuments tiek saglabÄts noteiktÄ rÄdÄ«tÄjÄ, Å”ajÄ gadÄ«jumÄ mÄs saglabÄjam indeksÄ ācheckpoint-ā + paÅ”reizÄjÄ laika datums. Katram indeksam var bÅ«t noteikta lauku kopa vai tas tiek izveidots automÄtiski, kad ziÅojumÄ parÄdÄs jauns lauks; lauka iestatÄ«jumus un to veidu var skatÄ«t kartÄjumos.
Ja jums ir konfigurÄta autentifikÄcija (mÄs to apskatÄ«sim vÄlÄk), ir jÄnorÄda akreditÄcijas dati rakstÄ«Å”anai uz noteiktu indeksu, Å”ajÄ piemÄrÄ tas ir ātssolutionā ar paroli ācoolā. Varat atŔķirt lietotÄju tiesÄ«bas rakstÄ«t žurnÄlus tikai noteiktam indeksam un ne vairÄk.
Palaidiet programmu Logstash.
Logstash konfigurÄcijas fails:
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"
}
}
}
MÄs pÄrbaudÄm konfigurÄcijas faila pareizÄ«bu:
/usr/share/logstash/bin//logstash -f checkpoint.conf
SÄciet Logstash procesu:
sudo systemctl sÄkt logstash
MÄs pÄrbaudÄm, vai process ir sÄcies:
sudo systemctl statuss logstash
PÄrbaudÄ«sim, vai kontaktligzda ir augÅ”Ä:
netstat -nat |grep 5555
Baļķu pÄrbaude KibanÄ.
Kad viss darbojas, dodieties uz Kibana - Discover, pÄrliecinieties, ka viss ir pareizi konfigurÄts, bilde ir klikŔķinÄma!
Visi žurnÄli ir savÄs vietÄs un mÄs varam redzÄt visus laukus un to vÄrtÄ«bas!
SecinÄjums
MÄs apskatÄ«jÄm, kÄ uzrakstÄ«t Logstash konfigurÄcijas failu, un rezultÄtÄ mÄs ieguvÄm visu lauku un vÄrtÄ«bu parsÄtÄju. Tagad mÄs varam strÄdÄt ar konkrÄtu lauku meklÄÅ”anu un uzzÄ«mÄÅ”anu. TÄlÄk kursÄ apskatÄ«sim vizualizÄciju KibanÄ un izveidosim vienkÄrÅ”u informÄcijas paneli. Ir vÄrts pieminÄt, ka Logstash konfigurÄcijas fails ir pastÄvÄ«gi jÄatjaunina noteiktÄs situÄcijÄs, piemÄram, ja mÄs vÄlamies aizstÄt lauka vÄrtÄ«bu no skaitļa uz vÄrdu. NÄkamajos rakstos mÄs to darÄ«sim pastÄvÄ«gi.
TÄpÄc sekojiet lÄ«dzi informÄcijai (
Avots: www.habr.com