Log Management

Centos 7 üzerine Graylog 3.0.2 Kurulumu

Centos 7 üzerine Graylog 3.0.2 Kurulumu 2

Translate This Page:

Select your language: 

Bu Makalemizde, Open Source bir loglama çözümü olan Graylog v3.0’ın kurulumunu ele alacağız (v3.0.1) ve bunu sistemlerimizin sysloglarını merkezi bir konumda toplayacak şekilde yapılandıracağız. Graylog3, SSH girişlerini ve sıra dışı etkinliklerini izlemekten hata ayıklama uygulamalarına kadar birçok kullanım senaryosuna sahip güçlü bir günlük yönetimi ve analiz aracıdır. Elasticsearch, Java, MongoDB ve Scala’ya dayanmaktadır.

Graylog3 Dört ana bileşene sahiptir:

Graylog3 Server nodes: Mesajları alan ve işleyen ve diğer tüm sunucu dışı bileşenlerle iletişim kuran bir çalışan olarak hizmet eder. Performansı CPU gücünüz ile doğru orantılıdır.
Elasticsearch node: Tüm günlükleri / mesajları saklar. Performansı RAM ve disk I/O’ye bağlıdır
MongoDB: Meta verileri depolar ve fazla yüklenmez
Web Arayüzü (GUI): Kullanıcı arayüzü

Graylog3 bileşenlerinin en basti haliyle şeması aşağıdadır (mesajların diğer sunucularınızdan gönderildiğini unutmayın):

Centos 7 üzerine Graylog 3.0.2 Kurulumu 3

Çok temel bir kurulum için, tüm bileşenler yukarıdaki gibi aynı sunucuya kurulabilir.

Fakat EPS oranı yüksek çok sayıda sunucu ,Firewall ve network cihazı barındıran bir IT alt yapınız varsa , Graylog sunucusu, Elasticsearch veya MongoDB bileşenleri bir kesinti yaşanmamsı ve performans artışı için , Graylog3 Kurulumunu birden fazla makine ve DB üzerine aktarmak hem kesinti sırasında log kaybının önüne geçecek ve yüksek kullanılabilirlikle beraber performans artışı sağlayacaktır.

Çoklu sunucu kurulumu ile ilgil aşağıdaki örnek diagramları inceleyerek daha detaylı fikir edinebilirsiniz.

Centos 7 üzerine Graylog 3.0.2 Kurulumu 4

Centos 7 üzerine Graylog 3.0.2 Kurulumu 5

Sistem Gereksinimleri

  • Centos 7 X64 işletim sistemi (Bu kurulumu centos 7 v18.10 üzerinde yapıyor olacağız.)
  • 4 Gb ram
  • 4 Core CPU
  • Min 100 GB Disk
  • Elasticsearch 5 veya 6
  • MongoDB 3.6 or later (latest stable version is recommended)
  • Oracle Java SE 8 (OpenJDK 8 also works; latest stable update is recommended)

Burada belirtmek istediğim özel bir nokta var bu tür sistemlerin kurulumlarını yapmadan önce ihtiyaçları ve kaynakları kurulum öncesi belirlemek önem taşıyor Log toplama işlemlerinde kritik konu disk kapasitesini belirlemek SIEM yada logManagement yazılımları çok kısa sürede büyük disk alanlarını doldurabiliyor. Kurulum sonrası iyice şişmiş diskler üzerinde disk genişletme gibi işlemlerle uğraşmak çok isteyeceğimiz bir durum değil.
Disk hesabı yapabilmeniz için aşağıdaki linkten sistem kaynaklarınızı belirterek ne kadar alana ihtiyacınız olduğunu yaklaşık olarak hesaplayabilirsiniz.

http://www.aspiretss.com/tools
https://www.trionlogics.com/EPS.html
https://siemsizingcalculator.logpoint.com/

Centos 7 üzerine Graylog 3.0.2 Kurulumu 6

İlk olarak Serverımızın EPEL(Extra Packages for Enterprise Linux) Yum deposunu güncelliyoruz.

#Eğer Repo bağlantısı yoksa aşağıdaki komutu çalışıtırıyoruz.
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum repolist

# Çıktımız aşağıdaki gibi olacaktır.
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.radoreservers.com
 * epel: ftp.wrz.de
 * extras: mirror.muvhost.com
 * updates: mirror.muvhost.com
repo id                               repo name                                                            status
base/7/x86_64                         CentOS-7 - Base                                                      10,019
epel/x86_64                           Extra Packages for Enterprise Linux 7 - x86_64                       13,016
extras/7/x86_64                       CentOS-7 - Extras                                                       382
updates/7/x86_64                      CentOS-7 - Updates                                                    1,477
repolist: 24,894
[root@cacti ~]#sudo yum install epel-release -y

#Sistem güncellemesini gerçekleştirin ve sistemi yeniden başlatarak sistem değişikliklerini uygulayın
[root@root~]#sudo yum update -y && sudo shutdown -r now

Ön Hazırlıklarımızı tamamladığımıza göre kuruluma başlayabiliriz.

Gerekli paket kurulumları

Güvenli parola oluşturmak için Pwgen(PWDGenerate random passwords  ) Paketini kuruyoruz.

root@graylog01]# yum -y install wget pwgen

Elasticsearch çalışabilmesi için java ya ihtiyaç duyar makinemize Java kurulumunu yapıyoruz. Yani, OpenJDK veya Oracle JDK’yi yükleyin.

root@graylog01]# yum install -y java-1.8.0-openjdk-headless

Java Versiyonumuzu kontrol ediyoruz

[root@graylog01 ~]# java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-b04)
OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)

Elastik Search kurulumu

Elasticsearch, Graylog kurulumundaki önemli bileşenlerden biridir. Graylog girişinden gelen verileri depolar ve bir kullanıcı Graylog dahili web arayüzü üzerinden istediğinde mesajları görüntüler. Elasticseach, esas olarak burada verileri / günlükleri indekslemek ve Graylog web arayüzü herhangi bir bilgi istediğinde arama işlevselliğini sağlamak için kullanılır.

Yüklemeden önce GPG ( GnuPG — GNU Privacy Guard) imzalama anahtarını alıyoruz.

root@graylog01]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Elasticsearch paketinin en son sürümünü resmi depodan almak için bir depo dosyası oluşturun.

[root@graylog01]# nano /etc/yum.repos.d/elasticsearch.repo

aşağıdaki içeriği oluşturduğumuz dosyaya ekliyoruz.

[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

Elasticsearch paket kurulumunu başlatıyoruz.

[root@graylog01]# yum install -y elasticsearch

Systemctl arka plan programını yeniden yüklüyoruz ve Elasticsearch’ün sistem başlangıcında otomatik olarak başlatılmasını sağlıyoruz.

systemctl daemon-reload
systemctl enable elasticsearch

Elasticsearch’ün Graylog kurulumuyla çalışmasını sağlamak için cluster adını graylog olarak ayarlamamız gerekir. Elasticsearch.yml dosyasını düzenleyin.

[root@graylog01]# nano /etc/elasticsearch/elasticsearch.yml

Cluster name bölümünü graylog olarak değiştiriyoruz.
cluster.name: graylog

Centos 7 üzerine Graylog 3.0.2 Kurulumu 7

Elastiksearch servisimizi restart ediyoruz.

systemctl restart elasticsearch

Elasticsearch’ün tamamen yeniden başlatılmasına izin vermek için 2 dakika verin. Elasticsearch, şimdi HTTP isteklerini işlemek için 9200 dinliyor olmalı. Cevabı kontrol etmek için CURL komutunu kullanın.

curl -X GET http://localhost:9200

Yukarıdaki komutun çıktısı aşağıdaki gibi olacaktır.

[root@graylog01 ~]# curl -X GET http://localhost:9200
{
  "name" : "N9zh8CH",
  "cluster_name" : "graylog",
  "cluster_uuid" : "0vWrOvqBSU20imDBjDv3iA",
  "version" : {
    "number" : "6.7.2",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "56c6e48",
    "build_date" : "2019-04-29T09:05:50.290371Z",
    "build_snapshot" : false,
    "lucene_version" : "7.7.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

Elasticsearch Cluster’ın sağlık kontrolü yapın.

curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'

Çıktı aşağıdaki gibi olmalıdır.

[root@graylog02 ~]# curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
{
  "cluster_name" : "graylog",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 1,
  "active_shards" : 1,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

Centos 7 üzerine Graylog 3.0.2 Kurulumu 8

Elastiksearch Kurulumumuzu tamamladık.

MongoDB kurulumu

MongoDB yapılandırmaları ve meta bilgileri depolamak için bir veritabanı görevi görür. MongoDB’nin en son sürümünü almak için MongoDB’nin resmi deposunu kullanacağız.
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/

MongoDB nin Repo bağlantı dosyasını oluşturuyoruz.

nano /etc/yum.repos.d/mongodb-org-4.0.repo

Repostory bilgilerini dosyamıza ekliyoruz.

[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

Mongo DB kurulumunu aşağıdaki komut ile yapıyoruz.

yum install -y mongodb-org

#kurulum sonrası MongoDB servisimizi başlatıp açılışta otomatik açılmasını sağlıyoruz.

systemctl start mongod
systemctl enable mongod

Graylog kurulumu

Gray log paketimizin kurulumu için tüm ön gereksinimleri yükledik artık graylog3 paketinin kurulumunu yapabiliriz. Graylog sunucusu temel olarak çeşitli girdilerden gelen günlük mesajlarını kabul eder ve işler, graylog gelen loğları web arayüzünden görüntüleyeceğimiz bir ekran sunar.

Graylog 3.x reposunu indirip yüklüyoruz.

rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-3.0-repository_latest.rpm

Graylog 3.0 server kurulumunu aşağıdaki komut ile başlatıyoruz.

yum -y install graylog-server

Graylog server’ımızın default config dosyası “/etc/graylog/server/server.conf” yolunda yer almaktadır.

Günvenilir parola oluşturma işlemi

Gray log serverımız için pwgen aracı ile secret key ve parola oluşturacağız.
Secret Key oluşturuyoruz.

pwgen -N 1 -s 96

komut sonrası aşağıdaki gibi bir key çıktısı alacaksınız.

vq3K34N2PoJODtjiDuLMACwF5tI578RDKKrJ12tUzuq5m7Ft2Oiv3EhI690m273ebJMOdbcSJ63zTQA102r1LT1JCN1c7HcN

Yukarıdaki key’i config dosyasında “password_secret =” bölümüne gireceğiz. Graylog admin giriş parolasını belirliyoruz ben şifreyi “admin” olarak belirliyorum.

[root@graylog01 -]# echo -n yourpassword 1 sha256sum 
[root@graylog01 -]# echo -n admin 1 sha256sum 
8c6976e5b5410415bde908bd4deel5dfb167a9c873fc4bb8a81f6f2ab448a918 -

Aşağıdaki key’i config dosyasında “root_password_sha2 =” bölümüne gireceğiz.

8c6976e5b5410415bde908bd4deel5dfb167a9c873fc4bb8a81f6f2ab448a918

Centos 7 üzerine Graylog 3.0.2 Kurulumu 9

Graylog Config Dosyası Düzenleme

Parolamızı oluşturduğumuza göre config dosyamızı düzenlemeye başlayabiliriz.

nano /etc/graylog/server/server.conf

yukarıda oluşturduğumzu “password_secret”  ve “root_password_sha2” keylerimizi config dosyamızda ilgili satırlara ekliyoruz. Timezone bölümü default olarak UTC geliyor bunu Türkiye için değiştirmeniz gerekli aksi takdirde toplanan logların saati farklı UTC zamanına göre loglanır bu değişikliği buradan yapmamız gerekiyor.

config dosyasında “root_timezone” u değiştiriyoruz.

root_timezone = Asia/Kuwait

eğer farklı bir timezone seçmek isterseniz buradaki listeden seçebilirsiniz https://www.joda.org/joda-time/timezones.html
Admin hesabı için bir mail adresi belirliyoruz (isteğe bağlıdır.)

root_email = admin@yourdomain.com

Centos 7 üzerine Graylog 3.0.2 Kurulumu 10

Eğer graylog’u 1 host olarak kuruyorsanız aşağıdaki ayarı 1 yapınız eğer çoklu kurulum yapacaksanız ortamdaki nod sayınızı buraya girmelisiniz. Bizim yapımızda 1 adet Elastiksearch bulunuyor bu yüzden 1 yapıyoruz.

elasticsearch_shards = 1

Bu, indeksleriniz için kopya sayısını tanımlar. Elasticsearch cluster’ında yalnızca bir nod’a sahipseniz, 0 olarak ayarlayın.

elasticsearch_replicas = 0

Graylog Web interface configurasyon

config dosyamızı açıyoruz.

nano /etc/graylog/server/server.conf

Graylog Web Arabiriminin Graylog sunucusuna bağlanmasına izin vermek için girişleri değiştiriyoruz. Graylog serverımın ip adresi 192.168.1.96 aşağıdaki bölüme kendi serverınızın ip adresini giriniz.

config dosyamızı açıyoruz.

http_bind_address = 192.168.1.96:9000

Centos 7 üzerine Graylog 3.0.2 Kurulumu 11

Graylog servisimizi restart ediyoruz ve başlangıçta otomatik olarak başlamasını sağlıyoruz.

systemctl daemon-reload
systemctl restart graylog-server	
systemctl enable graylog-server

Sunucu başlangıç günlüklerini kontrol edebilirsiniz; Graylog ile ilgili sorunları gidermeniz sizin için yararlı olacaktır.

tailf /var/log/graylog-server/server.log

Eğer buraya kadar tüm adımları sorunsuz uyguladıysanız log dosyasında aşağıdaki mesajı görmelisiniz.

2019-02-25T21:00:23.157+05:30 INFO  [ServerBootstrap] Graylog server up and running.

Centos 7 üzerine Graylog 3.0.2 Kurulumu 12

Firewall Configurasyonu

Graylog 9000 portunu kullanır eğer iptable yada firewalld aktif ise aşağıdaki komut ile gerekli FW kuralını ekleyiniz.

Sudo firewall-cmd --permanent --add-port=9000/tcp
sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp
sudo firewall-cmd --permanent --zone=public --add-port=12900/tcp
sudo firewall-cmd --permanent --zone=public --add-port=1514/tcp
firewall-cmd --reload

Selinux(Security Enhanced Linux)  Configurasyonu

Cacti uygulamasını çalıştırmak için selinux u kapamamız gerekiyor aşağıdaki komut ile Selnux durumunu görüntüleyebilirsiniz.

root@cacti]# sestatsu

Selinux(Security Enhanced Linux) ‘ı devre dışı bırakmak için aşağıdaki adımları takip ediniz.

[root@cacti]# nano /etc/selinux/config
SELINUX=enforcing satırını aşağıdaki şekilde değitiriyoruz
SELINUX=disabled

Bu işlemden sonra makinemizi reboot etmemiz gerekiyor.

Graylog Web erişimi

Graylog web erişimi için 9000 portunu dinlemektedir bu sebepten aşağıdaki linten erişim sağlaycağız.

http://yourserveripaddress:9000

Kullanıcı adı yöneticisi ve server.conf’ta root_password_sha2‘de yapılandırdığınız şifre ile giriş yapın.

Ben user bilgilerini aşağıdaki şekilde yapılandırdım

Username : admin
Parola        : admin

Giriş yaptıktan sonra aşağıdaki ekran bizi karşılıyor olacak.

Centos 7 üzerine Graylog 3.0.2 Kurulumu 13

Centos 7 üzerine Graylog 3.0.2 Kurulumu 14

Graylog input

Graylog’a gelen loglar harici kaynaklardan, yani syslog veya herhangi bir log sisteminden alacak şekilde yapılandırılması gerekir. Bu örnekte, UDP 514 numaralı bağlantı noktasında syslog’dan günlükleri almak için bir input ayarlayacağız. fakat bir problem var graylog’a tanımlanan inputlardan birine, 1024’ün altındaki TCP / UDP bağlantı noktalarına giriş yapmaya başlarsanız, Graylog gelen log kayıtlarını red eder ve günlüklerinde izin redd hatalarını görürsünüz. Bu sorunu çözmek için, 1514 numaralı bağlantı noktasında başlatılacak bir input oluşturacağız ve 514 portuna gelen talepleri güvenlik duvarı kuralları ile 514’ten 1514’e yönlendireceğiz.

Böylelikle Graylog sunucumuza 514 portundan yada 1514 portundan gelen tüm loglar ulaşıyor olacak.

Aşağıdaki Yolu izliyoruz.
System >> Inputs >> select Syslog UDP

Centos 7 üzerine Graylog 3.0.2 Kurulumu 15

Node: Select your Graylog Node
Title: Bir isim veriniz
Bind address: 0.0.0.0 (default bırakabilr yada Graylogserverınızın ip adresini girebilrisiniz)
Port: 1514

Centos 7 üzerine Graylog 3.0.2 Kurulumu 16

Bu işlemden sonra oluşturduğumuz input(connector) aşağıdaki gibi 1514 numaralı porttan gelen bütün paketleri dinlemeye başlayacaktır.

Centos 7 üzerine Graylog 3.0.2 Kurulumu 17

Rsyslog Yapılandırması

Rsyslog server 514 portunu dinler dolayısıyla loğlarını almak istediğiniz fakat defaultta değiştiremediğiniz network cihazlarından gelen loğları Graylog server’a aktaramazsınız bunun için rsyslog server Un 514 numaralı portuna gelen istekleri Graylog server’ın 1514 numaralı portuna yönlendireceğiz.

Rsyslog config dosyamızı açıyoruz.

nano /etc/rsyslog.conf

Centos 7 üzerine Graylog 3.0.2 Kurulumu 18

# Provides UDP syslog reception satırındaki açıklamaları “#” kaldırıyoruz ve udp dinlemeyi aktif ediyoruz.

$ModLoad imudp
$UDPServerRun 514

sayfanın en altına inerek aşağıdaki satırı ekliyoruz burada yukarıda oluşturduğumuz 1514 numaralı portu kullanacağız. Aşağıdaki komut ile Rsyslog server 514.porta UDP den gelen bütün girdileri Graylog serverımızdaki 1514 numaralı porta yönlendiriyor olacak.

 

*.* @10.0.11.95:1514

Yada Local host girebilirsiniz.

*.* @127.0.0.1:1514

Centos 7 üzerine Graylog 3.0.2 Kurulumu 19

Rsyslog servisimizi restart ediyoruz.

systemctl restart rsyslog

Rsyslog Firewall  ayarları

Graylog sunucusunda UDP 514 numaralı bağlantı noktasına(porta) gelen trafiği yönlendirmek için aşağıdaki yönlendirme komutlarını uyguluyoruz.

firewall-cmd --add-masquerade --permanent
firewall-cmd --add-forward-port=port=514:proto=udp:toport=1514 --permanent
firewall-cmd --reload

Güvenlik duvarında UDP 1514 bağlantı noktası numarasının Rsyslog’dan günlükleri almasına izin vermek için Graylog sunucusunda aşağıdaki komutları uygulayın.

firewall-cmd --permanent --add-port=1514/udp
firewall-cmd --reload

Graylog kurulacak paketler

http://docs.graylog.org/en/3.0/pages/integrations/setup.html

Graylog serverımızın input böümüne tanımlayacağımız cihaz yelpazesini arttırmak için aşağıcaki komutu kullanrak ek pluginleri ekleyebilirsiniz.

sudo yum install graylog-integrations-plugins graylog-enterprise-integrations-plugins

Graylog server kurulumumuz bu kadar.

Serdar Bayram

Bu yazı blog üzerinde Serdar Bayram tarafından hazırlanıp paylaşılmıştır. 2009 yılında açılan blogum kısa zaman içerisinde paylasımları ile dikkat cekip büyük bir izleyici kitlesine sahip olmuştur.

2 Yorum

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu