Graylog Log Yönetimi (Windows)-1

Furkan Şeker
4 min readJan 18, 2024

--

Merhabalar, bu yazıda Graylog ürünü üzerine, Windows işletim sistemine sahip bir makineye ait logların nasıl aktarılabileceği ve bu aktarım aşamasında nelere dikkat edilmesi gerektiği gibi önemli noktalardan bahsedilecektir.

Bir yazı serisinin başlangıcına hoş geldiniz :)

Lab Ortamı:

  • VMware Workstation or Virtual Box (VMware kullanılmıştır.)
  • Windows 10 VM (Sysmon kurulmuştur.)
  • Ubuntu 20.04 VM

Yazıya başlamadan önce Ubuntu cihazı üzerine bir Graylog kurulumu gerçekleştirilmiştir. Bu noktada Graylog’un web adresinden faydalanabilirsiniz.

Link:
https://go2docs.graylog.org/5-0/downloading_and_installing_graylog/ubuntu_installation.html

Ürününden kısaca bahsetmek gerekirse Graylog; tüm loglarınızı merkezi olarak bir noktada toplama, anomalileri gözlemleme, analizler gerçekleştirme ve kısmen dashboard hazırlama gibi aksiyonları gerçekleştirmeye imkan sağlayan açık kaynak kodlu bir loglama yazılımıdır (log management).

Log collect işleminden bahsetmek gerekirse, Windows makine üzerinden graylog üzerine log gönderirken log merkezileştirme için kullanılan bir araca ihtiyaç duyulmaktadır. Bu noktada en fazla tercih edilen NXLog kullanılacaktır. NXLog; log zenginleştirme ve log iletme dahil olmak üzere log işleme özellikleri sunan, çok platformlu bir log toplama ve merkezileştirme aracıdır.

Aşama aşama yapılması gereken işlemler aşağıdaki gibidir.

  1. Windows Makine üzerine uygun işletim sistemi özelliklerini taşıyan NXLog agent yazılımı indirilmesi gerekmektedir (next-next şeklinde basit bir kurulum yapılmaktadır).

Link: https://nxlog.co/downloads

nxlog agent

2. NXLog kurulumundan sonra log collect için bir config dosyası düzenlemesi yapmak gerekecektir. Bu config dosyası için Windows üzerinden alınacak loglar ve hangi sunucuya gideceği konusunda ayarlamalar yapılması gerekecektir.

“NXLog.conf” Default Dosya Dizini: C:\Program Files\nxlog\conf\nxlog.conf

3. Belirtilen dizin içerisindeki conf dosyasında birtakım değişiklikler yapmak gerekecektir (default config değiştirilmiş ve özelleştirilmiştir, severity değerleri kritiklik seviyesine göre ayarlanmıştır). İlgili config dosyası GELF (Graylog Extended Log Format) formatından oluşmaktadır. GELF formatı gelişmiş özelliklere sahip bir formattır.

Daha fazla bilgi için Graylog’un sitesini ziyaret edebilirsiniz.

Link: https://go2docs.graylog.org/5-0/getting_in_log_data/gelf.html

Düzenlediğim Conf Dosyası:

Panic Soft
#NoFreeOnExit TRUE

define ROOT C:\Program Files\nxlog
define CERTDIR %ROOT%\cert
define CONFDIR %ROOT%\conf
define LOGDIR %ROOT%\data
define LOGFILE %LOGDIR%\nxlog.log
LogFile %LOGFILE%

Moduledir %ROOT%\modules
CacheDir %ROOT%\data
Pidfile %ROOT%\data\nxlog.pid
SpoolDir %ROOT%\data

<Extension _syslog>
Module xm_syslog
</Extension>

<Extension _charconv>
Module xm_charconv
AutodetectCharsets iso8859–2, utf-8, utf-16, utf-32
</Extension>

<Extension _exec>
Module xm_exec
</Extension>

<Extension _fileop>
Module xm_fileop

# Check the size of our log file hourly, rotate if larger than 5MB
<Schedule>
Every 1 hour
Exec if (file_exists(‘%LOGFILE%’) and \
(file_size(‘%LOGFILE%’) >= 5M)) \
file_cycle(‘%LOGFILE%’, 8);
</Schedule>

# Rotate our log file every week on Sunday at midnight
<Schedule>
When @weekly
Exec if file_exists(‘%LOGFILE%’) file_cycle(‘%LOGFILE%’, 8);
</Schedule>
</Extension>

<Extension gelf>
Module xm_gelf
</Extension>

<Input in>
Module im_msvistalog
ReadFromLast FALSE
SavePos FALSE
Query <QueryList>\
<Query Id=”0">\
<Select Path=”Application”>*</Select>\
<Select Path=”System”>*</Select>\
<Select Path=”Security”>*</Select>\
<Select Path=”Microsoft-Windows-Sysmon/Operational”>*</Select>\
<Select Path=”Microsoft-Windows-PowerShell/Operational”>*</Select>\
<Select Path=”Microsoft-Windows-DNS-Client/Operational”>*</Select>\
</Query>\
<Query Id=”1">\
<Select Path=”Application”>*[System[(Level=1 or Level=2 or Level=3)]]</Select>\
<Select Path=”System”>*[System[(Level=1 or Level=2 or Level=3)]]</Select>\
<Select Path=”Security”>*[System[(Level=1 or Level=2 or Level=3)]]</Select>\
<Select Path=”Microsoft-Windows-Sysmon/Operational”>*[System[(Level=1 or Level=2 or Level=3)]]</Select>\
<Select Path=”Microsoft-Windows-PowerShell/Operational”>*[System[(Level=1 or Level=2 or Level=3)]]</Select>\
<Select Path=”Microsoft-Windows-DNS-Client/Operational”>*[System[(Level=1 or Level=2 or Level=3)]]</Select>\
</Query>\
</QueryList>
</Input>

<Output out>
Module om_udp
Host (size ait olan graylog makinesi ip adresi)
Port (default olarak 12201 olarak gelmektedir, bunu değiştirebilirsiniz.)
OutputType GELF
</Output>

<Route 1>
Path in => out
</Route>

GELF, UDP ve TCP ile log gönderimi sağlamaktadır. Yukarıdaki config incelendiğinde defaultta TCP olan ayar, UDP olarak güncellenmiştir. Bunun sebebinden bahsetmek gerekirse GELF; zaman aşımlarından, bağlantı sorunlarından veya herhangi bir şeyden kaynaklanan herhangi bir komplikasyon olmadan gönderim sağlamak için UDP tercih edilmiştir.

4. Log alınan kaynaklardan bahsetmek gerekirse conf dosyasında da görülebileceği gibi aşağıdaki gibi özetlenebilir:

  • Application
  • System
  • Security
  • Sysmon
  • Powershell
  • DNS

Yukarıda belirtilen loglar GELF UDP ile alınmaktadır. Bunlar tercih edilen isterlere göre değişkenlik gösterebilmektedir (Default olarak sadece application, system ve security logları gelmektedir. Ek olarak sysmon, powershell ve dns logları da ilgili conf dosyası içerisine eklenmiştir.).

5. Tüm bu aşamaları sorunsuz gerçekleştirdiyseniz eğer, nxlog servisini start / restart ederek conf dosyası içerisinde belirtmiş olduğunuz logları graylog server üzerine gönderebilirsiniz.

services.msc üzerinden nxlog restart

6. Windows makinesi nxlog aracılığı ile loglarını göndermeye başlamıştır. Fakat bu noktada logların graylog server üzerine düşmesi için birtakım ayarlar yapılması gerekmektedir. Windows üzerinden gelen logları yakalamak için bir “input” noktası oluşturmak gerekecektir.

input noktası oluşturulması

Yukarıdaki görselde de görüldüğü gibi graylog server arayüzü üzerinden bir input noktası oluşturulmuştur. Farklı input noktaları gözlemlenmektedir. Fakat conf dosyası üzerinde GELF UDP method olarak bir ayarlama yapıldığından ötürü bu bağlamda input noktasını da GELF UDP olarak ayarlamak gerekecektir.

Gerekli ayarlamalar yapıldıktan sonra aşağıdaki belirtilen alanların doldurulması gerekecektir. Bu noktada nxlog agent’ine ait conf dosyasında belirtilen port numarası input alanına girilmelidir. Node yani düğüm noktası ve input adı belirlendikten sonra diğer ayarlar defaultta olacak şekilde input noktası oluşturulacaktır.

input ayarları

7. Tüm ayarlar sorunsuz bir şekilde tamamlandıktan sonra artık graylog arayüzü üzerinden log akışının sağlandığını gözlemlemiş olacaksınız.

Graylog log akışı

8. Fields alanında ise log içerisinde filtrelemek istediğiniz değerleri görebileceksiniz (field alanı default olarak bırakılmıştır, özelleştirme aşamaları daha sonra yapılacaktır).

Fields alanı

Buraya kadar değerli vaktinizi ayırıp okuduğunuz için teşekkür ederim. Bir sonraki yazımızda graylog üzerinde loglama yapısında field düzenleme vb. gibi SOC Monitoring aşamaları üzerine çalışmalar yapılacaktır, takipte kalınız:)

--

--