HP Yazılım Zirvesi - İstanbul 20 May 2015 - Wyndham Grand Levent Erdem Alaşehir / Finansbank Güvenlik Olay Korelasyonunda Büyük Veri Kullanımı
Ajanda Mevcut Durum Vertica ile Çözüm Analiz
Mevcut Durum Loga nerelerde ihtiyacımız var? Gerçek zamanlı, akıllı güvenlik kuralları (korelasyon) Uyumluluk ve teftiş talepleri (BDDK, 5651, SOX, NBG; zaman damgası vurma, değişmezliğini garanti etme vs) Düzenli veya anlık raporlama Uzun süreli profilleme, «baseline» belirleme
Mevcut Durum İhtiyacı nasıl karşılıyoruz? Gerçek zamanlı, akıllı güvenlik kuralları (korelasyon) ArcSight ESM, DB Firewall Uyumluluk ve teftiş talepleri (BDDK, 5651, SOX, NBG; zaman damgası vurma, değişmezliğini garanti etme vs) ArcSight Logger, DB Firewall Düzenli veya anlık raporlama ArcSight Logger, DB Firewall Uzun süreli profilleme, «baseline» belirleme -
Mevcut Durum Çözüm kalitesi Gerçek zamanlı, akıllı güvenlik kuralları (SOC) ArcSight ESM, DB Firewall Başarılı Uyumluluk ve teftiş talepleri (BDDK, 5651, SOX, NBG; zaman damgası vurma, değişmezliğini garanti etme vs) ArcSight Logger, DB Firewall Başarılı Düzenli veya anlık raporlama ArcSight Logger, DB Firewall Sorunlu (uzun süreli, çok eskiye dayanan, indeks ihtiyacı olan raporlar) Uzun süreli profilleme, «baseline» belirleme - Yapılmıyor
Mevcut Durum 2014-2015 ArcSight (Fraud hariç) DB Firewall Çalışan kutu sayısı 2 11 Log gönderen farklı cihaz tipi 38 (İşletim sistemleri, güvenlik/network cihazları, veritabanları, uygulamalar vs) 2 (MS SQL, Oracle) Log gönderen tekil cihaz sayısı ~15000+ 75 Toplanan log büyüklüğü (Filtre ve Aggregation ile) ~60 GB / gün 130+Mn satır / gün (sıkıştırılmamış) ~15 GB / gün 25+Mn satır / gün (sıkıştırılmamış) Canlı veri süresi ESM 90 gün / Logger 1 yıl 1-4 hafta Toplam SAN alanı ESM 4 TB / Logger 4 TB 6TB
Mevcut Durum ArcSight ESM ile SOC yapısı 100 ün üzerinde kural ("real-time rule") 20 den fazla liste ("active list") 2. / 3. seviye korelasyonlar Şüpheli IP / kullanıcı yapısı Önceki pentest / tatbikat çalışmalarından öğrenilen sızma tekniklerinin senaryolaştırılması 8x5 izleme E-posta ile takip Altyapı ekiplerine otomatik problem kaydı açma Örnek bir senaryo: Potansiyel Zombi PC Eğer, içeride bir PC potansiyel zararlı alan adına DNS sorgusu yaparsa (IPS/IDS izleri), Ve, aynı PC sonraki 24 saat içinde internete 1024 ten büyük TCP portlarından çıkmaya çalışıyorsa (FW izleri), Ve/veya, sonraki 1 hafta içerisinde aynı PC mesai saatleri dışında internet istekleri yapıyorsa (Proxy/FW izleri), O zaman yardım masası ekibine problem kaydı aç ve PC yi yeniden kurdurt
Vertica ile Çözüm Altyapı
Vertica ile Çözüm Vertica için kullanılan sunucu özellikleri: HP G7 (2x8 core CPU, 32 GB RAM, 10000 RPM - 1 TB ucuz SAN disk) Toplu yazma hızı: 200 MB, 318.000 satırlık dosyayı 13 saniyede yazıyor. (Network üzerinden kopyalama süresi dahil) Raporlama hızı: Örnek bir günde alınan 35 adet günlük rapor için: Toplam 11.380.991 satır, 3413 MB csv dosyası 14 dakika+20 saniyede çıktı Sorgu hızı: Yaklaşık 1 milyar satır, sıkıştırılmış 24 GB lık tabloda: select * from database_cef where devicecustomstring1 like '%KARTNO%' order by endtime desc; Çıktı süresi: 29 saniye
Vertica ile Çözüm Örnek analiz 1: Son 60 günde tüm DB lerde en çok log üretmiş olan kullanıcı hangi sunucuya hangi tipte sorgular attı? (sadece 100 satırdan daha fazla kaydı etkileyen sorgular sayılacak) SELECT destinationusername as KullaniciAdi,destinationAddress as HedefSunucu, case when LOWER(deviceCustomString2) like 'select%' then 'Select' when LOWER(deviceCustomString2) like 'update%' then 'Update' when LOWER(deviceCustomString2) like 'insert%' then 'Insert' when LOWER(deviceCustomString2) like 'delete%' then 'Delete' when LOWER(deviceCustomString2) like 'alter%' then 'Alter' when LOWER(deviceCustomString2) like 'exec%' then 'Exec' else 'Diger' end as IslemTipi, count(*) as Adet from database_cef where endtime between current_date-60 and current_date and (devicecustomnumber1>100 or devicecustomnumber3>100) and destinationusername= ( SELECT destinationusername from database_cef where deviceproduct!='arcsight' and deviceeventcategory not like '%Login%' and LOWER(destinationUserName) like 'finans%' and endtime between current_date-60 and current_date group by destinationusername order by count(endtime)desc limit 1 ) group by destinationusername,destinationaddress,islemtipi order by count(*) desc limit 200; Sorgunun çalışma süresi: 40-45 saniye (yaklaşık 1 milyar satır)
Vertica ile Çözüm Örnek analiz 2: Son 45 günde tüm kullanıcıların mesai içi, mesai dışı, gece zamanlarında VPN bağlantı adetleri nedir? SELECT count(eventid) as BaglantiAdedi,sourceUserName as KullaniciAdi,sourceProcessName as KullaniciGrubu, case when EXTRACT(hour FROM endtime) between 7 and 16 then 'Mesai Ici' when EXTRACT(hour FROM endtime) between 17 and 23 then 'Mesai Disi' else 'Gece' end as Zaman from security_csv where endtime between current_date-45 and current_date and deviceproduct like %VPN' and LOWER(name)='login' and sourceusername not like 'anonymous%' group by sourceusername,sourceprocessname,zaman order by sourceusername,zaman limit 200; Sorgunun çalışma süresi: 25-30 saniye (1 milyar+ satır)
Vertica ile Çözüm Sıkıştırma miktarı: Database logları tablosu Ham log ortalama kayıt büyüklüğü: 323 byte Vertica tablosunda ortalama satır büyüklüğü: 26 byte Sıkıştırma oranı: ~12,5 kat (%92) Güvenlik loglarının tablosu: Ham log ortalama kayıt büyüklüğü: 554 byte Vertica tablosunda ortalama satır büyüklüğü: 80 byte Sıkıştırma oranı: ~7 kat (%86) Güvenlik tablosuna tüm web sunucular ve proxy logları da atılıyor.
Vertica ile Çözüm Verticaya veriyi nasıl atıyoruz? Bash script ile: Çok kolay ve çok hızlı cat $file vsql -h vrtprddb01 -U dbadmin -c "copy secesm_csv from STDIN parser fdelimitedparser(delimiter=' ');" vsql -h vrtprddb01 -U dbadmin -c "copy security_csv from LOCAL /path/to/file.csv parser fdelimitedparser(delimiter=' ') rejected data '/rejected/rows/path.csv' exceptions '/exception/file/path.log';" Python ile: Gene çok hızlı, kopyalamadan önce dosya üzerinde metin işleme işlemleri de yapabilirsiniz import pyodbc VRT=pyodbc.connect("DSN=vertica") cursor=vrt.cursor() QUERY= " copy security_csv from local. " cursor.execute(query)
Analiz Vertica nın sağladığı avantajlar Ham logu sıkıştırarak saklıyor (columnar database) Minimal bakım/dba ihtiyacı İndex tutmuyor. Onun yerine «projection» kullanıyor. İndex için ek disk ihtiyacı yok Toplu data aktarım hızı çok yüksek (COPY ile büyük dosyaları içeri atma) Sorgudaki «where» cümlesini satır satır değil kolon bazlı arıyor Doğrudan ANSI SQL sorgu atılabiliyor Flex tablo oluşturulabiliyor. Semi-structured veriyi tabloya yazıp sorgulayabiliyor Geri planda Hadoop a bağlanabiliyor ArcSight ile entegre çalışabiliyor (CEF/CSV parser) HA, dev, test ortamları için ekstra lisans ihtiyacı yok
Analiz Vertica nın dezavantajları Bir analiz uygulaması değil, bir veritabanı. Analizi siz yapmalısınız Tekli insert/update işlemlerinde diğer veritabanlarına göre çok büyük hız farkı yok Disk hızına bağlı performans (kaliteli disk ihtiyacı) Yedeklilik ihtiyacı
Teşekkürler Erdem Alaşehir erdem.alasehir@ibtech.com.tr