Graylog Kurulumu ve Yapılandırması Ubuntu 20.04

Graylog, sistemlerin loglarını  merkezi bir sunucudan izlemek için kullanılabilen ücretsiz ve açık kaynaklı günlük yönetim yazılımı aracıdır. Graylog, Log verilerini depolamak ve arama yetenekleri sağlamak için Elasticsearch’ü ve meta bilgileri depolamak için MongoDB’yi kullanır. Büyük miktarda veriyi basit ve okunabilir bir formatta izlemenize, aramanıza ve analiz etmenize yardımcı olur. Bu yazıda, Graylog’u Ubuntu 20.04 sunucusuna kurulumu ve yapılandırması hakkında bilgi veriyor olacağım.

 

Önkoşullar

  • Minimum 4 GB RAM ile çalışan Ubuntu 20.04 sunucusu
  • Root haklarına sahip bir hesap

Başlarken

Öncelikle, sistem paketlerimizi en son sürüme güncellememiz gerekecektir. Aşağıdaki komutla sistemimiz üzerinde hali hazırda kurulu olan paketleri güncelleyebiliriz:

apt-get update -y
apt-get dist-upgrade -y

 

Tüm paketleri güncelledikten sonra, sunucumuza bazı bağımlılıkları da kurmamız gerekecektir. Hepsini aşağıdaki komutla kurabilirsiniz:

apt-get install apt-transport-https gnupg2 uuid-runtime pwgen curl dirmngr -y

Gerekli tüm bağımlılıklar yüklendikten sonra bir sonraki adıma geçebiliriz.

Java Kurulumu

Graylog kurulumu için, sunucumuzda Java’nın yüklü olması gerekmektedir. Eğer yüklü değilse, aşağıdaki komutla kurabiliriz:

apt-get install openjdk-11-jre-headless -y

 

Java yüklendikten sonra, aşağıdaki komutu çalıştırarak yüklü Java sürümünü doğrulayabiliriz:

java -version

 

Şuna benzer bir çıktı görüyor olmalıyız:

[email protected]:~# java -version
openjdk version "11.0.9.1" 2020-11-04
OpenJDK Runtime Environment (build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04)
OpenJDK 64-Bit Server VM (build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)

 

Bir sonraki adıma geçebiliriz.

Elasticsearch Kurulumu ve Yapılandırması

Graylog, harici kaynaktan gelen logları saklamak için Elasticsearch’ü kullanır. Bu yüzden Elasticsearch’ü sistemimize kurmamız gerekecektir.
Elasticsearch’ün en son sürümü Ubuntu varsayılan deposunda mevcut değildir. Bu yüzden, sistemimize Elasticsearch deposunu eklememiz gerekecektir.

İlk olarak, Elasticsearch GPG anahtarını aşağıdaki komutla indirip ekliyoruz:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -

 

Ardından, aşağıdaki komutla Elasticsearch deposunu ekliyoruz:

echo "deb https://artifacts.elastic.co/packages/oss-6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list

 

Ardından, eklemiş olduğumuz depoyu aşağıdaki komutla güncelliyor ve Elasticsearch’ü sunucumuza kuruyoruz:

apt-get update -y
apt-get install elasticsearch-oss -y

 

Elasticsearch’ü kurduktan sonra, Elasticsearch konfigürasyon dosyasını düzenlememiz ve cluster adını tanımlamamız gerekecektir. Bunu aşağıdaki komutla yapabiliriz:

nano /etc/elasticsearch/elasticsearch.yml

 

Cluster adını graylog olarak tanımlıyoruz ve aşağıdaki satırı da dosyanın en altına ekliyoruz:

cluster.name: graylog
action.auto_create_index: false

 

Düzenleme işimiz bittiğinde dosyayı kayıt ettikten sonra kapatıyoruz. Ardından, Elasticsearch servisini başlatın ve aşağıdaki komutla boot esnasında otomatik olarak başlamasını sağlıyoruz:

systemctl daemon-reload
systemctl start elasticsearch
systemctl enable elasticsearch

 

Buraya kadar herhangi bir sorun olup olmadığını aşağıdaki komut ile sorgulayabiliriz:

systemctl status elasticsearch

 

Komutun çıktısı aşağıdaki gibi ya da benzeri olmalıdır:

[email protected]:~# systemctl status elasticsearch
● elasticsearch.service - Elasticsearch
     Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-12-19 01:53:42 +03; 1min 3s ago
       Docs: http://www.elastic.co
   Main PID: 9703 (java)
      Tasks: 41 (limit: 4567)
     Memory: 1.1G
     CGroup: /system.slice/elasticsearch.service
             └─9703 /bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Des.networkaddress.cache.ttl=60 -Des.n>

Dec 19 01:53:42 ubuntu-4gb-fsn1-1 systemd[1]: Started Elasticsearch.
Dec 19 01:53:42 ubuntu-4gb-fsn1-1 elasticsearch[9703]: OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a fut>
lines 1-12/12 (END)

 

Şimdi komut satırında aşağıdaki komutu çalıştırarak Elasticsearch’ün verdiği yanıtı doğrulayalım:

curl -X GET http://localhost:9200

 

Evet karşımıza bir JSON çıktısı geliyorsa (aşağıdaki gibi) Elasticsearch’ümüz hazır demektir:

{
  "name" : "e_QJT23",
  "cluster_name" : "graylog",
  "cluster_uuid" : "SC6Mm6xmSkKglJ8DWPKFqw",
  "version" : {
    "number" : "6.8.13",
    "build_flavor" : "oss",
    "build_type" : "deb",
    "build_hash" : "be13c69",
    "build_date" : "2020-10-16T09:09:46.555371Z",
    "build_snapshot" : false,
    "lucene_version" : "7.7.3",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

 

Artık MongoDB kurulumuna geçebiliriz.

MongoDB Kurulumu

Yazının başında da bahsettiğim gibi Graylog, MongoDB’yi bir veritabanı olarak kullanır. Bu yüzden MongoDB veritabanını sunucumuza kurmamız gerekecek. Aşağıdaki komutla kurulumu başlatabiliriz:

apt-get install mongodb-server -y

 

MongoDB kurulduktan sonra, MongoDB servisini başlatıp ve aşağıdaki komutla sistemin yeniden başlatıldığında başlamasını sağlıyoruz:

systemctl start mongodb
systemctl enable mongodb

 

Evet bu adımı da tamamlamış olduk artık Graylog kurulumuna hazırız demektir.

 

Graylog Kurulumu ve Yapılandırma

Graylog paketi Ubuntu varsayılan deposunda mevcut değildir. Bu nedenle, graylog deposunu sunucumuza yüklememiz gerekecektir.

Graylog depo paketini aşağıdaki komutla indirebiliriz:

wget https://packages.graylog2.org/repo/packages/graylog-3.3-repository_latest.deb

 

İndirme işlemi tamamlandıktan sonra, indirilen paketi aşağıdaki komutla kuruyoruz:

dpkg -i graylog-3.3-repository_latest.deb

 

Ardından, depoyu güncelleyip Graylog sunucusunu aşağıdaki komutlarla sırasıyla çalıştırarak kuruyoruz:

apt-get update -y
apt-get install graylog-server -y

 

Graylog sunucusunu kurduktan sonra, kullanıcı şifrelerini güvence altına almak için bir secret oluşturmamız gerekecektir. Aşağıdaki komutla üretebiliriz:

pwgen -N 1 -s 96

 

Yukarıdaki komutun çıktısı aşağıdakine benzer olmalı:  (Not: Çıktıyı kayıt edin) 

[email protected]:~# pwgen -N 1 -s 96
VejU0BrRsMHiGp4m1LQsVhxMdYysWRFdOgFkj6WNnQol6MmMC9kQlgjCEK7lVYb0ozd0l6m0gk70C0KszGfxF2SXJ83VdMxp

 

Ardından, Graylog admin kullanıcısı için güvenli bir şifre oluşturmamız gerekecektir. Graylog web ara yüzüne giriş yapmak için bu şifreye ihtiyacımız olacak. Aşağıdaki komutla üretebilirsiniz:

echo -n password | sha256sum

 

Yukarıdaki komutun çıktısı aşağıdaki gibi olmalıdır:  (Not: Çıktıyı kayıt edin) 

[email protected]:~# echo -n password | sha256sum
5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8  -

 

Şimdi, Graylog yapılandırma dosyasını düzenleyip her iki parolayı da tanımlıyoruz:

nano /etc/graylog/server/server.conf

 

 password_secret =  parametresine oluşturmuş olduğumuz secret anahtarını,  root_password_sha2 =  parametresinin karşısına da admin kullanıcısı için oluşturmuş olduğumuz güvenli şifreyi giriyoruz. Yine aynı dosyada bulunan  #http_bind_address = 127.0.0.1:9000  parametresinin başında bulunan diyez (#) işaretini kaldırıp dosyayı kayıt ediyoruz.

Bendeki son durum:

password_secret = VejU0BrRsMHiGp4m1LQsVhxMdYysWRFdOgFkj6WNnQol6MmMC9kQlgjCEK7lVYb0ozd0l6m0gk70C0KszGfxF2SXJ83VdMxp
root_password_sha2 = 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
http_bind_address = 127.0.0.1:9000

 

İşiniz bittiğinde dosyayı kaydedin ve kapatın, ardından Graylog servisini başlatın ve aşağıdaki komutla sistemin yeniden başlatıldığında otomatik olarak başlamasını sağlayın:

systemctl daemon-reload
systemctl start graylog-server
systemctl enable graylog-server

 

Ve aşağıdaki komut ile Graylog servisinin çalıştığını doğrulayabiliriz:

systemctl status graylog-server

 

Bu da çıktısı:

[email protected]:~# systemctl status graylog-server
● graylog-server.service - Graylog server
     Loaded: loaded (/lib/systemd/system/graylog-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-12-19 02:22:08 +03; 18s ago
       Docs: http://docs.graylog.org/
   Main PID: 11396 (graylog-server)
      Tasks: 92 (limit: 4567)
     Memory: 667.0M
     CGroup: /system.slice/graylog-server.service
             ├─11396 /bin/sh /usr/share/graylog-server/bin/graylog-server
             └─11430 /usr/bin/java -Xms1g -Xmx1g -XX:NewRatio=1 -server -XX:+ResizeTLAB -XX:+UseConcMarkSweepGC -XX:+CMSConcurrentMTEnabled -XX:+CMSClassUnloadingEnabled -XX:-OmitS>

 

Bu noktada artık Graylog sunucusu 9000 portundan yayın yapmaya başlamıştır.

 

Nginx’i Graylog için Reverse Proxy Olarak Yapılandırma

Ardından, Graylog sunucusuna erişmek için Nginx’i reverse proxy olarak kurmamız ve yapılandırmamız gerekecektir.

Öncelikle, aşağıdaki komutla Nginx sunucusunu kuralım:

apt-get install nginx -y

 

Nginx sunucusunu kurduktan sonra, aşağıdaki komutla yeni bir Nginx virtual host yapılandırma dosyası oluşturun:

nano /etc/nginx/sites-available/graylog.conf

 

Aşağıdaki satırları boş dosyanın içine yapıştırdıktan sonra kayıt edip dosyadan çıkıyoruz. Ben buraya örnek olması açısından server_name parametresine graylog.ornek.org olarak FQDN girdim ve host kaydımı ona göre düzenledim, siz IP adresi ya da localhost yazabilirsiniz.

server {
    listen 80;
    server_name graylog.ornek.org;

    location / {
      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-Host $host;
      proxy_set_header X-Forwarded-Server $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Graylog-Server-URL http://$server_name/;
      proxy_pass       http://127.0.0.1:9000;
    }
}

 

Ardından, aşağıdaki komutla herhangi bir yazım hatası için Nginx’i doğruluyoruz:

nginx -t

 

Çıktı aşağıdaki gibiyse herhangi bir syntax hatası yok demektir:

[email protected]:~# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

 

Ardından, aşağıdaki komutla az önce oluşturmuş olduğumuz Nginx virtual host yapılandırma dosyasını etkinleştiriyoruz:

ln -s /etc/nginx/sites-available/graylog.conf /etc/nginx/sites-enabled/

 

Son olarak, yapılan değişikliklerin geçerli olması için Nginx servisini yeniden başlatıyoruz:

systemctl restart nginx

 

Aşağıdaki komut ile nginx servisinin başarılı bir şekilde ayağa kalkıp kalkmadığını öğreniyoruz:

[email protected]untu-4gb-fsn1-1:~# systemctl status nginx

 

Çalıştırılan komut sonrası örnek çıktı aşağıdaki gibiyse işlem tamam demektir:

[email protected]:~# systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-12-19 02:33:04 +03; 13s ago
       Docs: man:nginx(8)
    Process: 11694 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 11704 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 11708 (nginx)
      Tasks: 3 (limit: 4567)
     Memory: 3.5M
     CGroup: /system.slice/nginx.service
             ├─11708 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ├─11709 nginx: worker process
             └─11710 nginx: worker process

 

Artık Graylog web arayüzüne erişebiliriz.

 

Graylog Web Arayüzüne Erişim

Şimdi, web tarayıcımızı açıyoruz ve http://graylog.ornek.org URL’sini yazın (dediğim gibi FQDN tanımlamadıysanız IP ile de gidebilirsiniz). Graylog giriş sayfasına aşağıda gösterildiği gibi yönlendirileceksiniz:

 

Graylog Web Arayüz

Graylog Web Arayüz

 

Yönetici kullanıcı adınızı (varsayılan: admin), şifrenizi (varsayılan: password) girin ve Sign in düğmesine tıklayın. Aşağıdaki sayfada Graylog Getting started sayfası bizi karşılıyor olacak:

Graylog Başlarken

Graylog Başlarken

 

 

Şimdi System > Overview yolunu izleyerek takip eden sayfada Graylog durumunu görebilirsiniz:

 

 

pfSense Loglarının Graylog’a Gönderimi

Graylog:

514 portu hali hazırda kullanıldığından dolayı Input’u eklerken 514 portunda servisi başlatamadım. Ben de port kısmına aşağıdaki gibi 5514 olarak girerek bu porttan gelecek olan trafiği kayıt altına almaya çalıştım:  (System > Inputs > Select Input açılır penceresinden en son bulunan Syslog UDP’yi seçebilirsiniz) 

Graylog Input

Graylog Input

pfSense:

 Status > System Logs > Settings  alanının en sonunda bulunan Remote Log Servers ve Remote Syslog Content kısmını aşağıdaki gibi ayarlayıp pfSense loglarını başarılı bir şekilde Graylog’a aktarabildim.

 

pfSense Syslog Settings

pfSense Syslog Settings

 

Graylog Search:

Graylog Search

Graylog Search

 

Ubuntu sunucumun sistem saati doğru olmasına karşın Graylog sistem zamanı yanlış gözüküyordu. Bu yüzden dolayı pfSense’ten almış olduğum logun zamanı farklıydı. Varsayılan Graylog sistem saati UTC olarak set edilmiş aşağıdaki parametrenin başındaki diyez (#) işaretini kaldırıp Europe/Istanbul olarak dosyayı kayıt edip graylog servisini yeniden başlattığımda sorunum çözüldü

 

 /etc/graylog/server/server.conf 
root_timezone = Europe/Istanbul
 /etc/init.d/graylog-server restart 

Servisin ayağa kalkması biraz zaman alabilir.

 

Graylog


Abone ol
Bildir
guest
3 Yorum
Eskiler
En Yeniler Beğenilenler
Satır İçi Geri Bildirimler
Tüm yorumları görüntüle