FlexConnector ArcSight ürün ailesi içerisinde bulunan bir SmartConnector çeşididir. ArcSight ürün ailesinde tanımlı olarak gelen kaynaklar dışında bir kaynaktan log alınması gerektiği durumlarda FlexConnector kullanılmaktadır. FlexConnector sayesinde ArcSight tarafında desteği olmayan özel kaynaklardan log alımı Parser yazımı ile sağlanabilmektedir.
Genel anlamda Parser, gelen verinin parçalara ayrılıp bu ayrılmış parçaların anlamlandırılmasını sağlayan bir çeşit scripttir. ArcSight SmartConnector içerisinde desteği verilen ürünlerin parserları gömülü bir şekilde gelmektedir. Desteği verilmeyen log kaynaklarına Parser yazımı sağlayarak özel bir şekilde logları yorumlayabiliriz. Parser sayesinde log içerisinde ayrımı yapılan alanları ArcSight içerisindeki alanlara tanımlayarak okunurluğu arttırabiliriz.
ArcSight içerisinde parserları 3 ana başlığa ayırılabiliriz;
Regex: Regex ile loglardan alanları ayırarak kullandığımız parser.
Delimeter: Log içerisinde alan ayrımını sağlayan bir özel karakter (“;” “,” “:” gibi) kullanılan parser.
Database: Database tablosundaki alan adlarını kullanarak ayrım yaptığımız parser.
Şeklinde özetleyebiliriz.
Bu yazıda size elimizde bir text dosyasına log yazan bir uygulama olduğu bir senaryo için
FlexConnector kurulumunu Regex parser yazımını demo ile göstereceğim.
Demo içerisinde elimizde IBM ACE ürününe ait ArcSight tarafından henüz destek verilmeyen log kaynağından log alımın ve Logger üzerinde görüntülenmesini sağlanacaktır.
Log örneği dosyaya şu şekilde yazılmaktadır;
2020-03-25 03:48:41,229 INFO [test] <HTTPInputHeader Host=”localhost:7080″ User-Agent=”Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0″ Accept=”text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8″ Accept-Language=”en-US,en;q=0.5″ Accept-Encoding=”gzip, deflate” Connection=”keep-alive” Upgrade-Insecure-Requests=”1″ X-Original-HTTP-Command=”GET http://localhost:7080/xxxxx HTTP/1.1″ X-Server-Name=”localhost” X-Server-Port=”7080″ X-Remote-Addr=”127.0.0.1″ X-Remote-Host=”localhost” X-Scheme=”http”></HTTPInputHeader>
Logger üzerinde logları okunaklı bir şekilde görüntüleyebilmemiz adına Parser yazımına ihtiyaç duyulacaktır.
Öncelikle elimizdeki log örneğini alanlara bölebilmek için regex yazmamız gerekecek. Bu şekilde log içerisinde gelen bilgileri istediğimiz gibi gruplayabileceğiz. Regex yazımı için internet üzerinde birçok yardımcı site bulunmaktadır.
(Demo içerisinde Regex101 sitesi kullanılmaktadır).
Örnek logumuzu aşağıdaki “TEST STRING” bölgesine yapıştırdıktan sonra yukarıdaki “REGULAR EXPRESSION” alanından regex yazılır.
Regex yazımını tamamlandıktan sonra “MATCH INFORMATION” kısmından grupların doğruluğunu kontrol edilmelidir.
Sonrasında Parserı yazmak için bir text dokümanının içerisine “regex=” ibaresini yazarak regexi bu alana eklenir.
ArcSight ürün ailesinde “\” karakteri “Escape character” olarak tanımlandığı için regex connector tarafından sağlıklı bir şekilde tanımlanamayacaktır. Bunu engellemek ve tüm regex in tanımlanmasını sağlamak için “\” karakterini “\\” ile değiştirilmesi gerekmektedir.
Karakter değişimini tamamladıktan sonra “Tokenization” işlemi ile devam edilir.
Regex içerinde gruplamış olduğumuz alanları tanımlayabilmek için token lara atanmalıdır. Token ları tanımlarken;
token[1].name=TOKEN İSMİ
token[1].type=TOKEN TİPİ (string,long,int,timestamp,ip vb.)
Şeklinde kullanmamız gerekmektedir. Tarih tipli tokenlarda ekstra olarak tarih formatını da token tanımlarken belirtilmesi gerekmektedir.
token[0].format=yyyy-MM-dd HH\:mm\:ss\,SSS
Tüm gruplar için token tanımlanması yapıldıktan sonra mapping aşaması ile devam edilir.
Bu aşamada dikkat edilmesi gereken önemli bir nokta ise token tipi alanında belirlenen tip ile log içerisinden regex ile alınan alanın tipinin aynı olması gerekmektedir. Örneğin tarih alanı belirtiliyorsa token[0].type=timestamp ,string, bir veri belirtiliyorsa token[0].type=string şeklinde belirtilmelidir.
Tokenization işlemi bittikten sonra aşağıdaki gibi bir doküman oluşacaktır.
Bu kısımda yapılmış olunan token tanımlamalarını kullanarak ArcSight içerisinde hangi alanda hangi token ın görülmek istenildiği belirtilecektir.
Tüm ArcSight alanlarını görebilmek için
“ArcSight FlexConnector Developer’s Guide” daki “ArcSight Built-in Event Field
Mappings” kısmındaki tablodan yararlanılabilir.
Mapleme işlemi yapılırken ArcSight Built-in Event Fields olarak belirlenmiş olan isim adlarının kullanılması gerekmektedir. Mapping işlemini;
event.”ArcSight-Field-İsmi”=”Token İsmi”
Şeklinde belirtilmesi gerekmektedir.
Demo üzerinde token tanımı yapılmış alanlardan;
Time alanını endTime alanına,
Log_Level alanını deviceEventCategory alanına,
Message alanını message alanına,
server_name ve device_version alanlarını da deviceCustomString alanlarına maplenmiştir.
Mappingini yaptığımız log un kolay anlaşılabilmesi için verilmiş olunan deviceCustomString alanlarının yanına deviceCustomStringLabel alanını __stringConstant(“…”) kullanarak sabit bir açıklama eklenilebilir.
Son düzeltmelerimiz ardından aşağıdakine benzer bir doküman oluşacaktır.
Parser dosya yazımı bu adım ile birlikte tamamlanıyor. Parser dosyasını kaydederken isimlendirmesine dikkat etmek gerekir. Oluşturduğumuz parser regex olduğu için “isim.sdkrfilereader.properties” formatını kullanmalıyız.
Oluşturulan parser’ı “test.sdkrfilereader.properties” olarak kaydediyoruz.
SmartConnector kurulumunda connector çeşidini seçildiği ekranda “ArcSight FlexConnector Regex File” seçilir.
connector tipini seçtikten sonrasında şu şekilde bir ekran çıkmaktadır.
Bu ekranda;
Log Unparsed Events kısmında connectore gelen logların parse edilememesi durumunda ham olarak hedefe gönderilmesi veya gönderilmemesini belirtilir.
Log File Name olarak belirtilen alanda kaynaktan almak istediğimiz log dosyasının yerini belirtiyoruz. Yanda bulunan “…” tuşuna tıklayarak dosya konumunu gösterilmelidir.
Configuration file alanında ise isimlendirmiş olduğumuz Parser dosyamızın sadece ilk noktaya kadar olan kısmının yazılması gerekmektedir.
Connector kurulumunun sonraki adımında ise hedef belirtilmesi gerekmektedir.
Hedef ile ilgili bilgilerde girildikten sonra servis kurulumunu sayfası gelmektedir.
Bu sayfada da servis ismi girildikten sonra kurulum tamamlanır.
Oluşturulan Parser dosyasını ilgili connector de;
“ARCSIGHT_HOME\user\agent\ flexagent”
Altına yerleştirilerek kurulum tamamlanır.
Kurulum tamamlandıktan sonra Connector ün kurulmuş olduğu cihazda servisinin çalıştırılması gerekmektedir. Connector ün kurulu olduğu cihazın tekrar başlatılması durumunda servisin otomatik çalışması için durumunun “Automatic” olması gerekmektedir.
Servis çalıştırıldıktan sonra ilgili connectorün “ARCSIGHT_HOME\current\logs\agent.out.wrapper.log” dosyası kontrol edildiğinde First Event from kısmında deviceProduct ve deviceVendor alanı görülür.
Hedef gösterilen ArcSight Logger üzerinde deviceVendor = “TEST” araması yapıldığında aşağıdaki şekilde görüntülenmektedir.
Logger v7 Öncesi sürümlerde maplenmiş alanları aşağıdaki gibi görüntülenebilir.
Logger v7 ve sonrası sürümlerde yeni gelen Search sekmesinde ise aşağıdaki gibi görüntülenebilir;
-