OSSEC ile sunucu güvenliği

OSSEC sunucu-tabanlı bir saldırı tespit sistemi (HIDS) çözümüdür. Klasik IDS'lerdeki gibi ağ trafiği üzerinden değil, bizzat sisteminiz üzerinde gerçekleşen faaliyetlerden hareketle sisteminize bir sızma girişimi olup olmadığını tespit eder. Bunu yaparken başlıca veri kaynağı sisteminizde tutulan log'lardır.

Silvrback blog image

Örnek vermek gerekirse, web uygulamanız üzerinde farkında olmadığınız bir LFI/RFI açıklığı olsun. Dışardaki bir saldırgan /var/www altına bir shell atmaya kalkar veya elde ettiği shell ile sistem üzerinde yeni bir kullanıcı oluşturmaya kalkarsa OSSEC bunu çeşitli noktalarda yakalayabilir. İsterseniz ilgili kuralı yazarak ' /var/www altındaki tüm dosya değişikliklerini izle, bana haber ver' diyebilirsiniz, isterseniz varsayılan tuttuğu kullanıcı değişiklik log'larından bunu öğrenebilirsiniz

OSSEC'in farklı kurulum şekilleri olsa da en çok tercih edilen yöntem merkezi bir OSSEC sunucu ve izlenecek sistemlere kurulan local ajan yazılımların kullanılması şeklindedir. Ajan yazılımlar logları merkeze sunucuya yollayarak alert oluşturacak durumlarda bildirimlerin yapılmasını sağlar.

OSSEC pek çok log tipini gerek ayrıştırıp anlamlandırma, gerek bunlardan uyarılar oluşturma anlamında desteklemektedir. İçinde bu şekilde yaklaşık 400'e yakın kural tanımlı gelir. İsterseniz dahili XML yapısını ve regex ifadelerini kullanarak kendi kurallarınızı da oluşturabilirsiniz. (Çoğu zaman buna ihtiyacınız dahi olmaz çünkü OSSEC'te zaten vardır bunlar)

Örneğin 111 numaralı ve önceliği 5 olan bir SSH kuralı yazalım. Kural tüm sshd trafiğini log'lasın.

<rule id = "111" level = "5">  
<decoded_as>sshd</decoded_as>  
<description>Tum sshd kayitlari loglaniyor</description>  
</rule>  

İstersen bu kuralın altına şu şekilde devam edip daha detaylı bir anlamlandırma da yapabiliriz.

<rule id=”122” level=”7”>  
<if_sid>111</if_sid>  
<match>^Failed password</match>  
<description>Hatali sifre denemesi</description>  
</rule>  

Üstteki kural OSSEC decoder'larca parse edilip çözülen trafikte sshd uygulamasina ait olanları arar. Alttaki kural ise üstteki kurala hit eden tüm loglardan içinde 'Failed password' ifadesi geçen kayıtları alır ve önceliği 7 olarak log'lar. Bu sayede örneğin OSSEC global konfigürasyon dosyasında 5 ve üzerine alert üret dediğinizde bu loglardan alarmlar üretebilirsiniz.

Kuralımıza devam edersek;

<rule id=”133” level=”13”>  
<if_sid>122</if_sid>  
<hostname>^mainserver</hostname>  
<srcip>!192.168.2.0/24</srcip>  
<description>Ana sunucuya hatalı erisim talebi gerceklesti!!!</description>  
</rule>  

Bu sefer de kural 122'ye hit eden (ön şartı 111'e hit etmesiydi hatırlayın) tüm trafikten kaynak ip'si 192.168.2.0/24 subnet'i olmayanlar ve host-adı mainserver olanları loglar ve önceliğini 13 olarak işaretler.

İleriki yazılarda başta logları izleme ve grafiğe dökme, active response ve yeni decoder'lar yazmak olmak üzere diğer başlıklar üzerinde de duracağız.

Şimdilik iyi çalışmalar.

Furkan ÇALIŞKAN

Read more posts by this author.