Өткенде
Курс ELK стекін орнатуды қамтымайды, өйткені бұл тақырып бойынша көптеген мақалалар бар, біз конфигурация компонентін қарастырамыз.
Logstash конфигурациясының әрекет жоспарын құрастырайық:
- Elasticsearch журналдарды қабылдайтынын тексеру (порттың функционалдығы мен ашықтығын тексеру).
- Біз Logstash-қа оқиғаларды қалай жіберуге, әдісті таңдауға және оны іске асыруға болатынын қарастырамыз.
- Logstash конфигурация файлында енгізуді конфигурациялаймыз.
- Журнал хабарламасы қалай көрінетінін түсіну үшін біз Logstash конфигурация файлында Отладка режимінде Output параметрін конфигурациялаймыз.
- Сүзгіні орнату.
- ElasticSearch ішінде дұрыс шығысты орнату.
- Logstash іске қосылады.
- Кибанадағы журналдарды тексеру.
Әр тармақты толығырақ қарастырайық:
Elasticsearch журналдарды қабылдайтынын тексеру
Бұл әрекетті орындау үшін, Logstash орналастырылған жүйеден Elasticsearch қызметіне кіруді тексеру үшін curl пәрменін пайдалануға болады. Егер сізде аутентификация конфигурацияланса, пайдаланушыны/құпия сөзді өзгертпеген болсаңыз, 9200 портын көрсете отырып, curl арқылы да тасымалдаймыз. Төмендегіге ұқсас жауап алсаңыз, бәрі жақсы.
[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 басқару серверінен log_exporter утилитасының көмегімен журналдарды Logstash жүйесіне syslog арқылы жіберуге болады, ол туралы толығырақ мына жерден оқи аласыз.
cp_log_export қосу атауы check_point_syslog мақсатты сервер < > мақсатты порт 5555 протоколы tcp пішімі жалпы оқу режимі жартылай біріктірілген
< > - Logstash жұмыс істейтін сервердің мекенжайы, мақсатты порт 5555 - біз журналдарды жіберетін порт, tcp арқылы журналдарды жіберу серверді жүктей алады, сондықтан кейбір жағдайларда udp пайдалану дұрысырақ.
Logstash конфигурация файлында INPUT параметрін орнату
Әдепкі бойынша конфигурация файлы /etc/logstash/conf.d/ каталогында орналасқан. Конфигурация файлы 3 мағыналы бөліктен тұрады: INPUT, FILTER, OUTPUT. IN INPUT жүйе журналдарды қай жерден алатынын көрсетеміз СҮЗГІ журналды талдау - хабарламаны өрістер мен мәндерге бөлу жолын орнату OUTPUT біз шығыс ағынын конфигурациялаймыз - онда талданған журналдар жіберіледі.
Алдымен INPUT конфигурациясын алайық, файл, tcp және exe болуы мүмкін кейбір түрлерін қарастырайық.
TCP:
input {
tcp {
port => 5555
host => “10.10.1.205”
type => "checkpoint"
mode => "server"
}
}
режим => «сервер»
Logstash қосылымдарды қабылдайтынын көрсетеді.
порт => 5555
хост => “10.10.1.205”
Біз қосылымдарды IP мекенжайы 10.10.1.205 (Logstash), 5555 порты арқылы қабылдаймыз - портқа брандмауэр саясаты рұқсат беруі керек.
type => "бақылау нүктесі"
Біз құжатты белгілейміз, егер сізде бірнеше кіріс қосылымдар болса, өте ыңғайлы. Әрі қарай, әрбір қосылым үшін логикалық if конструкциясын пайдаланып өзіңіздің сүзгіңізді жаза аласыз.
Файл:
input {
file {
path => "/var/log/openvas_report/*"
type => "openvas"
start_position => "beginning"
}
}
Параметрлердің сипаттамасы:
жол => "/var/log/openvas_report/*"
Біз файлдарды оқу керек каталогты көрсетеміз.
type => "openvas"
Оқиға түрі.
start_position => "бастау"
Файлды өзгерткен кезде ол бүкіл файлды оқиды, егер сіз «соңы» параметрін орнатсаңыз, жүйе файлдың соңында жаңа жазбалардың пайда болуын күтеді.
Орындаушы:
input {
exec {
command => "ls -alh"
interval => 30
}
}
Бұл енгізуді пайдалану арқылы (тек!) қабық командасы іске қосылады және оның шығысы журнал хабарламасына айналады.
пәрмен => "ls -alh"
Бізді шығысы қызықтыратын пәрмен.
интервал => 30
Пәрменді шақыру аралығы секундтарда.
Брандмауэрден журналдарды алу үшін біз сүзгіні тіркейміз tcp немесе пуд, журналдардың Logstash қызметіне қалай жіберілетініне байланысты.
Журнал хабарламасы қалай көрінетінін түсіну үшін біз Logstash конфигурация файлында Отладка режимінде Output конфигурациялаймыз.
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,
Бұл хабарламаларға қарап, журналдар келесідей көрінетінін түсінеміз: өріс = мән немесе кілт = мән, яғни kv деп аталатын сүзгі қолайлы. Әрбір нақты жағдай үшін дұрыс сүзгіні таңдау үшін олармен техникалық құжаттамада танысу немесе досыңыздан сұрау жақсы идея болар еді.
Сүзгіні орнату
Соңғы кезеңде біз кв таңдадық, бұл сүзгінің конфигурациясы төменде көрсетілген:
filter {
if [type] == "checkpoint"{
kv {
value_split => "="
allow_duplicate_values => false
}
}
}
Біз өріс пен мәнді бөлетін таңбаны таңдаймыз - «=». Егер журналда бірдей жазбалар болса, біз дерекқорда тек бір дананы сақтаймыз, әйтпесе сіз бірдей мәндердің массивіне ие боласыз, яғни бізде «foo = some foo = some» хабары болса, біз тек foo деп жазамыз. = кейбір.
ElasticSearch ішінде дұрыс шығысты орнату
Сүзгі конфигурацияланғаннан кейін журналдарды дерекқорға жүктеп салуға болады эластикалық ізденіс:
output
{
if [type] == "checkpoint"
{
elasticsearch
{
hosts => ["10.10.1.200:9200"]
index => "checkpoint-%{+YYYY.MM.dd}"
user => "tssolution"
password => "cool"
}
}
}
Құжат бақылау нүктесі түрімен қол қойылған болса, оқиғаны әдепкі бойынша 10.10.1.200 портындағы 9200 қосылымдарын қабылдайтын elasticsearch дерекқорына сақтаймыз. Әрбір құжат белгілі бір индексте сақталады, бұл жағдайда біз «бақылау нүктесі-» + ағымдағы уақыт күні индексіне сақтаймыз. Әрбір индексте өрістердің белгілі бір жинағы болуы мүмкін немесе хабарда жаңа өріс пайда болған кезде автоматты түрде жасалады; өріс параметрлері мен олардың түрін салыстыруларда көруге болады.
Егер сізде аутентификация конфигурацияланған болса (оны кейінірек қарастырамыз), белгілі бір индекске жазу үшін тіркелгі деректері көрсетілуі керек, бұл мысалда бұл «cool» құпия сөзі бар «tssolution». Журналдарды тек белгілі бір индекске жазу үшін пайдаланушы құқықтарын ажырата аласыз және одан артық емес.
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 бастау logstash
Біз процестің басталғанын тексереміз:
sudo systemctl күйінің журналы
Розетканың қосылғанын тексерейік:
netstat -nat |grep 5555
Кибанадағы журналдарды тексеру.
Барлығы іске қосылғаннан кейін, Kibana - Discover бөліміне өтіңіз, бәрі дұрыс конфигурацияланғанына, суреттің басылатынына көз жеткізіңіз!
Барлық журналдар орнында және біз барлық өрістерді және олардың мәндерін көре аламыз!
қорытынды
Біз Logstash конфигурация файлын қалай жазу керектігін қарастырдық, нәтижесінде барлық өрістер мен мәндердің талдаушысы алдық. Енді біз белгілі бір өрістерді іздеу және сызу арқылы жұмыс істей аламыз. Келесі курста біз Кибанадағы визуализацияны қарастырамыз және қарапайым бақылау тақтасын жасаймыз. Айта кету керек, Logstash конфигурация файлы белгілі бір жағдайларда, мысалы, өріс мәнін саннан сөзге ауыстырғымыз келгенде, үнемі жаңартылып отыруы керек. Келесі мақалаларда біз мұны үнемі жасаймыз.
Сондықтан хабардар болыңыз (
Ақпарат көзі: www.habr.com