Graylog Stream nedir? Nasıl çalışır?
Graylog stream; sunucuya gelen tüm mesajların içinden, belirli kriterlere göre belirlenmiş mesajların ayrıldığı ve görüntülendiği alanlardır. Bir stream içinde kurallar oluşturup (belirli bir Windws Event ID’ye göre, mesaj içeriğindeki bir kelimeye göre, mesaj içeriğindeki bir kelimeyi içermemesine göre vb.) gelen mesajları filtreleyebilirsiniz. Daha sonra bu stream sonuçlarını Dashboard’lara aktarıp, log sayılarını görüntüleyebilirsiniz.
Stream Yönetimi
İlk olarak menüden Streams seçerek tüm streamlerin listelendiği alana geliyoruz. Burada “All messages” adında varsayılan olarak bir stream mevcuttur. Sunucuya gelen tüm loglar bu streamde toplanır ve loglar Default index set indeksine aktarılır. Stream düzenini bu şekilde çalışmak verimsiz ve kullanışsız olur. Dolayısıyla burayı kategorize etmek sağlıklı olacaktır. Örneğin; Windows sunucularda gerçekleşen RDP oturum açma/oturum kapatma ve dosya sunucularında dosya silme/oluşturma/kopyalama vb. loglarını topluyorsunuz. Bunun için oturum logları için bir stream, dosya silme logları için bir stream, dosya oluşturma için bir stream, dosya kopyalama için bir stream gayet mantıklı olacaktır.
Stream Oluşturma
Create Stream’e tıklayalım.
Açılan pencerede Title ve Description’ı istediğiniz gibi doldurabilirsiniz. Ben ilk olarak gereksiz logların toplandığı bir stream oluşturmak ve logları daha güzel kategorize etmek istiyorum. Index Set kısmında daha önce oluşturduğum GereksizLoglar’ı seçiyorum. (Graylog İndeks Yönetimi yazısı için bkz: https://www.bilgiambari.com/siberguvenlik/logyonetimi/graylog-indeks-yonetimi) “Remove matches from ‘All messages’ stream seçeneğini seçiyorum. Bunu yaparak varsayılan olarak “All messages” streamine gelen gereksiz logları oradan alıp Gereksiz Loglar streamimize alıyoruz. Bu şekilde streamlerinizi çoğaltıp, “All messages” streamindeki yükü azaltabilir, stream yönetiminizi detaylı ve sağlıklı yönetebilirsiniz. Bu arada gereksiz logları neden ayırıyoruz diye sorabilirsiniz. İleride gözünüzden kaçan veya ihtiyacınız olan bir logu görmek isteyebilirsiniz, bunu da gereksiz loglar içinde arayabilirsiniz.
Save dediğimizde stream oluşacak. Start Stream diyerek artık streami çalışır hale getiriyoruz.
Şimdi “Manage Rules” tıklayarak stream içine girelim. Graylog bize burada 2 adet seçenek sunuyor. Birinci seçenek; bir mesaj içerisinde belirlediğimiz kuralın veya kuralların hepsi uyarsa bu log streame yazılsın anlamına geliyor. İkinci seçenek; bir mesaj içerisinde belirlediğimiz kurallardan herhangi biri bile mesaj içerisinde mevcutsa bu log streame yazılsın anlamına geliyor.
Add stream rule’a tıklayarak kural oluşturalım. Belirleyeceğim Windows EventID’ye göre mesajları filtrelemesini ve streame yazmasını istiyorum. Field alanında Event yazdığım zaman liste otomatik olarak önüme düşüyor ve EventID seçiyorum.
Type kısmında 7 adet seçeneğimiz mevcut. Tam eşleşme ve regex eşleşmesi gibi string karşılaştırmalar, daha büyük ve daha küçük gibi sayısal karşılaştırmalar, alan varlığı gibi mesajın içerisinde o alan varsa mesajı kabul etme, string içerme ve always match. Windows EventID tam bir sayı olduğu için “match exactly” seçiyorum.
Event id belirtiyorum ve isteğe göre bir açıklama yazıyorum. Value kısmı altında “Inverted” seçeneği mevcut. Bu tersi anlamına geliyor. Örneğin; 4725 yazıp, “Inverted” seçtiğimde, event id’si 4725 olmayan tüm mesajlar bu streame gelecek. Veya Field alanından message seçip, “abc” yazdığımda, içeriğinde “abc” geçmeyen tüm mesajlar bu streame gelecek.
Save deyip kaydettiğimizde stream içinde kuralımızı görebileceksiniz.
“I’m done!” tıkladığınızda stream kaydedilecek ve artık gelen loglar içinden EventID alanında 4725 yazan tüm loglar bu streame yönlendirilecek. Streame tıklayıp, gelen logları görüntüleyebilir, dashboarda ekleyebilirsiniz.