Open Source

Graylog Üzerinden Log Girişi Yapılandırılması

Merhabalar. Bir önceki makalemizde Ubuntu 20.10 LTS üzerine Graylog kurulumunu gerçekleştirmiştik ama gerekli yapılandırmalar yapılmadığı için şu an için graylog sunucumuza log gönderimi gerçekleşmiyor. Bu makalemizde Windows ve Linux sistemler üzerinden graylog sunucumuza log gönderimi sağlayacağız.

https://www.cozumpark.com/ubuntu-20-10-uzerinde-graylog-kurulumu

Linux sistem için UBUNTU 20.04 LTS kullanacağım, Windows sistem tarafı için 2019 Datacenter kullanacağım. Windows 2019 Datacenter üzerinde Domain Controller, WSUS, Remote Access rolleri aktif olarak çalışıyor.

Öncelikle Windows Server 2019 Datacenter sistemi üzerinden başlayacağım log göndermeye. Windows tarafı için Nxlog yazılımı kullanacağım. Nedir bu Nxlog? Güvenlik risklerini, sunucu günlüklerini ve uygulama günlüklerini analiz etmemiz için yardımcı bir araçtır. Graylog tarafına log gönderimi için Nxlog kullanacağız. Nxlog yazılımı kurumsal ve topluluk olarak iki versiyonu bulunmakta. Biz açık kaynak olan topluluk versiyonunu kullacağız.

https://nxlog.co/products/nxlog-community-edition/download

Linkinden Windows sürümünü indiriyoruz.

İndirme işleminden sonra basit bir kurulum süreci var zaten kurulum işlemini tamamlıyoruz. Kurulum tamamlandıktan sonra Program Files altına nxlog klasörü içerisine nxlog konfigürasyon dosyası oluşturacak. Bu yapılandırma dosyası içerisinde değişiklikler sağlayacağız.

Nxlog ile GELF Formatı ve SysLog formatı kullanabiliriz. Yapılandırma işlemlerine başlamak için .conf dosyasını notdefteri ile açıyorum.

GELF Formatı:Panic Soft
#NoFreeOnExit TRUE

define ROOT     C:\Program Files (x86)\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>\
                    </Query>\
                </QueryList>
</Input>
 
<Output out>
    Module      om_udp
    Host        ip adresiniz
    Port        port
    OutputType  GELF
</Output>
 
<Route 1>
    Path        in => out
</Route>
SYSLOG Formatı:## Please set the ROOT to your nxlog installation directory

#define ROOT C:\Program Files\nxlog
define ROOT C:\Program Files (x86)\nxlog

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

<Extension syslog>
  Module xm_syslog  
</Extension>

# Monitor application log files
<Input watchfile>
  Module im_file
  File 'C:\\path\\to\\*.log'
  Exec $Message = $raw_event;
  Exec if file_name() =~ /.*\\(.*)/ $SourceName = $1;
  SavePos TRUE  
  Recursive TRUE
</Input>

# Monitor a single application log file
#<Input watchfile2>
#  Module im_file
#  # File 'C:\\path\\to\\a\\single\\file.log'
#  Exec $Message = $raw_event;
#  Exec if file_name() =~ /.*\\(.*)/ $SourceName = $1;
#  SavePos TRUE  
#  Recursive TRUE
#</Input>

# Monitor Windows event logs
<Input eventlog>
  # Uncomment for Windows Vista/2008 or later 
  Module im_msvistalog
  
  # Uncomment for Windows 2000 or later
  # Module im_mseventlog
</Input>

<Processor eventlog_transformer>
  Module pm_transformer
  Exec $Hostname = hostname();
  OutputFormat syslog_rfc5424  
</Processor>

<Processor filewatcher_transformer>
  Module pm_transformer
  
  # Uncomment to override the program name
  # Exec $SourceName = 'PROGRAM NAME';
    
  Exec $Hostname = hostname();
  OutputFormat syslog_rfc5424
</Processor>

<Output syslogout>
  Module om_udp
  Host ip adresiniz
  Port port numaranız
</Output>

<Route 1>
  Path eventlog => eventlog_transformer => syslogout
</Route>

<Route 2>
  Path watchfile => filewatcher_transformer => syslogout
</Route>

# Replace route 2 with this implementation if watchfile2 is active
#<Route 2>
#  Path watchfile, watchfile2 => filewatcher_transformer => syslogout
#</Route>

Yapılandırma dosyamızı ayarladıktan sonra nxlog servisimizi yeniden başlatabiliriz. Hizmetler penceremize giriyoruz ve nxlog servisini buluyoruz. Hizmeti yeniden başlatarak aktif duruma getiriyoruz.

Graylog panelimize erişim sağlayarak input ayarlamamız gerekmekte.

Graylog panelimizden System sekmesi altında bulunan Input bölümüne giriyoruz.

Ben loglarımı SYSLOG Udp kullanarak ayarlayacağım. Siz isteğinize göre GELF kullanabilirsiniz.

Select Input kısmından Syslog UDP araması yaparak seçimi gerçekleştiriyorum ve Launch new input butonuna basıyorum. Açılan pencereye bizim sunucu bilgilerimizi gireceğim.

Yaptığımız işlemleri kaydediyoruz ve Search kısmına geliyoruz. Search kısmında Windows sunucumuzdan gelen bazı logların düştüğünü görmekteyiz. Graylog ve nxlog birleştiği zaman güzel ve hızlı sonuçlar elde edebiliyoruz.

Linux Sunucu için Log Girişi

Windows adımlarında yaptığımız işlemleri tekrarlıyoruz. System sekmesi altından Input bölümüne giriyoruz. Syslog UDP seçimini tekrarlıyorum ve Launch butonuna basıyorum.

Gerekli bilgilerimizi yazıyorum ve Save diyerek kaydediyorum. Linux sunucum için firewall(ufw) izni vermemiz gerekmekte.

sudo ufw allow portnumaranız/udp

Linux sistemler için Log girişi yapılandırması yapacağız. (Ubuntu, Pardus ve Debian)

rsyslog servisini yüklememiz gerekmekte.

sudo apt install rsyslog

Rsyslog servisi için yapılandırma yapmamız gerekmekte.

sudo nano /etc/rsyslog.conf

Yapılandırma dosyamızı açtığımız zaman en alt satıra iniyoruz ve boş bir satıra *.*@sizinipadresiniz:portnumariniz bilgilerimizi giriyoruz.

Servisimizi yeniden başlatıyoruz.

sudo systemctl restart rsyslog

Ubuntu sunucum üzerinden graylog üzerine bir log mesajı göndererek test işlemi gerçekleştiriyorum.

logger testlogdeneme

Görmüş olduğunuz gibi göndermiş olduğum text mesajı log olarak düştü. Graylog çokfazla özelleştirilebilir bir sistem. Widget, Dashboard, regex gibi ifadeler ile özelleştirebilirsiniz. Network cihazlarınızdan log düşürebilirsiniz hatta ve hatta Pfsense üzerinden bile log kaydettirebilirsiniz.

Zaman ayırıp okudunuz için teşekkür ederim. Bir sonraki makalemde görüşmek üzere.

İlgili Makaleler

4 Yorum

  1. Merhaba, graylog olmayan bir ubuntudan rsyslog ile başka bir ubuntudaki grayloga logger ile log gönderebilir miyim? Bu mümkün müdür?

  2. Elinize sağlık hocam, conf dosyasını değiştirdiğimde service start edemiyorum.İnternette araştırdığımda herkes aynı conf dosyası örneğini vermiş.Servisi start ettiğimde aldığım hata Error 1053.
    Konu hakkında bilgi sahibi iseniz lütfen aydınlatın.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu