Bu makalede açık kaynak yazılımlı, aklınıza gelebilecek her cihazdan ve uygulamadan log toplayabilen, loglama çözüm olan Graylog’un kurulumunu anlatacağız. Graylog’u log merkeziniz olarak yapılandırıp, güvenlik duvarı, switch, sunucu, kablosuz cihazlar, mail sunucusu gibi birçok uygulamadan, cihazdan log toplayabilirsiniz. Topladığınız loglarla SSH etkinliklerini, Windows olaylarını ve aklınıza gelebilecek her türlü etkinliği kayıt altına alıp, izleyip, buna göre aksiyon alabilirsiniz.

Graylog 4 ana bileşene sahiptir;

  • Graylog Server: Mesajları alan, işleyen, veriyi anlamlı hale getiren, tüm log gönderen cihazlarla iletişim kuran bir çalışan olarak hizmet eder. Çalışma gücü CPU performansına bağlıdır.
  • Elasticsearch: Tüm günlükleri ve mesajları saklar. Toplanan loglar Elasticsearch yapısında saklanır, veriye ulaşacağınız zaman Elasticsearch indeks yapısı ile veriye ulaşılır. Performansı RAM’e ve disk okuma/yazma hızına bağlıdır.
  • MongoDB: Graylog konfigürasyon verilerini saklar, günlük verilerini saklamaz. Kullanıcı bilgisi, stream bilgileri gibi meta verileri saklar.
  • Web Arayüzü: Inputları (log gönderen cihazlar, sunucular vs.), indeksleri (Elasticsearch veri indeksleme yapısı), dashboardları (stream ile toplanan verilerin anlamlı bir biçimde izlendiği yapı), sistem kullanımını takip ettiğimiz ve yapılandırabildiğimiz Graylog web arayüzü.

Sistem Gereksinimleri

  • Debian, Ubuntu veya CentOS dağıtımlarından biri
  • 4 GB RAM
  • 4 core CPU (2 core ile çalışan Graylog’um mevcut fakat yine de kaynağınız varsa 4 öneririm)
  • 100 GB disk (Başlangıç için ideal. Zaman ilerledikçe artırmanız gerekebilir)
  • Elasticsearch 5 or 6 (Graylog ile beraber kuracağız)
  • MongoDB 3.6 or 4.0 (Graylog ile beraber kuracağız)
  • Oracle Java SE 8 veya OpenJDK 8 (Graylog ile beraber kuracağız)

İşletim Sistemi Güncellemeleri ve Gerekli Paketlerin Kurulumları

İşletim sistemimizin güncellemelerini yapıyoruz.

sudo apt-get update && sudo apt-get upgrade

Güvenli parola oluşturmak için PWGEN ve Elasticsearch’ün çalışması için gerekli olan Java’yı, yani OpenJDK’yı kuruyoruz.

sudo apt-get install apt-transport-https openjdk-8-jre-headless uuid-runtime pwgen

MongoDB kurulumunu yapıyoruz. MongoDB’nin son sürüm versiyonlarının bulunduğu reposityler ile kurulması önerilir.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org

MongoDB kurulduktan sonra son aşamaya geçiyoruz. Sistem açılışında MongoDB’yi aktif hale getirip, servisin çalıştığını doğruluyoruz.

sudo systemctl daemon-reload
sudo systemctl enable mongod.service
sudo systemctl restart mongod.service
sudo systemctl --type=service --state=active | grep mongod

Elasticsearch Kurulumu

Graylog 3.x versiyonları Elasticsearch 7.x versiyonları ile çalışmaz, bu yüzden Elasticsearch 6 versiyonunu kuracağız.

wget -q https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
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
sudo apt-get update
sudo apt-get install elasticsearch-oss

Aşağıdaki dosyayı açıyoruz.

sudo nano /etc/elasticsearch/elasticsearch.yml

cluster.name: graylogmakineadı olarak değiştiriyoruz ve dosyanın en sonuna action.auto_create_index: false satırını ekliyoruz.

Kaydedip çıkıyoruz.

Elasticsearch servisini aktif hale getirip, başlangıçta çalışacak şekilde ayarlıyoruz.

systemctl daemon-reload
systemctl enable elasticsearch.service
systemctl restart elasticsearch.service
ps aux | grep elasticsearch
netstat -an | grep 9200

Elasticsearch servisini başlattıktan sonra çalıştığını teyit ediyoruz. Elasticsearch kısmını tamamladık, Graylog Server kurulumuna geçelim.

Graylog Server Kurulumu

Graylog paketini indiriyoruz ve açıyoruz.

wget https://packages.graylog2.org/repo/packages/graylog-3.0-repository_latest.deb
sudo dpkg -i graylog-3.0-repository_latest.deb

Güncelleme yapıp Graylog’un eklentilerini yüklüyoruz.

sudo apt-get update && sudo apt-get install graylog-server graylog-enterprise-plugins graylog-integrations-plugins graylog-enterprise-integrations-plugins

Konfigürasyon dosyasında gerekli iki alanı dolduracağız. Bunları düzenlemezsek Graylog çalışmayacaktır. İlk olarak password_secret alanı için

pwgen -N 1 -s 96

kodu ile şifrelenmiş parola oluşturuyoruz. Daha sonrasında

sudo nano /etc/graylog/server/server.conf

kodu ile konfigürasyon dosyasını açıyoruz. Oluşturduğumuz şifrelenmiş parolayı password_secret karşısına yazıyoruz.

Bu işlemlerin ardından root_password_sha2 alanı için de şifrelenmiş bir parola üretmemiz gerekiyor. Aşağıdaki kod ile dilediğimiz bir parolayı girip, şifrelenmiş halini konfigürasyon dosyasındaki root_password_sha2 alanına yazacağız.

echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1

Şifreli parolayı alıp

sudo nano /etc/graylog/server/server.conf

konfigürasyon dosyasını açalım ve root_password_sha2 karşısına yazalım.

Parola işlemlerini tamamladık.

Konfigürasyon dosyasını kapatmadan önce son bir işlemimiz var.

root_timezone değişkenini bulup, root_timezone = Europe/Istanbul şeklinde güncelleyelim.

Dosyayı kaydedip çıkalım.

Graylog servisini başlangıçta aktif hale getirip, servisi başlatıyoruz. Daha sonra servisi başlatıp, logdan kontrol ediyoruz. Graylog servisinin başlaması biraz vakit almaktadır. “Graylog server up and running.” yazısını gördüğünüzde servis başlamış demektir.

sudo systemctl daemon-reload
sudo systemctl enable graylog-server.service
sudo systemctl start graylog-server.service
tail -f /var/log/graylog-server/server.log

Varsayılan Port (514 TCP/UDP) Yönlendirme İşlemleri

Sırada varsayılan porta gelen logları istediğimiz porta yönlendirme işlemimiz var. Bunun için önce

ifconfig

ile makinemizin IP adresini öğreniyoruz.

Daha sonra

sudo nano /etc/rsyslog.conf

ile syslog konfigürasyon dosyamızı açıyoruz. Dosyanın son satırına

 *.* @makineipadresi:1514;RSYSLOG_SyslogProtocol23Format

yazıyoruz. Dosyayı kaydedip, kapatıyoruz. Burada 1514 port kısmına istediğiniz portu yazabilirsiniz.

Syslog servisini yeniden başlatıyoruz.

systemctl restart rsyslog

Şimdi firewall kurallarını yazacağız. 514 TCP/UDP portuna gelen isteklerin 1514 TCP/UDP portuna yönlendirilmesini belirtiyoruz.

iptables -t nat -A PREROUTING -p tcp --dport 514 -j REDIRECT --to 1514
iptables -t nat -A PREROUTING -p udp --dport 514 -j REDIRECT --to 1514
sudo iptables-save > /etc/iptables.rules

ile kurallarımızı kaydediyoruz.

less /etc/iptables.rules

ile kontrolünü sağlıyoruz.

Yeni dosya açıyoruz.

sudo nano /etc/network/if-pre-up.d/iptables

Yazıp kaydediyoruz.

iptables-restore < /etc/iptables.rules
exit 0

Dosyaya yazma izni veriyoruz.

chmod +x /etc/network/if-pre-up.d/iptables

Son Adımlar

Artık birkaç ufak adımımız kaldı. Aşağıdaki kod ile Graylog Server’ımızın ana sayfa içeriğini basıyoruz.

curl http://127.0.0.1:9000

Daha sonrasında

netstat -an | grep 9000

ile 9000 portunun dinlendiğini teyit ediyor, Graylog’un çalıştığını görüyoruz.

Konfigürasyon dosyasını açıyoruz. http_bind_address adresini değiştirip, servisi yeniden başlatıyoruz.

sudo nano /etc/graylog/server/server.conf
http_bind_address = ipadresi:9000

systemctl restart graylog-server

Graylog servisi yeniden başladığında

netstat -an | grep 9000

ile portu kontrol ediyoruz ve Graylog adresinin ipadresi:9000 olarak değiştiğini görüyoruz.

Artık web tarayıcısından Graylog’a girdiğimizde kullanıcı adı admin, parola ise daha önce belirlediğimiz parola ile oturum açabiliriz.

Graylog artık çalışır halde ve log toplamaya hazır.

Yukarıdaki System menüsünden Inputs seçiyoruz.

Syslog UDP tıklayıp Launch new input diyoruz. Title kısmına istediğinizi yazabilirsiniz. Ben Syslog UDP yazıyorum.

Bind address 0.0.0.0. Port 1514 ve Save diyoruz.

Start input ile log toplamayı aktif hale getiriyoruz. Varsayılan olarak 514 portuna gelen logların 1514 portuna yönlendirilmesi için düzenlemeleri yapmıştık. Bu input ile gelen logları görüntülenebilir hale getirdik.

Graylog kurulumumuzu tamamlamış olduk. İndeks, stream ve input yönetimi için diğer yazılara göz atabilirsiniz.

Yorum yaz

Daha Fazla:Linux