Π ΠΏΡΠΎΡΠ»ΠΎΠΉ
Π ΡΠ°ΠΌΠΊΠ°Ρ
ΠΊΡΡΡΠ° Π½Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ELK stack, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠ°ΡΠ΅ΠΉ Π½Π° ΡΡΡ ΡΠ΅ΠΌΡ, Π±ΡΠ΄Π΅ΠΌ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ.
Π‘ΠΎΡΡΠ°Π²ΠΈΠΌ ΠΏΠ»Π°Π½ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Logstash:
- ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΠΎ elasticsearch Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π»ΠΎΠ³ΠΈ (ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΈ ΠΎΡΠΊΡΡΡΠΎΡΡΠΈ ΠΏΠΎΡΡΠ°).
- Π Π°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌ ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠΎΠ±ΡΡΠΈΡ Π² Logstash, Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΡΠΏΠΎΡΠΎΠ±, ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ.
- ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ Input Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ Logstash.
- ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ Output Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ Logstash Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Π΄Π΅Π±Π°Π³Π°, Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π»ΠΎΠ³ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
- ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ Filter.
- ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΉ Output Π² ElasticSearch.
- ΠΠ°ΠΏΡΡΠΊΠ°ΠΌ Logstash.
- ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π»ΠΎΠ³ΠΈ Π² Kibana.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠ½ΠΊΡ:
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΠΎ elasticsearch Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π»ΠΎΠ³ΠΈ
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ curl Π΄ΠΎΡΡΡΠΏ Π² Elasticsearch ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡ Logstash. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π°ΡΡΡΠΎΠ΅Π½Π° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, ΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΡΠ΅Π· curl ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ/ΠΏΠ°ΡΠΎΠ»Ρ, ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΏΠΎΡΡ 9200 Π΅ΡΠ»ΠΈ Π²Ρ Π΅Π³ΠΎ Π½Π΅ ΠΌΠ΅Π½ΡΠ»ΠΈ. ΠΡΠ»ΠΈ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ ΠΎΡΠ²Π΅Ρ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅, Π·Π½Π°ΡΠΈΡ Π²ΡΠ΅ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
[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 ~]$
ΠΡΠ»ΠΈ ΠΎΡΠ²Π΅Ρ Π½Π΅ ΠΏΡΠΈΡΠ΅Π», ΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΈΠ΄ΠΎΠ² ΠΎΡΠΈΠ±ΠΎΠΊ: Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ elasticsearch, ΡΠΊΠ°Π·Π°Π½ Π½Π΅ ΡΠΎΡ ΠΏΠΎΡΡ, Π»ΠΈΠ±ΠΎ ΠΏΠΎΡΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ ΡΠ°Π΅ΡΠ²ΠΎΠ»ΠΎΠΌ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅, Π³Π΄Π΅ ΡΡΠΎΠΈΡ elasticsearch.
Π Π°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π»ΠΎΠ³ΠΈ Π² Logstash Ρ ΠΌΠ΅ΠΆΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠΊΡΠ°Π½Π° check point
Π‘ Check Point management server ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π»ΠΎΠ³ΠΈ Π² Logstash ΡΠ΅ΡΠ΅Π· syslog, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΈΠ»ΠΈΡΡ log_exporter, Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ Π½Π΅ΠΉ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΉ
cp_log_export add name check_point_syslog target-server <<ip_address_logstash>> target-port 5555 protocol tcp format generic read-mode semi-unified
<<ip_address_logstash>> β Π°Π΄ΡΠ΅Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΡΡΡΠΈΡΡΡ Logstash, target-port 5555 β ΠΏΠΎΡΡ Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅ΠΌ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π»ΠΎΠ³ΠΈ, ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΎΠ² ΠΏΠΎ tcp ΠΌΠΎΠΆΠ΅Ρ Π½Π°Π³ΡΡΠ·ΠΈΡΡ ΡΠ΅ΡΠ²Π΅Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΡΠ°Π²ΠΈΡΡ udp.
ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ INPUT Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ Logstash
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ /etc/logstash/conf.d/. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· 3 ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΡΡ
ΡΠ°ΡΡΠ΅ΠΉ: INPUT, FILTER, OUTPUT. Π INPUT ΠΌΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΎΡΠΊΡΠ΄Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π±ΡΠ΄Π΅Ρ Π±ΡΠ°ΡΡ Π»ΠΎΠ³ΠΈ, Π² FILTER ΠΏΠ°ΡΡΠΈΠΌ Π»ΠΎΠ³ β Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ»Ρ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π² OUTPUT Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ Π²ΡΡ
ΠΎΠ΄ΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ β ΠΊΡΠ΄Π° ΡΠ°ΡΠΏΠ°ΡΡΠ΅Π½Π½ΡΠ΅ Π»ΠΎΠ³ΠΈ Π±ΡΠ΄ΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ.
Π‘Π½Π°ΡΠ°Π»Π° Π½Π°ΡΡΡΠΎΠΈΠΌ INPUT, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΠΏΡ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ β file, tcp ΠΈ exe.
Tcp:
input {
tcp {
port => 5555
host => β10.10.1.205β
type => "checkpoint"
mode => "server"
}
}
mode => Β«serverΒ»
ΠΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ ΡΡΠΎ Logstash ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
port => 5555
host => β10.10.1.205β
ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΏΠΎ IP Π°Π΄ΡΠ΅ΡΡ 10.10.1.205 (Logstash), ΠΏΠΎΡΡ 5555 β ΠΏΠΎΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΎΠΉ ΡΠ°Π΅ΡΠ²ΠΎΠ»Π°.
type => Β«checkpointΒ»
ΠΠ°ΡΠΊΠΈΡΡΠ΅ΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ, ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ Π² ΡΠ»ΡΡΠ°Π΅ Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Ρ
ΠΎΠ΄ΡΡΠΈΡ
ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ. Π ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΉ ΡΠΈΠ»ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ if.
File:
input {
file {
path => "/var/log/openvas_report/*"
type => "openvas"
start_position => "beginning"
}
}
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π°ΡΡΡΠΎΠ΅ΠΊ:
path => «/var/log/openvas_report/*»
Π£ΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, ΡΠ°ΠΉΠ»Ρ Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠΈΡΠ°ΡΡ.
type => Β«openvasΒ»
Π’ΠΈΠΏ ΡΠΎΠ±ΡΡΠΈΡ.
start_position => Β«beginningΒ»
ΠΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ°ΠΉΠ»Π° ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΡΠ°ΠΉΠ» ΡΠ΅Π»ΠΈΠΊΠΎΠΌ, Π΅ΡΠ»ΠΈ Π²ΡΡΡΠ°Π²ΠΈΡΡ Β«endΒ» ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΆΠ΄Π΅Ρ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ
Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Π°.
Exec:
input {
exec {
command => "ls -alh"
interval => 30
}
}
ΠΠΎ Π΄Π°Π½Π½ΠΎΠΌΡ ΠΈΠ½ΠΏΡΡΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ (ΡΠΎΠ»ΡΠΊΠΎ!) shell ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈ Π΅Π΅ Π²ΡΠ²ΠΎΠ΄ ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ Π² Π»ΠΎΠ³ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
command => Β«ls -alhΒ»
ΠΠΎΠΌΠ°Π½Π΄Π°, Π²ΡΠ²ΠΎΠ΄ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ.
interval => 30
ΠΠ½ΡΠ΅ΡΠ²Π°Π» Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ
.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π»ΠΎΠ³ΠΈ Ρ ΠΌΠ΅ΠΆΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠΊΡΠ°Π½Π° ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠΈΠ»ΡΡΡ tcp ΠΈΠ»ΠΈ udp, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π»ΠΎΠ³ΠΈ Π² Logstash.
ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ Output Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ Logstash Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Π΄Π΅Π±Π°Π³Π°, Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π»ΠΎΠ³ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΌΡ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ INPUT, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ½ΡΡΡ ΠΊΠ°ΠΊ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π»ΠΎΠ³ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠΈΠ»ΡΡΡΠ°(ΠΏΠ°ΡΡΠ΅ΡΠ°) Π»ΠΎΠ³ΠΎΠ².
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠ»ΡΡΡ ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ΄Π°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² stdout Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» Π½Π° ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
input
{
tcp
{
port => 5555
type => "checkpoint"
mode => "server"
host => β10.10.1.205β
}
}
output
{
if [type] == "checkpoint"
{
stdout { codec=> json }
}
}
ΠΠ°ΠΏΡΡΠΊΠ°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ:
sudo /usr/share/logstash/bin//logstash -f /etc/logstash/conf.d/checkpoint.conf
ΠΠΈΠ΄ΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ° ΠΊΠ»ΠΈΠΊΠ°Π±Π΅Π»ΡΠ½Π°:
ΠΡΠ»ΠΈ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
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,
Π‘ΠΌΠΎΡΡΡ Π½Π° Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ ΡΡΠΎ Π»ΠΎΠ³ΠΈ ΠΈΠΌΠ΅ΡΡ Π²ΠΈΠ΄: ΠΏΠΎΠ»Π΅ = Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ key = value, Π° Π·Π½Π°ΡΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ ΡΠΈΠ»ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ kv. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΡΠΈΠ»ΡΡΡ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ ΡΠ»ΡΡΠ°Ρ Π±ΡΠ»ΠΎ Π±Ρ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ Ρ Π½ΠΈΠΌΠΈ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Π² ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π»ΠΈΠ±ΠΎ ΡΠΏΡΠΎΡΠΈΡΡ Π΄ΡΡΠ³Π°.
ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ Filter
ΠΠ° ΠΏΡΠΎΡΠ»ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ Π²ΡΠ±ΡΠ°Π»ΠΈ kv, Π΄Π°Π»Π΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ°:
filter {
if [type] == "checkpoint"{
kv {
value_split => "="
allow_duplicate_values => false
}
}
}
ΠΡΠ±ΠΈΡΠ°Π΅ΠΌ ΡΠΈΠΌΠ²ΠΎΠ» ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π΄Π΅Π»ΠΈΡΡ ΠΏΠΎΠ»Π΅ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ β β=β. ΠΡΠ»ΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ Π² Π»ΠΎΠ³Π΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ, ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ Π² Π±Π°Π·Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ, ΠΈΠ½Π°ΡΠ΅ Ρ Π²Π°Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΡΠΎ Π΅ΡΡΡ Π΅ΡΠ»ΠΈ ΠΈΠΌΠ΅Π΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ βfoo = some foo=someβ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ foo = some.
ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΉ Output Π² ElasticSearch
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π½Π°ΡΡΡΠΎΠ΅Π½ Filter ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ³ΡΡΠΆΠ°ΡΡ Π»ΠΎΠ³ΠΈ Π² Π±Π°Π·Ρ elasticsearch:
output
{
if [type] == "checkpoint"
{
elasticsearch
{
hosts => ["10.10.1.200:9200"]
index => "checkpoint-%{+YYYY.MM.dd}"
user => "tssolution"
password => "cool"
}
}
}
ΠΡΠ»ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½ ΡΠΈΠΏΠΎΠΌ checkpoint, ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΡΠΎΠ±ΡΡΠΈΠ΅ Π² Π±Π°Π·Ρ elasticsearch, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π½Π° 10.10.1.200 Π½Π° ΠΏΠΎΡΡ 9200 ΠΏΠΎ Π΄Π΅ΡΠΎΠ»ΡΡ. ΠΠ°ΠΆΠ΄ΡΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ Π² ΠΈΠ½Π΄Π΅ΠΊΡ Β«checkpoint-Β» + ΡΠ΅ΠΊΡΡΠ°Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π΄Π°ΡΠ°. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±Π»Π°Π΄Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΏΠΎΠ»Π΅ΠΉ, Π»ΠΈΠ±ΠΎ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ Π² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ, Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΈΡ ΡΠΈΠΏ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² mappings.
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π°ΡΡΡΠΎΠ΅Π½Π° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ( ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠΎΠ·ΠΆΠ΅), ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½Ρ ΠΊΡΠ΅Π΄Ρ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠΎ Β«tssolutionΒ» Ρ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ Β«coolΒ». ΠΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π³ΡΠ°Π½ΠΈΡΠΈΡΡ ΠΏΡΠ°Π²Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π»ΠΎΠ³ΠΎΠ² ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Π±ΠΎΠ»ΡΡΠ΅.
ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ Logstash.
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» 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"
}
}
}
ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» Π½Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ:
/usr/share/logstash/bin//logstash -f checkpoint.conf
ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡ Logstash:
sudo systemctl start logstash
ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ Π·Π°ΠΏΡΡΡΠΈΠ»ΡΡ:
sudo systemctl status logstash
ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΠΏΠΎΠ΄Π½ΡΠ»ΡΡ Π»ΠΈ ΡΠΎΠΊΠ΅Ρ:
netstat -nat |grep 5555
ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π»ΠΎΠ³ΠΈ Π² Kibana.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²ΡΠ΅ Π·Π°ΠΏΡΡΠ΅Π½ΠΎ, Π·Π°Ρ ΠΎΠ΄ΠΈΠΌ Π² Kibana β Discover, ΡΠ±Π΅ΠΆΠ΄Π°Π΅ΠΌΡΡ ΡΡΠΎ Π²ΡΠ΅ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ° ΠΊΠ»ΠΈΠΊΠ°Π±Π΅Π»ΡΠ½Π°!
ΠΡΠ΅ Π»ΠΎΠ³ΠΈ Π½Π° ΠΌΠ΅ΡΡΠ΅ ΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ΄Π΅ΡΡ Π²ΡΠ΅ ΠΏΠΎΠ»Ρ ΠΈ ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ!
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» Logstash, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΏΠ°ΡΡΠ΅Ρ Π²ΡΠ΅Ρ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΠΎΠΈΡΠΊΠΎΠΌ ΠΈ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π³ΡΠ°ΡΠΈΠΊΠΎΠ² ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΏΠΎΠ»ΡΠΌ. ΠΠ°Π»Π΅Π΅ Π² ΠΊΡΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π² Kibana, ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡΠΎΡΡΠ΅Π½ΡΠΊΠΈΠΉ Π΄Π°ΡΠ±ΠΎΠ°ΡΠ΄. Π‘ΡΠΎΠΈΡ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ ΡΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» Logstash ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π΄ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π΄Π° Ρ ΠΎΡΠΈΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ Ρ ΡΠΈΡΡΡ Π½Π° ΡΠ»ΠΎΠ²ΠΎ. Π ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΡΠ°ΡΡΡΡ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ.
Π’Π°ΠΊ ΡΡΠΎ ΡΠ»Π΅Π΄ΠΈΡΠ΅ Π·Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΠΌΠΈ (
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com