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.