Categories
Blue Team News SPLUNK

SAP SPLUNK Entegrasyonu

Bu makalemizde SAP uygulamasındaki audit logları nasıl SPLUNK‘a alacağımızdan bahsedilmiştir. Elbette her şirketin SPLUNK topolojisi ve app yönetim şekli farklılık gösterebileceğinden olabildiğince tüm uygulayıcıların anlayabileceği sadelikte aktarılmaya özen gösterilmiştir.

Bu aşamada SAP sunucularınızın DEV, PROD ve TEST ortamlarının kurulu ve çalışır halde olması gerekmektedir. Aynı şekilde SPLUNK sunucularınızın da çalışır ve tüm konfigürasyonlarının yapılmış olması gerekmektedir. Burada sıfırdan SPLUNK kurulumu ya da SAP kurulumu gerçekleştirilmeyecektir. Hali hazırda konumlandırılmış sistemler birbiri ile ilişkilendirilecektir.

Aşamalar

  • SAP SPLUNK App Oluşturulması
  • SAP Sunucu Konfigürasyonları
  • SPLUNK Sunucu Konfigürasyonları

SAP SPLUNK App Oluşturma

Çalışacağımız yöntem SPLUNKBASE‘de yer alan appler dışında bir yöntemdir. Buradaki appler ihtiyacınızı karşılıyor ise onları da tercih edebilirsiniz.

SPLUNKBASE‘den indirdiğiniz her app içeriğinde belirli birtakım klasörler/dizinler bulunmaktadır. Bu klasörlerin/dizinlerin içerisinde, app hangi uygulama için üretilmiş ise onu anlayabilecek ve sunabilecek birtakım özellikler içermektedir. Aşağıdaki Görsel 1 ekran görüntüsünde bir Windows işletim sisteminin security, system ve application loglarını almanız için kullanmanız gereken app içeriğini listelenmiş halde görmektesiniz.

Splunk_TA_Windows App Ekran Görüntüsü
Görsel 1

default klasörünü/dizinini açtığımızda Görsel 2’deki konfigürasyon dosyaları görülmektedir.

Splunk_TA_Windows App Default Klasör Ekran Görüntüsü
Görsel 2

SAP appini kendimiz oluşturacağımız için içerisinde bu kadar klasör/dizin ve konfigüsrasyon dosyası bulunmayacaktır. SPLUNK_TA_SAP adında bir klasör/dizin oluşturuyoruz. Siz ismini istediğiniz şekilde tanımlayabilirsiniz. Burada TA ifadesi Technology Addon demektir ve genel olarak SPLUNKBASE‘deki app isimlerine benzer bir yaklaşım sergilenmiştir. Klasör/dizin içerisine Görsel 3’de görüldüğü gibi default, local ve metadata klasörlerini/dizinlerini oluşturuyoruz.

Splunk_TA_App Klasör Ekram Görüntüsü
Görsel 3

default klasörü/dizini varsayılan olarak gelen dosyaların konumlandırıldığı klasör/dizindir. Eğer siz özel bazı konfigürasyonlar yapmak ister ve varsayılan dosyaları da kaybetmek istemezseniz local diye bir klasör/dizin oluşturup buraya istediğiniz dosyaları oluşturabilirsiniz. SPLUNK app okurken önce local klasörünü/dizinini sonra default klasörünü/dizinini okuyacaktır.

app.conf

İçerik diğer SPLUNKBASE appleri referans alınarak oluşturulmuştur.

[ui]
is_visible = 0
label = SAP input

props.conf

// Bu stanzada encoding yöntemi belirlenmiştir. SAP .audit loglarını hangi encoding yöntemi ile dağıtıyor ise ondan okumanız gerekmektedir.
[sap:sal]
CHARSET=UTF-16LE 
NO_BINARY_CHECK=false
detect_trailing_nulls = false

// Bu stanzada aldığınız logun satır özelliklerinin neye göre olacağı ve hangi regex'e göre okunacağını belirlenmiştir. TRANSFORMS kısmı transform.conf dosyasındaki bir stanzaya bağlanmıştır. transform.conf içerisindeki bu stanzada regex yazılacaktır. Yani gelen log anlamlı fieldlara bölünecektir.
[sap:sal]
category = Custom
BREAK_ONLY_BEFORE_DATE =
LINE_BREAKER = ([23])[A-Z][A-Z][A-Z0-9]\d{14}00
TIME_PREFIX=\w{3}
TIME_FORMAT=%Y%m%d%H%M%S
MAX_TIMESTAMP_LOOKAHEAD = 14
SHOULD_LINEMERGE = false
TRANSFORMS=add_separators

// Bu stanzada bölünecek olan fieldslarımız için konfigürasyon yapıyoruz. Bu kısımın SPLUNK - Settings - Fields kısmında görünecektir.
[sap:sal]
category = Custom
REPORT-SAP-Delim = REPORT-SAP-Delim

EXTRACT-SAL-A = ^.{130}(?<VarA>.*?[^&\|]*)&*
EXTRACT-SAL-B = ^.{130}.*?&(?<VarB>.*?[^&\|]*)&*
EXTRACT-SAL-C = ^.{130}.*?&.*?&(?<VarC>.*?[^&\|]*)&*
EXTRACT-SAL-D = ^.{130}.*?&.*?&.*?&(?<VarD>.*?[^&\|]*)&*
EXTRACT-SAL-E = ^.{130}.*?&.*?&..*?&.*?&(?<VarE>.*?[^&\|]*)&*
EXTRACT-SAL-F = ^.{130}.*?&.*?&.*?&.*?&.*?&(?<VarF>.*?[^\|]*)

transforms.conf

// Bu stanzamız ismini props.conf içerisinde almıştı, burada oluşturuyoruz. İçerisine bir satır olarak gelen audit logunu nasıl böleceğimizi belirtiyoruz. Regex yazma/deneme işlemleri için https://regex101.com/ adresini kullanabilirsiniz.
[add_separators]
DEST_KEY=_raw
SOURCE_KEY=_raw
REGEX = ^(.{3})(.{8})(.{6})(\w\w)(.{5})(.{5})(.{2})(.{8})(.{12})(.{20})(.{40})(.{3})(.)(.{64})(.{20})
FORMAT = $1|$2|$3|$4|$5|$6|$7|$8|$9|$10|$11|$12|$13|$14|$15

// props.conf içerisinde belirlediğimiz custom kategoriyi burada stanza olarak oluşturuyoruz. pipe (|) sembolüne göre logu fieldslara bölmesini (Çünkü gelen logda pipe sembolü ile bölünmüş alanlar var. Başka bir şeyi bölme değeri olarak da alabilirdik.) ve her bölünen "FIELDS" sırası ile aşağıdaki isimleri vermesini istiyoruz.
[REPORT-SAP-Delim]
DELIMS = "|"
FIELDS = "message_id","date","time","dummy","process_id","task","proctype","term","user","transaction","app","client","sglmode","message","src"

inputs.conf

input.conf dosyalarının içerikleri appe göre değişiklik gösterir. input tiplerine buradan bakabilirsiniz. Biz SAP sunucusundan audit loglarını belirli bir klasörden/dizinden okuyacağız bu nedenle “monitor” input tipini kullanıyoruz.

// Burada dosya yolunu ifade ederken "//" "\\" işaretlerine dikkat ediniz. Örnek yol verecek olursak "//Z:\usr\sap\PRD\DVEBMGS00\log\*.AUD" şeklinde bir yol vermeniz gerekecektir.
[monitor:dosya_yolu]
disabled=false
index=buraya_tanimladiginiz_index_ismi_gelecek
sourcetype = sap:sal // Burada "sal" ifadesini kullanıyor olmamızın nedeni auidt loglarının "Security Audit Log" olarak ifade edilmesidir.
alwaysOpenFile=1

default.meta

Bu dokümanın oluşturulma amacı appin hangi seviyede ne izninin olduğunu belirtmektir. Appin dağıtıldığı SPLUNK sunucuların yeniden başlaması gibi durumlarda aynı izinlerle appin çalışabilmesi için önemlidir. Aksi olduğunda her yeni başlatma sonrası (burada sistem ya da servis farketmezsin) arayüzden appe ilişkin konfigürasyon izinlerinin güncellenmesi gerekecektir.

# Application-level permissions

[]
access = read : [ * ], write : [ * ] // Okuma ve yazma yetkisini SPLUNK sunucusu üzerindeki tüm kullanıcılara veriyoruz. İsterseniz siz özelleştirebilirsiniz. Burada önemli olan analiz gerçekleştirecek kullanıcılara bu yetkinin verilmesi aksi halde SAP audit loglarını incelemek istediğinde çıktıda filedslar görünmeyecektir.
export = system // Burada bu appe bağlı konfigürasyonların tüm appler ile çağrılabileceğini ifade ediyoruz.

Bu konfigürasyonun SPLUNK sunucu arayüzündeki görüntüsü Görsel 4’deki gibidir.

Splunk App Permissions Ekran Görüntüsü
Görsel 4

SAP Sunucu Konfigürasyonları

Hangi ortamdan audit logu alınacaksa (DEV, PROD, TEST) o sunucu üzerinde arayüzden aşağıdaki konfigürasyonların yapılması gerekmektedir. Tüm SAP sunucularında aynı ayar yapılarak log alınabilir.

SAP Security Audit Log Konfigürasyonu

SAP güvenlik logları SM20’de yer almaktadır. Profil paremetrelerinde yoksa “rsau/enable = 1” değerinin eklenmesi gerekmektedir. Daha detaylı anlatım için buraya bakabilirsiniz.

http://www.sapbasisforbeginner.com/
Görsel 5: http://www.sapbasisforbeginner.com/

SPLUNK Sunucu Konfigürasyonları

Buradaki adımlarımızı farklı senaryolar olması halinde nasıl davranacağınızı ifade ederek devam edeceğiz. Şirketin SPLUNK toplojisine göre yaklaşım değişim göstermekle birlikte temelde olay aynıdır. Yine app yönetiminde de şirketler arası değişiklik görülebilir.

Senaryo 1

Bu yapıda  SPLUNK Indexer, Search Heads, License Master sunucularınızın olduğunu ve bir SAP sunucusundan (sunucuları da olabilir) log aldığınızı varsayıyoruz. Bu durum da oluşturduğunuz Splunk_TA_SAP dosyasını bu 4 sunucuya da dağıtmalısınız.

* App dağıtan merkezi bir sunucu olmadığı varsayılmıştır.

Senaryo 2

Bu yapıda  SPLUNK Heavy Forwarder, Indexer, Search Heads, License Master sunucularınızın olduğunu ve bir SAP sunucusundan (sunucuları da olabilir) log aldığınızı varsayıyoruz. Bu durum da oluşturduğunuz Splunk_TA_SAP dosyasını bu 5 sunucuya da  dağıtmalısınız.

*App dağıtan merkezi bir sunucu olmadığı varsayılmıştır.

Senaryo 3

Bu yapıda  SPLUNK Heavy Forwarder, Indexer, Deployment Server, Search Heads, License Master sunucularınızın olduğunu ve bir SAP sunucusundan (sunucuları da olabilir) log aldığınızı varsayıyoruz. Bu durum da oluşturduğunuz Splunk_TA_SAP dosyasını Deployment Server üzerinde class yapısı oluşturarak kalan 5 sunucuya  dağıtmalısınız.

SPLUNK Search Heads Çıktısı

Tüm bu çalışmalardan sonra search işlemini yaptığımız Search Heads sunucusuna gelerek SAP logları için tanımlanan index değerinde Verbose Mode da search işlemi gerçekleştiriyoruz ve Görsel 6’daki çıktıyı almayı bekliyoruz. Search işlemini Indexer sunucusunda yapsanız da çıktı verecektir. Çünkü loglar Indexerda saklanmaktadır ve app bu sunucu üzerine de dağıtılmıştır.

index=index_ismi //Burada siz SAP için index oluştururken hangi isimlendirmeyi yaptıysanız onu yazmalısınız.

*Değerler lab ortamında oluşturulmuştur.

Görsel 6*

Referans

https://community.splunk.com/t5/Getting-Data-In/How-to-Splunk-the-SAP-Security-Audit-Log/m-p/380913

https://www.wallsec.de/blog/siem-your-sap-security-audit-log-with-splunk

http://www.sapbasisforbeginner.com/2015/09/how-to-ensure-security-log-is-running.html

Leave a Reply

Your email address will not be published. Required fields are marked *