İster DMZ‘de olsun, ister iç ağda; Windows tabanlı istemci ve sunucu loglarının toplanmasına ne kadar önem veriliyorsa, Linux tabanlı istemci ve sunucularda da bahse konu logların toplanması, SIEM‘e gönderilmesi ve sonrasında korelasyon kurallarıyla zenginleştirilmeleri bir o kadar önemli…” düşüncesi bu yazının konusunu oluşturuyor. Daha önce Windows tabanlı istemci ve sunucularda log toplama konularıyla ilgili farklı içerikleri incelemek için… ([1], [2], [3],[4]).
Yazı kapsamında Windows istemci ve sunucuların vazgeçilmezi Sysmon‘un Linux için hazırlanan “Sysmon for Linux” versiyonunu ve auditd’yi inceleyip sonrasında rsyslog ile farklı konfigürasyonlar yaparak yolladığımız logları zenginleştirmeye çalışacağız. Konuyla ilgili nette bulabileceğiniz daha kapsamlı içerikler bulunmakla birlikte, bahse konu içerikleri nasıl kullanacağınız sizin ve varsa Linux yöneticinizin arasındaki bir konu.
İçerik:
1- Sysmon for Linux kurulumu ve yapılandırma işlemleri
2- Auditd kurulumu ve yapılandırma işlemleri
3- Rsyslog konfigürasyonu
4- Toplanan logların incelenmesi
Özetle, Ubuntu tabanlı bir istemci üzerine Sysmon for Linux, auditd, rsyslog kuracak ve yapılandırmaya çalışacağız. Sysmon for Linux kurulumu ile yazıya devam edelim.

1- Sysmon for Linux Kurulumu ve Yapılandırma İşlemleri
Sysmon for Linux kurulumunu en basit ve hızlı şekilde gerçekleştirmek için aşağıdaki komutları kullanalım. Şayet derleme ve paketleme işlemlerini tek tek yapmak istiyorsanız bu bağlantıdaki adımları izleyebilirsiniz.
cd /opt/
mkdir sysmonforlinux
cd sysmonforlinux/
wget https://raw.githubusercontent.com/OTRF/Blacksmith/master/resources/scripts/bash/Install-Sysmon-For-Linux.sh
chmod +x Install-Sysmon-For-Linux.sh
./Install-Sysmon-For-Linux.sh
Windows tarafına benzer şekilde XML uzantılı bir config dosyası oluşturup, Sysmon‘a tanımladığımız takdirde hangi logların toplantıp toplanmayacağını belirlemek mümkün.
wget https://raw.githubusercontent.com/OTRF/Blacksmith/master/resources/configs/sysmon/linux/sysmonv1.0.0.xml
mv sysmonv1.0.0.xml config.xml
sysmon -accepteula -i config.xml
Sysmon for Linux’un kurulumunun başarılı olup olmadığını tespit etmek ve logları incelemek için aşağıdaki komutları kullanalım.
sudo tail -f /var/log/syslog | sudo /opt/sysmon/sysmonLogView
Görüldüğü üzere loglar akmaya başlamış durumda. İlk adımı tamamladık, diğer adımla devam edelim.

2- Auditd Kurulumu ve Yapılan dırma İşlemleri
Auditd ile saldırganların gerçekleştirdikleri dosya oluşturma, silme, hassas sistem dosyalarına erişme ve değiştirme işlemlerini kernel düzeyinde yakalamak ve loglamak mümkün. Hem auditd, hem Sysmon for Linux‘u neden toplamalıyız sorusuna karşı sorulacak sorunun, Windows tarafından neden hem 4688’leri, hemde Sysmon EventID 1’leri toplamalıyız sorusu olduğunu düşünmekteyim.
Aşağıdaki komutlarla auditd‘yi kuralım ve Neo23x0 tarafından oluşturulan audit.rules dosyasını da auditd‘ye tanımlayalım.
sudo apt-get install auditd audispd-plugins -y
cd /etc/audit/
cd rules.d/
wget https://raw.githubusercontent.com/Neo23x0/auditd/master/audit.rules
rm audit.rules
mv audit.rules.1 audit.rules
systemctl restart auditd
Sonrasında auditd servisinin çalışıp çalışmadığını kontrol edelim. Servis ayaktaysa şu aşamada sorun yok demektedir.

Audisp içindeki syslog.conf dosyasını açalım.
nano /etc/audisp/plugins.d/syslog.conf
Sonrasında auditd logları Syslog ile göndermek için dosya içinden “active=yes” düzenlemesini yapalım. Yapılan düzenlemenin etkin olması için sonrasında servisi yeniden başlatalım ve rsyslog kurulumuna geçelim.
systemctl restart auditd

3- Rsyslog Konfigürasyonu
Yazının bu başlığında, Auditd ve Sysmon for Linux ile topladığımız logları Rsyslog ile syslog üzerinden SIEM’e gönderelim. Öncelikle rsyslog kurulu değilse kurulum işlemini gerçekleştirelim.
systemctl status rsyslog
sudo apt-get install rsyslog -y
systemctl restart rsyslog
Servis ayakta.

Sonrasında ufw 514 tcp,udp için izinleri verdikten sonra rsyslog.conf dosyasını düzenleyelim.
ufw allow 514/tcp
ufw allow 514/udp
nano /etc/rsyslog.conf
Bahse konu conf dosyasında yapılması gereken ayarlar (192.168.56.105:514 Syslog ve SIEM sunucumuz)
*.* @@192.168.56.105:514
module(load="imuxsock")
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")
Değişiklikler sonrasındaki durum (Servisi restart etmeyi unutmayalım):
systemctl restart rsyslog

Ek olarak, Apache sunucusu tarafından oluşturulan access ve error loglarını da rsyslog ile göndermek istiyorsak aşağıdaki ayarları yapalım.
cd /etc/rsyslog.d/
touch apache_access.log.conf
nano apache_access.log.conf
$ModLoad imfile
$InputFileName /var/log/apache2/access.log
$InputFileTag apache_access:
$InputFileStateFile stat-apache-access
$InputFileSeverity info
$InputFileFacility local3
$InputRunFileMonitor
$InputFilePollInterval 10
local3.* @@192.168.56.105.514
/etc/rsyslog.conf
$ModLoad imfile
$InputFileName /var/log/apache2/error.log
$InputFileTag apache_error:
$InputFileStateFile stat-apache-error
$InputFileSeverity info
$InputFileFacility local3
$InputRunFileMonitor
$InputFilePollInterval 10
local3.* @@192.168.56.105:514
systemctl restart rsyslog
Sonrasında tcpdump ile logların gönderilip gönderilmediğini inceleyelim.
tcpdump -i enp0s8 port 514 and dst 192.168.56.105 -vv -c 5
Loglar başarılı şekilde merkezi log sunucusuna gönderiliyor.

4- Toplanan Logların İncelenmesi
Hak yükseltme kontrolü simülasyonu için Linenum scripitini indirelim ve çalıştıralım.

CommandLine bölümünden de görüleceği üzere yukarıdaki komutlar loglandı.

Uzak sunucudan dosya çekmeye çalışalım.

DestinationIP, port ve PID bilgileri:

Dosya oluşturup, silelim.

Loglar:

Auditd tarafından ne tür logların gönderildiğini görmek üzere, recon logları oluşturalım.

uname, whoami ve uname recon logları:

Kullanıcı oluşturup, ilgili kullanıcıyı sudo grubuna ekleyelim.

Auditd logları:

Son olarak Apache access logları:

Faydalı olması dileğiyle…
Kaynaklar:
2- https://github.com/OTRF/Blacksmith/
3- https://linuxhint.com/send_linux_logs_remote_server/
4- https://medium.com/@olafhartong/sysmon-for-linux-57de7ca48575
5- https://www.youtube.com/watch?v=lc1i9h1GyMA
6- https://capsule8.com/blog/auditd-what-is-the-linux-auditing-system/
7- https://github.com/Sysinternals/SysmonForLinux
8- https://github.com/Neo23x0/auditd/blob/master/audit.rules