Bu yazıda Elasticsearch ve silah arkadaşlarının Centos üzerinde kurulumunu anlatacağım. Ubuntu ve diğer işletim sistemleriyle birlikte Windows üzerine kurmakta mümkün ama her zaman ki gibi tercihim Centos’dan yana.
Gereksinimler;
–Centos 7, minimal inst. ‘da olur server gui’de size kalmış.
-Java kurulu olmalı.
-Editör olarak tercihim her zaman ki gibi nano siz vi ya da başka bir şey kullanabilirsiniz. Hatta winscp ile bağlanıp not defteriyle de açabilirsiniz…
Başlayalım
-Elastic Kurulumu
sudo rpm –import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Nano’yla açıp repomuzu ekleyelim sonra kaydedip çıkalım vi’de :wq! nano’da ctrl + o sonra ctrl +x
nano /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
sudo yum install elasticsearch -y
Eğer sadece konsola kurulu olduğu makineden erişmek istiyorsanız network.host: kısmına localhost yazın ya da dışarıdan erişmek istediğiniz ip adresini.
nano /etc/elasticsearch/elasticsearch.yml
Servisi açalım. Aç, durumu kontrol et, ve açılışta otomatik açılsın.
sudo systemctl start elasticsearch
sudo systemctl status elasticsearch
sudo systemctl enable elasticsearch
-Kibana Kurulumu
sudo yum install kibana -y
sudo systemctl start kibana
sudo systemctl status kibana
sudo systemctl enable kibana
Her şey yolundaysa aşağıdaki komut ile bir password oluşturup dosyaya yazıcaz.
echo “kibanaadmin:`openssl passwd -apr1`” | sudo tee -a /etc/nginx/htpasswd.users
Buraya kadar tamamsa durumu kontrol etmek için aşağıdaki satırı tarayıcıya yazın.
http://localhost:5601/status#?_g=()
-Logstash Kurulumu
sudo yum install logstash -y
nano /etc/logstash/conf.d/02-beats-input.conf
içine yapıştırın;
input {
beats {
port => 5044
}
}
şimdi syslog filtresi için konfigürasyon oluşturalım. İnternet üzerinde çeşitli kombinasyonlar bulabilirsiniz bu konuda çok zengin.
nano /etc/logstash/conf.d/10-syslog-filter.conf
filter {
if [fileset][module] == “system” {
if [fileset][name] == “auth” {
grok {
match => { “message” => [“%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sshd(?:\[%{POSINT:[system][auth][pid]}\])?: %{DATA:[system][auth][ssh][event]} %{DATA:[system][auth][ssh][method]} for (invalid user )?%{DATA:[system][auth][user]} from %{IPORHOST:[system][auth][ssh][ip]} port %{NUMBER:[system][auth][ssh][port]} ssh2(: %{GREEDYDATA:[system][auth][ssh][signature]})?”,
“%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sshd(?:\[%{POSINT:[system][auth][pid]}\])?: %{DATA:[system][auth][ssh][event]} user %{DATA:[system][auth][user]} from %{IPORHOST:[system][auth][ssh][ip]}”,
“%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sshd(?:\[%{POSINT:[system][auth][pid]}\])?: Did not receive identification string from %{IPORHOST:[system][auth][ssh][dropped_ip]}”,
“%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sudo(?:\[%{POSINT:[system][auth][pid]}\])?: \s*%{DATA:[system][auth][user]} :( %{DATA:[system][auth][sudo][error]} ;)? TTY=%{DATA:[system][auth][sudo][tty]} ; PWD=%{DATA:[system][auth][sudo][pwd]} ; USER=%{DATA:[system][auth][sudo][user]} ; COMMAND=%{GREEDYDATA:[system][auth][sudo][command]}”,
“%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} groupadd(?:\[%{POSINT:[system][auth][pid]}\])?: new group: name=%{DATA:system.auth.groupadd.name}, GID=%{NUMBER:system.auth.groupadd.gid}”,
“%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} useradd(?:\[%{POSINT:[system][auth][pid]}\])?: new user: name=%{DATA:[system][auth][user][add][name]}, UID=%{NUMBER:[system][auth][user][add][uid]}, GID=%{NUMBER:[system][auth][user][add][gid]}, home=%{DATA:[system][auth][user][add][home]}, shell=%{DATA:[system][auth][user][add][shell]}$”,
“%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} %{DATA:[system][auth][program]}(?:\[%{POSINT:[system][auth][pid]}\])?: %{GREEDYMULTILINE:[system][auth][message]}”] }
pattern_definitions => {
“GREEDYMULTILINE”=> “(.|\n)*”
}
remove_field => “message”
}
date {
match => [ “[system][auth][timestamp]”, “MMM d HH:mm:ss”, “MMM dd HH:mm:ss” ]
}
geoip {
source => “[system][auth][ssh][ip]”
target => “[system][auth][ssh][geoip]”
}
}
else if [fileset][name] == “syslog” {
grok {
match => { “message” => [“%{SYSLOGTIMESTAMP:[system][syslog][timestamp]} %{SYSLOGHOST:[system][syslog][hostname]} %{DATA:[system][syslog][program]}(?:\[%{POSINT:[system][syslog][pid]}\])?: %{GREEDYMULTILINE:[system][syslog][message]}”] }
pattern_definitions => { “GREEDYMULTILINE” => “(.|\n)*” }
remove_field => “message”
}
date {
match => [ “[system][syslog][timestamp]”, “MMM d HH:mm:ss”, “MMM dd HH:mm:ss” ]
}
}
}
}
Kaydedip çıkın.
Şimdi diğerine geçelim.
nano /etc/logstash/conf.d/30-elasticsearch-output.conf
output {
elasticsearch {
hosts => [“localhost:9200”]
manage_template => false
index => “%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}”
}
}
Bunlar tamamsa servisi açalım
sudo systemctl start logstash
sudo systemctl status logstash
sudo systemctl enable logstash
Bunları Centos 7’ye kurdunuz örnek olması adına hostunuzu izlemek için metricbeat’i kuralım.
yum -y install metricbeat -y
nano /etc/metricbeat/metricbeat.yml
Ayaları aşağıdaki gibi yapın ve kaydedip çıkın
Resim-1
Resim-2
diğer konfigürasyon için
nano /etc/metricbeat/metricbeat.reference.yml
Resim-3
Resim-4
şimdi servisi ayağa kaldıralım
systemctl start metricbeat
systemctl start metricbeat
systemctl start metricbeat
Şimdi sıra arayüze girip kurcalamakta işte eklediğim host’dan bir kaç görüntü. Oldukça iyi elasticsearh’ü çok fazla amaç için kullanabilirsiniz yeterki disk ve ram olsun. Syslog, host status vb şeyler için ve en önemlisi özgür ve ücretsiz.
Resim-5
Resim-6
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
TAGs:centos 7, ElasticSearch, Kibana, Logstash,ElasticSearch nedir, Kibana nedir, Logstash nedir,ElasticSearch kurulumu, Kibana kurulumu, Logstash kurulumu