Tem 22

Bu makalenin amacı bir tür Saldırı Tespit Sistemi (Intrusion Detection System) olan Snort.2.8.6'nın Ubuntu-10.04-Desktop-i386 işletim sistemi üzerine kurulabilmesini sağlamaktır. Devamında yayınlanacak  olan ikinci dokümanda ise Snort'un daha performanslı çalışabilmesini sağlamak için Snort'un ürettiği ikazları okunabilir hale getiren Barnyard programının kurulum adımları anlatılacaktır. Ayrıca üretilen kayıtların (logs) MYSQL veritabanında saklanması ve bu kayıtların izlenmesinde kullanılan Basic Analysis and Security Engine'in (BASE) uygun şekilde yapılandırılmasından bahsedilecektir.

Snort'un Saldırı Tespit Sistemi (STS) olarak kullanıldığı durumlarda genellikle iki ağ arayüz kartı (Network Interface Card – NIC) kullanılır. Bu arayüzlerinden birisi ağı dinlemek için, diğeri ise Snort'a uzaktan erişip Snort'un yapılandırılmasında kullanılır. Ağı dinleyen arayüze genellikle IP adresi atanmaz ve bağlı olduğu anahtarın (switch) tüm portları bu arayüze aynalanır (mirroring). Bu yöntemle, anahtar üzerinden geçen tüm paketlerin Snort tarafından dinlenilmesi sağlanır. Fakat bu dökümanda Snort, test amaçlı kurulacağı için sadece bir arayüz kullanılacaktır. Bu arayüz üzerinden geçen paketler dinlenilecek ve Snort bu arayüz üzerinden yapılandırılacaktır.

Snort'un üzerine kurulacağı Ubuntu-10.04-Desktop-i386 adlı işletim sistemini  http://www.ubuntu.com/ adresinden indirebilirsiniz. Yazılım varsayılan ayarları ile kurulmuştur. İşletim sistemi dili olarak İngilizce seçilmiştir. Aşağıdaki adımlara geçmeden önce Ubuntu'nun tek bir ağ arayüz kartı ile kurulduğu varsayılmıştır. 

Dikkat! Kurulum esnasında talep edilecek kullanıcı adına "snort" haricinde başka bir kullanıcı adı verin. "snort" kullanıcı adı ile kuruluma devam ederseniz ileride paket kurulumları sırasında hata ile karşılaşacaksınız. Bu kılavuzun hazırlanmasında kullanıcı adı olarak "snortroot" kullanılmıştır. 

Snort'un kurulacağı ağ topolojisi aşağıda gösterilmiştir:

Snort Kurulumu İçin Gerekli Ön Paketlerin Kurulması

Snort'u indirip kurmadan önce, Snort'un ihtiyaç duyduğu bazı paketlerin indirilip kurulması gerekmektedir. Bunun için sırasıyla "Applications -> Accessories -> Terminal" yolundan bir Terminal (Komut Satırı) penceresi açılır.

Komut satırı açıldıktan sonra aşağıdaki komut çalıştırılır.

sudo apt-get install libpcap0.8-dev libmysqlclient15-dev mysql-client-5.1 mysql-server-5.1 bison flex apache2 php5 libapache2-mod-php5 php5-gd php5-mysql libtool libpcre3-dev php-pear vim ssh openssh-server

Bizden kurulum yaparken oluşturduğumuz yetkili kullanıcının şifresi istenecektir. Kullanıcı şifresi girilir ve kurulum işlemine geçilir. Kuracağımız dosyaların belirli bir boyutta olacağı belirtilir ve kuruluma devam edip etmek istemediğimiz sorulur. Gelen soruyu "y" ile yanıtlıyoruz ve paketler bizim için indirilip kurulmaya başlanıyor.

Kurulum işlemi MYSQL'in kurulumunu da içerdiği için kurulum aşamasında bizden veritabanı yöneticisi olan "root" kullanıcısı için şifre istenecektir. Karışıklığa neden olmamak için burada ve bundan sonraki tüm şifre gerektiren işlemlerde varsayılan "Test12345" şifresi kullanılacaktır. Şifre girilir ve kuruluma devam edilir.

Snort Ve Mysql Kurulumu

Bu adımda "snort-mysql" paketi kurulacaktır. Kuruluma başlamadan önce "ifconfig" komutu çalıştırılır ve bilgisayarda bulunan ağ arayüzleri ve bu arayüzler ile ilgili bilgiler listelenir. Dokümanın hazırlanmasında kullanılan sanal makinede yalnızca bir tane ağ arayüz kartı vardır ve bu arayüz "eth0" olarak adlandırılmıştır. Eğer sisteminizde birden fazla ağ arayüz kartınız olsaydı, bunlar da "eth1, eth2, ……., ethN" e kadar devam edecekti.  Bu aşamada Snort'un hangi arayüzü dinleyeceğine karar verilir ve sonraki adıma geçilir. Sonraki aşamalarda bizden dinlemek istediğimiz arayüzün adı sorulacaktır.

Artık "snort-mysql" paketi kurulmaya hazırdır. Aşağıdaki komut çalıştırılır ve gelen onaylama ekranına "y" girilir ve işleme devam edilir.

sudo apt-get install snort-mysql

Bu aşamada bizden dinlemek istediğimiz ağ arayüzü ve bu arayüzün IP adresi sorulacaktır. Bu alana yazdığımız bilgiler ilk aşamada çok önemli değildir. Bu ayarları daha sonra yapılandırma ayarlarından değiştireceğiz. Önemli olan "veritabanı yaratayım mı?" sorusuna "evet" cevabı ile devam edilmesidir. Gelen pencereleri onaylayarak kuruluma devam ediyoruz.

Kurulum sonunda alt paketlerin kurulumu ile ilgili bir hata alıyorsanız Ubuntu'yu kurarken oluşturduğunuz kullanıcı adının "snort" olup olmadığını kontrol edin. Eğer kullanıcı adını "snort" olarak tanımladıysanız, bu aşamada hata ile karşılaşırsınız. Başka bir kullanıcı adı ile kuruluma devam etmelisiniz.

Snort'un ürettiği kayıtları (log) yazacağı veritabanı yaratılmalıdır. Bunun için aşağıdaki adımlar sırası ile takip edilmelidir. Öncelikle aşağıdaki komut çalıştırılarak MYSQL yönetim durumu ekranına girilir.

mysql -u root -p

Komut çalıştırıldıktan sonra kurulum aşamasında belirlediğimiz "root" kullanıcısına ait şifre istenecektir. Belirlediğiniz şifre girilerek devam edilir. Biz varsayılan "Test12345" şifremizi girerek devam ediyoruz.

Doğru kullanıcı adı ve şifre ile oturum açıldıysa bizi aşağıdaki gibi bir oturum ekranı karşılar.

Şimdi ise Snort'un ürettiği kayıtları (log) kaydetmek için kullanacağı veritabanı yaratılır. Aşağıdaki komut ile "snort" isminde bir veritabanı oluşturulur. Hemen altındaki "grant" komutu ile az önce yaratılan "snort" veritabanı üzerinde tablo yaratma, veri ekleme, silme, güncelleme ve seçme hakları "snort" isimli kullanıcı için elde edilir. "SET PASSWORD" komutu ile de "snort" kullanıcısına belirlenen şifre atanır ve ardından "exit" komutu ile MYSQL oturumundan çıkılır. Biz varsayılan "Test12345" şifresini atadık, siz de kendi belirlediğiniz şifreyi atayabilirsiniz.

create database snort; 
grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to snort@localhost;
SET PASSWORD FOR snort@localhost=PASSWORD('Test12345');
exit

Ardından "cd" komutu ile önceden oluşturulmuş Snort'un kullanacağı veritabanı şemasının (schema) bulunduğu dizine gidilir. Bu şema "zcat" komutu ile MYSQL içerisinde bulunan "snort" veritabanına aktarılır.

cd /usr/share/doc/snort-mysql/
zcat create_mysql.gz | mysql -u root -p snort

Bu işlemi gerçekleştirebilmek için "root" kullanıcısı için oluşturulan şifre istenecektir. Şifre girilir ve işleme devam edilir.

Bu adımda "snort" veritabanın doğru şekilde kurulup kurulmadığını kontrol edilir. Bunun için önce MYSQL'e "root" kullanıcısı ile giriş yapılır ve kontrol için aşağıdaki komutlar çalıştırılır. MYSQL'e girerken "root" kullanıcısı için oluşturulan şifre istenecektir.

mysql -u root –p 
SHOW DATABASES;
use snort;
SHOW TABLES;

Şekil 14 – "snort" veritabanı tablolarının kontrolü

"exit" komutu ile MYSQL yönetim oturumundan çıkılır ve tekrar komut satırı ekranına dönülür. Şimdi ise "/etc/snort/" içerisinde bulunan "snort.conf" dosyası uygun şekilde düzenlenmelidir. "snort.conf" dosyası aşağıdaki komut kullanılarak "vi" ile açılır.

sudo vim /etc/snort/snort.conf

Yapılandırma dosyası üzerinde değişiklik yapabilmek için "vi" komutlarını hakkında bilgi sahibi olmanız gerekmektedir. "vi" hakkında herhangi bir bilgi sahibi değilseniz yapılandırma dosyasını "gedit" editörü ile grafiksel ortamda da düzenleyebilirsiniz.

Dosya içerisinde "var HOME_NET any" satırı bulunur ve satır başına "#" karakteri eklenerek yorum satırı haline getirilir. "vi" içerisinde arama ve değişiklikler yapabilme ile ilgili bilgileri http://www.linuxprogramlama.com/index.php?topic=48.0;wap2 adresinde bulabilirsiniz. Satırı yorum satırı haline getirdikten sonra altına "var HOME_NET $eth0_ADDRESS" satırı eklenir. "eth0" kullanılan arayüzün adıdır. "ifconfig" komutu bize arayüzler hakkında bilgi veren komutumuzdu. Siz de dinlemek istediğiniz arayüzün adını "ifconfig" komutu ile öğrendikten sonra "_ADDRESS" yazan kısmın önüne ekleyiniz.

#var HOME_NET any
var HOME_NET $eth0_ADDRESS

Bu defa "output log_tcpdump: tcpdump.log" satırı "snort.conf" dosyası içerisinde bulunur ve "#" karakteri ile yorum satırı haline getirilir.

#output log_tcpdump: tcpdump.log

Aynı şekilde "output log_unified" satırı bulunur ve bulunduğu satırın altına aşağıdaki satır eklenir. Burada "snort.log" Snort'un kayıtlarını kaydedeceği dosyanın ismini, "limit 128" alanı ise bu dosyanın MegaByte cinsinden alabileceği azami değeri belirtir.

output unified2: filename snort.log, limit 128

Yaptığımız değişikler kaydedilip çıkılır ve yapılandırma ayarlarını doğru şekilde gerçekleştirip gerçekleştiremediğimizi anlamak için Snort aşağıdaki komut satırı kullanılarak çalıştırılır. Burada "-c" parametresi ile hangi yapılandırma dosyasının kullanılacağı ve "-i" parametresi ile de hangi arayüzün dinlenileceği belirtilir.

sudo snort -c /etc/snort/snort.conf -i eth0

Eğer tüm adımları doğru tamamlamışsanız gördüğünüz ekran aşağıdaki gibi olmalıdır.

"ctrl+c" tuş birleşimi ile Snort durdurulur ve sonraki adımlar ile yapılandırma ayarlarına devam edilir.

Not: Base, Adodb'nin kurulması ve Barnyard'ın yapılandırmasından ikinci makalede bahsedilecektir.

Yazar ceyhun çamlı \\ tags: , , ,

Tem 20

Bu yazıda, daha önceki makalede anlatılan açık kaynak kodlu saldırı tespit sistemi Ossec(Open Source Host-based Intrusion Detection System)'in yapılandırılması üzerinde durulacaktır.

Ossec Dosya ve Dizinleri

Bir önceki makalede anlatılan ve /var/ossec  dizini altında gerçeklenen örnek kuruluma ait başlıca dosya ve dizinler şu şekilde sıralanabilir.

/var/ossec/bin                        –>     Ossec  binary dosyalarının bulunduğu dizin
/var/ossec/etc                        –>    Ossec yapılandırma dosyalarının bulunduğu dizin
/var/ossec/etc/ossec.conf        –>     Temel yapılandırma dosyası
/var/ossec/logs                      –>     Log dosyalarının bulunduğu dizin
/var/ossec/rules                     –>     Ossec kurallarının bulunduğu dizin

Temel yapılandırma dosyasının genel yapısı

Ossec'in temel yapılandırma ayarları /var/ossec/etc dizini altındaki ossec.conf  dosyasında yer alır. Bu dosyanın genel yapısı ve  kullanılan yapılandırma etiketleri aşağıdaki gibidir.

<ossec_config>
<global>…</global>    –>    Genel yapılandırma seçenekleri(sunucu ve yerel kurulumlarda)
<alerts>…<alerts>      –>    Email ve log uyarı seçenekleri
<email_alerts>…<email_alerts>    –> Ayrıntılı email uyarı seçenekleri    
<remote>…</remote>    –> Uzak bağlantı istemcileriyle ilgili yapılandırma ayarları (sunucu için) 
<database_output>…</database_output>    –> Veritabanı çıktısı seçenekleri
<rules>…</rules>    –> Geçerli kuralların listesi
<client>…</client>    –> İstemcilerle ilgili yapılandırma seçenekleri
<localfile>…</localfile>    –> Log dosyalarıyla ilgili  yapılandırma seçenekleri
<syscheck>…</syscheck>    –> Bütünlük testi(integrity checking) yapılandırma seçenekleri
<rootcheck>…</rootcheck>    –> Rootkit tespiti için yapılandırma seçenekleri
<command>…</command>    –> Aktif cevap yapılandırma seçenekleri
<active-response>…</active-response>    –> Aktif cevap için ek yapılandırma seçenekleri
</ossec_config>

 Log Kayıtlarının Yapılandırılması 

Log dosyalarının görüntülenmesi

Ossec, sistemde var olan log dosyalarının analizini yapar. Bazı log dosyaları Ossec tarafından otomatik olarak görülmeyebilir. Bu dosyaların görüntülenmesini sağlamak için <localfile> etiketi kullanılır.

<localfile>
<log_format>syslog</log_format>
<location>/var/log/messages</location>
</localfile>

Yukarıda görülen <log_format> etiketi log dosyasının türünü belirtmek için kullanılır. Log dosyalarının formatı olarak genellikle syslog kullanılır. Onun haricinde mysql_log, postgresql_log, apache gibi formatlar da kullanılabilir. Log dosyalarının bulunduğu yeri belirtmek için <location> etiketi kullanılır.

Log kayıtları için veritabanı yapılandırması

Ossec log kayıtlarının veritabanında tutulmasına imkan tanımaktadır. Kullanılmak istenen veritabanı Ossec kurulumundan önce sistemde kurulu olmalıdır. Kurulum esnasında veritabanı kullanılacağı belirtilmesi gerektiğinden, kurulum betiği install.shçalıştırılmadan önce aşağıdaki komutlar yürütülmelidir. 

# cd ossec-hids-1.4
# cd src; make setdb; cd ..
# ./install.sh

Kurulum sonrasında veritabanını etkin hale getirmek için ise şu komut yürütülür.

# /var/ossec/bin/ossec-control enable database

Temel yapılandırma dosyasındaki veritabanı yapılandırması da aşağıdaki gibi olacaktır.

<database_output>
   <hostname>192.168.20.22</hostname>    Veritabanının yer aldığı sunucu adresi
   <username>db_test</username>               Veritabanına ait kullanıcı adı
   <password>db_pass1</password>             Veritabanına ait kullanıcı şifresi
   <database>ossecdb</database>                Veritabanının adı
   <type>mysql</type>                                   Veritabanının türü
</database_output>

Email Yapılandırması

Ossec sunucusunun temel yapılandırma dosyasında <global> etiketi altında email gönderimi ile ilgili düzenlemeler yer alır. Örnek email yapılandırılması aşağıda gösterildiği gibidir.

<global>    
   <email_notification>yes</email_notification>    Mail gönderimi yapılıp yapılmayacağı
   <email_to> user1@test.com</email_to>            Mailin kimlere gönderileceği
   <email_to> user2@test.com</email_to>            Mailin kimlere gönderileceği
   <smtp_server>webmail.test.com</smtp_server>      Smtp sunucusu
   <email_from> ossec@test.com</email_from>             Mail gönderen
   <email_maxperhour>20</email_maxperhour>       Saatte en fazla ne kadar mail gönderileceği
</global>

Mail gönderme eşik derecesinin ayarlanması

Ossec sunucuları uyarılar karşısında bilgilendirme mailleri gönderir. Bu maili gönderirken yapılandırma dosyasındaki(/var/ossec/etc/ossec.conf) email_alert_level  değerini kontrol eder. Burada belirtilen değerin altındaki uyarılar için mail tetiklenme olayı gerçekleşmez. Aynı şekilde log kaydı tutulurken de log_alert_level değeri kontrol edilir ve bu değerin altındaki uyarılar için log kaydı tutulmaz. Değerler önem derecesine göre sıralanmış olup 0 (en önemsiz) ile 15 (en önemli) arasında değişiklik göstermektedir. Aşağıda örnekte sadece eşik değeri >=7 olan uyarılar için email gönderimi gerçekleştirilmekte, >=1 olanlar için ise log kaydı tutulmaktadır. Bu değerlerde değişiklik yapılması durumunda Ossec sunucusu yeniden başlatılmalıdır.

<alerts>
  <log_alert_level>1</log_alert_level>
  <email_alert_level>7</email_alert_level>
</alerts>

Not: Email gönderme eşik derecesi, log kaydı eşik derecesinden küçük olsa bile log kaydı eşik derecesinin altındaki uyarılar için mail gönderimi gerçekleşmeyecektir. 

Tüm uyarılar için log kaydı tutulması isteniyorsa yapılandırma dosyasında yapılacak değişiklik şu şekildedir.

<global>
  <logall>yes</logall>
</global>

Uzak İstemci Yapılandırması

Uzak istemci bağlantıları için Ossec sunucusunun yapılandırma dosyasında <remote> etiketi kullanılır. Bu istemcilerden gelen olaylar syslog yada secure ile sunucu bilgisayara iletilir.  Syslog ile yapılan olay bildirimleri TCP yada UDP aracılığıyla gerçekleşmekte olup iletilen mesajlar herhangi bir şifrelemeye tabi tutulmaz. Ancak secure ile bildirilen olaylar şifrelenerek sunucuya iletilir.

<remote>
   <connection>secure</connection>
   <allowed-ips>192.168.10.0/24</allowed-ips>
</remote>

Hangi istemcilerden gelen bağlantılara izin verileceğine de yukarıda görüldüğü üzere <allowed-ips> etiketiyle karar verilir.

Bütünlük Kontrolü Yapılandırması

Bir önceki makalede değinilen, Ossec sunucu ve istemcisinde yer alan bütünlük kontrolünün yapılandırması şu şekilde olacaktır.

<syscheck>
   <frequency>86400</frequency>    
   <directories check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
   <directories check_all="yes">/bin,/sbin</directories>
   <ignore>/etc/mtab</ignore>
   <ignore>/etc/mnttab</ignore>
</syscheck

Bütünlük kontrolünün hangi aralıklarla, kaç saniyede bir yapılacağını belirtmek için <fequency> etiketi kullanılmıştır.<directories> etiketi hangi dizinlerin hangi özelliklerde teste tabi tutulacağını gösterir. Bu etiketle kullanılan parametrelercheck_sum(dosyaların MD5/SHA1 toplamları kontrol edilir), check_size(dosyaların boyut değişiklikleri kontrol edilir),check_owner(dosyalarının ait oldukları kullanıcı değişklikleri kontrol edilir), check_group(dosyalarının ait oldukları grup değişiklikleri kontrol edilir), check_perm(dosyaların izin değişiklikleri kontrol edilir) ve check_all(diğer tüm parametreler de belirtilen kontroller yapılır) olarak sıralanabilir.

Bütünlük kontrolü yapılması istenmeyen dosyalar <ignore> etiketiyle belirtilir. İhmal edilmek istenen dosyalar örneğin apache ile başlıyorsa ^apache yazılır. Benzer şekilde sonu log olan dosyalar ihmal edilecekese .log, iki seçenek beraber kullanılacaksa da ^apache|.log şeklinde yazılır.

Ossec İstemci Yapılandırması

Ossec istemcisinin yapılandırma dosyasındaki <client> etiketi altında istemcinin ait olduğu sunucuyla ilgili bilgiler yer alır.

<client>
  <server-ip>192.168.20.20</server-ip>      
  <port>1519</port>
</client>

Sunucu IP adresiyle ifade edilebileceği gibi <server-hostname> etiketi kullanılarak alan adı ile de ifade edilebilir.

Ossec Kuralları

Ossec sunucusu başlatıldığında geçerli olacak olan kurallar, temel yapılandırma dosyasında <rules> etiketi altında belirtilir.

<rules>
  <include>rules_config.xml</include>
  <include>pam_rules.xml</include>
  <include>sshd_rules.xml</include>
</rules>

Yukarıda görüldüğü gibi xml dosyalarında tanımlanan kurallar <include> etiketi kullanılarak eklenir ve /var/ossec/rules dizini altında yer alır.

Ossec kurallarının asıl amacı, meydana gelen olaylar karşısında uygun uyarıların üretilmesini sağlamaktır. Olayların çözümlenmesi ve ardından da tanımlanan kurallarla eşleştirilmesi yapılır. Böylece kurallar çerçevesinde değerlendirilen olayların uygun formatta uyarılara dönüştürülmesi sağlanır.

Ossec Kuralı Yazma

Kullanıcı kuralları için ayrılan xml dosyası /var/ossec/rules dizini altındaki local_rules.xml dosyasıdır. Dosyadaki <group>etiketleri ve bunların altına yer alan <rule> etiketleri kullanılarak kural eklemeleri yapılır.

<group name="syslog,sshd,">
  <rule id="123" level="2">
    <decoded_as>sshd</decoded_as>
    <description>Logging every decoded sshd message</description>
  </rule>
  <rule id="124" level="7">
    <if_sid>123</if_sid>
    <match>^Failed password</match>
    <group>authentication_failure</group>
    <description>Failed SSHD password attempt</description>
  </rule>
  <rule id="125" level="3">
    <if_sid>123</if_sid>
    <match>^Accepted password</match>
    <group>authentication_success</group>
    <description>Successful SSHD password attempt</description>
  </rule>
</group>
 

Yukarıda tanımlanan üç tane kural görülmektedir.<group name="syslog,sshd,"> başlangıç etiketiyle bu gruptaki kurallarınsyslog ve sshd  ile ilgili kurallar olacağı belirtilir.123 numaralı kuralda yer alan <decoded_as> etiketiyle, meydana gelen olaylardan sadece sshd  olayı olarak çözümlenenlerin bu kurala tabi tutulması gerektiği belirtir. <description> etiketi de kuralla ilgili açıklama içerir ve bu kuralla eşleşen olaylar için üretilen uyarılarda bu açıklama yer alır. 

124 ve 125 numaralı kurallarda yer alan <if_sid> etiketi, bu iki kuralın 123 numaralı kurala ait çocuk kural olduklarını ve 123 numaralı kural uygulandıktan sonra uygulanabileceklerini belirtir. <match>^Failed password</match> etiketiyle, meydana gelen sshd  olaylarında Failed password kelime çiftinin geçip geçmediği kontrol edilir ve eğer geçiyorsa<description> etiketinde belirtilen açıklamalı uyarı üretilir. Kurallarda yer alan<group>authentication_failure</group> etiketi ile de uyarının hangi OSSEC HIDS grubuna ait olduğu belirtilir.

Yazar ceyhun çamlı \\ tags: , , ,

Tem 19

Bu makalede, açık kaynak kodlu saldırı tespit sistemlerinden biri olan Ossec(Open Source Host-based Intrusion Detection System) üzerinde durulacak olup; Ossec'in ne olduğu ve kurulumunun nasıl yapılacağı sorularına cevap aranacaktır.

OSSEC Nedir?

Linux, OpenBSD, FreeBSD, OSX, Solaris and Windows 2000/XP/2003/Vista işletim sistemine sahip bilgisayarlarda sorunsuz olarak kurulabilen Ossec, bilgisayarda yüklü uygulamaların çalışmalarını izler. Ayrıca veri paketlerine, servis ve kaynakları kullanan çağrılara ve diğer sistem faaliyetlerine bakarak kullanıcıları riskli durumlara karşı uyarır.

Bu sistemin temel çalışma mantığı "pro-aktif" tir. Yani sürekli yapılan faaliyetleri izleyerek belirli şartların sağlanması durumunda harekete geçer. Ossec, güvenliği sağlamak için birçok kontrol ve incelemelerde bulunur. Bunlardan bazıları şu şekilde sıralanabilir.

Log analizi (log analysis) : Log dosyalarını inceler ve saldırı belirtisi olarak görülen kayıtlar için uyarı üretir.

Bütünlük kontrolü (integrity checking) : Bütünlük kontrolü; sistemdeki dosyaların belirli periyotlarla kontrol edilmesidir. Her kontrolde, varolan dosyaların toplamından MD5 (Message-Digest algorithm 5) gibi şifreleme algortimalarıyla belirli bir şifre elde edilir. Dosyaların boyutları ve oluşturulma/değişiklik tarihleriyle beraber kaydedilen bu şifre, her kontrolde bir öncekiyle karşılaştırılarak dosyaların değişikliğe uğrayıp uğramadığı gözlemlenir.

Rootkit tespiti (root kit detection) : Rootkit, sistemdeki bazı süreçleri veya dosyaları gizlemek kaydıyla, işletim sisteminin gerçeği görmesini engellemek için geliştirilmiş olan yazılımlardır. Örneğin "ps" komutunun işlevini değiştirmek üzere yazılan bir rootkit ile kullanıcıların, süreçlerin tümünü görüntülemesine engel olunacaktır. Ossec, sistemde varolan rootkitlerin tespitini yaparak kullanıcıları uyarır.

Aktif cevap (active response) : Aktif cevap; belirli özel olaylar karşısında Ossec'in otomatik olarak komut çalıştırmasıdır. Örneğin mail sunucusuna yapılan bir atak güvenlik duvarını geçmiş dahi olsa Ossec, bu atağı farketmesi durumunda güvenlik duvarına  komut gönderip atağın oturumunun kapatılmasını isteyecektir.

OSSEC Sunucu ve İstemci Kurulumu

Sunucu ve istemci bilgisayarlara kurulumu yapılabilen OSSEC'in kurulum aşamaları şu sırayla yürütülmektedir.

Bilgisayarda gcc paketi yüklü değilse gcc paketi kurulmalıdır.

Kurulum /tmp dizininde gerçekleştirilecekse /tmp dizini noexec ile bağlanmamış olmalıdır.

OSSEC'in sunucu ve istemci için ayrı ayrı paketleri yoktur. Tek bir paketin kurulumu yapılır ancak kurulum esnasında sunucu için mi yoksa istemci için mi kurulduğuna dair yapılandırma yapılır.

Paketin indirilmesi ve kurulumun başlaması için komutlar şu sırayla çalıştırılır.  

# cd /tmp

# wget http://www.ossec.net/files/ossec-hids-2.4.1.tar.gz

# tar -zxvf ossec-hids-2.4.1.tar.gz

# cd ossec-hids-2.4.1

# ./install.sh

  • Kurulum sırasında aşağıdaki sorulara verilen cevaplara göre OSSEC'in yapılandırılması tamamlanmış olur.

1- What kind of installation do you want (server, agent, local or help)? server

    (Sunucu için kuruluyorsa server, istemci için kuruluyorsa agent yazılır.)

2- Choose where to install the OSSEC HIDS [/var/ossec]: /var/ossec

    (Kurulumun yapılacağı dizin belirtilir.)

  • 3. adımda konfigürasyon ayarları yapılır. Sunucu için 3.1.a adımı, istemci için 3.1.b adımı gerçeklenir.

3- Configuring the OSSEC HIDS.

   3.1.a- Do you want e-mail notification? (y/n) [y]: y

   - What's your e-mail address? mail@test.com

   - We found your SMTP server as: webmail.test.com

   - Do you want to use it? (y/n) [y]: y

     (E-mail adresine göre SMTP sunucusu belirlenir.)

   3.1.b- What's the IP Address of the OSSEC HIDS server?: 192.168.20.20

     (OSSEC sunucusunun IP adresi girilir.)

   3.2- Do you want to run the integrity check daemon? (y/n) [y]: y

     (Bütünlük kontrolünün olup olmayacağı belirtilir.)

   3.3- Do you want to run the rootkit detection engine? (y/n) [y]: y

     (Rootkit tespitinin yapılıp yapılmayacağı belirtilir.)

   3.4- Do you want to enable active response? (y/n) [y]: n

     (Aktif cevabın etkinleştirilip etkinleştirilmeyeceğine karar verilir. Mesela sunucu

     için aktif cevap, herhangi bir IP adresini bloke etmesine imkan tanır.)

   3.5- Do you want to enable the firewall-drop response? (y/n) [y]: y

     (3.5, 3.6, 3.7 adımları sadece sunucu kurulumunda vardır.)

   3.6- Do you want to add more IPs to the white list? (y/n)? [n]: n

     (Bu adım aktif cevap etkinleştirilirse sorulur.)

   3.7- Do you want to enable remote syslog (port 514 udp)? (y/n) [y]: n

     (Remote syslog'un etkinleştirilmesi syslog aracılığıyla alarm almaya imkan tanır.)

Ossec'in kurulumunun ardından servisi başlatmak ve durdurmak için aşağıdaki komut kullanılır. Ossec istemcisinde servis başlatılmadan önce istemci, Ossec sunucusuna eklenmelidir.

# /var/ossec/bin/ossec-control {stop|start}

Ossec'in servisinin sistem açılışında otomatik olarak başlaması isteniyorsa Pardus için /etc/conf.d/local.start dosyasının içerisine eklenecek komut şu şekildedir:

# /var/ossec/bin/ossec-control start

Ossec'in servisinin çalıştığını görüntülemek için aşağıdaki iki komut da kullanılabilir.

# ps -auwx | grep "ossec" | grep -v "grep"

# /var/ossec/bin/ossec-control status

OSSEC İstemcilerin Eklenmesi ve Anahtar Atanması

Ossec Sunucusu üzerinde yapılacak işlemler

Ossec sunucular üzerine istemci eklenmesi, çıkarılması, listelenmesi ve anahtar atanması gibi işlemlerde kullanılan komut aşağıdaki gibidir.

# /var/ossec/bin/manage_agents

 

Komut çalıştırıldığında yapılacak işlemlerin kısayolları kullanıcıya gösterilir.

(A)dd an agent (A).                      –> Yeni Ossec istemcisi ekleme

(E)xtract key for an agent (E).     –> Eklenmiş istemcilere anahtar oluşturma

(L)ist already added agents (L).   –> İstemcileri listeleme

(R)emove an agent (R).               –> İstemci kaldırma

(Q)uit.                                          –> Çıkış

İstemci eklemek için kullanılacak kısayol "A" tuşudur ve eklenme işlemi aşağıdaki gibi gerçeklenir. 

Choose your action: A,E,L,R or Q: A

* A name for the new agent: newagent

* The IP Address of the new agent: 192.168.20.21

* An ID for the new agent[001]

 

Kullanıcının istemci adını ve IP adresini girmesi sonucu istemciye bir ID numarası atanacaktır ve istemci sunucuya eklenmiş olacaktır.

Sunucuya eklenmiş olan istemciler için anahtar oluşturulmak istendiğinde kullanılacak olan kısayol "E" tuşudur. Bu tuşla, öncelikle var olan istemciler listelenir ve hangi istemci için anahtar üretilmek isteniyorsa o istemcinin ID numarasının girilmesi istenecektir.

Choose your action: A,E,L,R or Q: E

Available agents:

   ID: 001, Name: newagent, IP: 192.168.20.21

Provide the ID of the agent to extract the key (or '\q' to quit): 001

Agent key information for '001' is:   –> İlgili istemci için kullanılacak olan anahtar

MDAxIHdlYnNlbnNlIDE5Mi4xNjguNS4xNSBmNzE1MjBiZGQzMDM2MjczZjQyOTRjZGEzNWYw

YjU0MjExZTU0ZGZkYTA4N2E2Y2YxZDA2NDkwMWE4NTA5OTBj 

Ossec İstemcisi üzerinde yapılacak işlemler

Ossec sunucu servisi üzerinde ilgili istemci için gerekli anahtarın oluşturulmasının ardından Ossec istemcisi üzerinde, üretilen bu anahtar eklenmelidir. Bu işlem için yine Ossec sunucusunda kullanılan aşağıdaki komut yürütülür ve kısayol olarak "i" tuşu kullanılır.

Choose your action: I or Q: i

Paste it here (or '\q' to quit):   –> Ossec sunucusunda oluşturulan anahtar

MDAxIHdlYnNlbnNlIDE5Mi4xNjguNS4xNSBmNzE1MjBiZGQzMDM2MjczZjQyOTRjZGEzNWYw

YjU0MjExZ TU0ZGZkYTA4N 2E2Y2YxZDA2NDkwMWE4NTA5OTBj

Değişikliklerin etkin olabilmesi için Ossec sunucu ve istemcisi aşağıdaki komutla yeniden başlatılır.

# /var/ossec/bin/ossec-control restart

Ossec istemcinin, Ossec sunucusuna bağlanıp bağlanmadığı /var/ossec/logs/ossec.log dosyasına bakılarak gözlemlenebilir.

OSSEC Web Arayüzünün Kurulumu ve Yapılandırması

Web arayüzü için gerekli olan kaynak kod aşağıdaki gibi temin edilir. Sistemde Apache web sunucusu kurulu olmalıdır.

# cd   /var/www/localhost/htdocs   (Apache sunucusunun kurulu olduğu dizin)

#  wget http://www.ossec.net/files/ui/ossec-wui-0.3.tar.gz

# tar -zxvf ossec-wui-0.3.tar.gz

# mv ossec-wui-0.3 ossec

Web sunucusunu (Apache) kullanan kullanıcının Ossec grubuna üye olması gerektiğinden aşağıdaki komut yürütülür. Eğer Ossec chroot ile çalıştırılıyorsa kullanıcı ve grup bilgileri ona göre düzenlenmelidir.

# usermod -a -G ossec apache

Ardından gerekli sıkılaştırılmış izinler aşağıdaki gibi verilmelidir.

# chown -R root:ossec ossec

# chmod 550 ossec/

# cd ossec

# find . -type d | while read dir

 do

   chown root:ossec $dir

   chmod 550 $dir

 done

# find . -type f | while read dir

 do

   chown root:ossec $dir

   chmod 440 $dir

 done

Yapılan değişikliklerin etkin olabilmesi için Apache sunucusu aşağıdaki komutla yeniden başlatılır ve ardından Ossec web arayüzüne http://localhost/ossec/ adresinden erişim sağlanabilir.

#  service apache restart

Sonuç

 

Bu makalede anlatılan ve genellikle GNU/Linux, BSD türevleri, Solaris, AIX gibi Unix türevi işletim sistemleri üzerinde tercih edilen Ossec, rootkit belirleme, sistem bütünlüğünü izleme, sunucu günlük kayıtlarını (log) izleyerek saldırı durumlarını tespit edip uyarı üretme ve otomatik olarak kullanıcı veya IP temelli engelleme yapmak gibi özellikleri ile rakiplerinden bir adım öne çıkmaktadır. Açık kaynak kodlu olması ve genel kamu lisansıyla dağıtılması sebebiyle de  saldırı tespit sistemleri arasında en çok tercih edilenler arasında yer almaktadır. Ancak tüm bunlara rağmen Ossec'i önemli kılan, yapılandırma ayarlarının doğru gerçeklenmesidir. Uygun yapılandırılmadığı taktirde sistem güvenliğine hiçbir faydası olmayabilir. Bu sebepten dolayı Ossec'in yapılandırılması bir sonraki makalede ayrıca ele alınacaktır.

Kaynaklar

Ossec homepage - www.ossec.net

OSSEC Hosed-Based Intrusion Detection Guide, Andrew Hay, Daniel Cid, Rory Bray - http://books.google.com.tr/

Yazar ceyhun çamlı \\ tags: , ,

Tem 13

Sistem kaynaklarının izlenmesi ve elde edilen verilerin yorumlanması sisteminizi verimli kullanımını ve sorunlarını analiz edilebilmesi açısından önemlidir.RED HAT işletim sistemi üzerinde kullanabileceğiniz bir çok kaynak izleme aracı vardır, ben de bu makalede red hat' e özgü ve oldukça kullanışlı olan aşağıdaki araçları anlatacağım.

  • Free
  • Top
  • Vmstat
  • free

Mem: satırında fiziksel memory kullanımını gösterir.

-/+ buffers/cache:fiziksel olarak sistem buffer' ı için ayrılmış fiziksel hafızayı gösterir,

Swap:Sistemin swap alanını kullanımını gösterir,aşağıda benim kullandığım iş istasyonunda bu komutun çıktısını görüyoruz.

Sisteminizdeki memory kullanımını 2 saniyede bir görmek için aşağıdaki komutu kullanabilirsiniz.

#watch free

aşağıdaki free komutunu 5 saniyede bir çalıştırıp bir öncekiyle farkını göstererek ekranda gösterir.

#watch -n 5 -d free

top

bu komut sisteminiz de yaşanan bir problemde ilk çalıştırmanız gereken komuttur. Free komutu sadece memory bilgisine ulaşabilirken bu komutla tüm sistem kaynaklarıyla (CPU kullanımı, Memory kullanımı,işlem istatistiği …) ilgili az da olsa bilgi alabilirsiniz.

Aşağıda top komutunun çıktısını görüyorsunuz, komut 3 saniyede bir o anki bilgileri gösterir, komuttan çıkmak için "q" tuşuna basmanız yeterli olacaktır.

#top

Bu çıktıyı şu şekil yorumlayabiliriz;

top – 15:11:41 //top komutunu çalıştırdığınız zamanı gösterir.

8 min //8 min (dakika) süresince açık olduğu

2 users //Kaç kullanıcının sisteme bağlı olduğunu gösterir fakat bu kullanıcı sayısına güvenilmemesi gerekir bir kullanıcı birden fazla terminal ile çalışıyorsa açık olan her terminali bir kullanıcı olarak gösterir.

Load average: kullanım ortalaması

Tasks: Toplam görev, çalışan, bekleyen, durmuş ve kullanılmayan görev sayılarını gösterir,

Mem:  49450540k total,  2524984k used, 46925556k free,   115200k buffers

Swap:  8191992k total,        0k used,  8191992k free,  1361704k cached bu kısım free komutuna benzer.

Aşağıda geri kalan bilgiler bulunuyor:

  • PID process ID
  • USER kullanıcı
  • PR Priority(Öncelik)
  • NI   Nice Value(Öncelik değeri)
  • VIRT   Virtual memory kullanımı
  • RES    Fiziksel memory kullanımı
  • SHR Shared memory size
  • %CPU CPU kullanımı
  • %MEM    Memory kullanımı
  • TIME+   CPU kullanım zamanı
  • COMMAND çalışan komut

#top -u kullanıcı_ismi //kullanıcı bazında top komutunu çalıştırmak için kullanılır.

Vmstat : Sistem hakkında özet bir bilgi sunar.

Umarım yararlı olmuştur.

Yazar ceyhun çamlı \\ tags: , , , ,

Tem 12

RPM ile paketleriniz yönetebilirsiniz bu konuyu RPM Nedir-Nasıl kullanılır? konusunda incelemiştik, fakat bir paketin yüklenmesi için gereken dependencies (bağımlılıklar) çözme yeteneği rpm'de olmadığından çoğu durumda kullanışlı değildir, bunun önüne geçebilmek için YUM (Yellowdog Updater Modified) adında bir paket yönetim aracı DUKE Üniversitesi tarafından geliştirilmiştir. YUM'un rpm den en büyük farkı bir paketin ihtiyaç duyduğu diğer paketleride kurabilir vebununla birlikte birden fazla repository üzerinde arama yapabilir,

Yum'dan önce genellikle up2date kullanılırdı.Paket yönetimi konusundaki tüm gelişmeler yum için yapılmaktadır.

Yum Komutları

yum komutları "yum <komut> <paket_ismi/isimleri>" şeklinde kullanılmaktadır,

aşağıda bazı yum komutları bulunuyor, daha geniş bilgi için "man yum" yardımını inceleyebilirsiniz,

yum install <paket_ismi/isimleri> //peket ya da paketler kurulur,

yum update <paket_ismi/isimleri> //paket_ismi girilmezse yüklü tüm paketler update edilir,

yum –obsolotes <paket_ismi/isimleri> //eski kalmış ismi girilen paket ya da paketleri günceller,

yum check-update //sistemimizde yüklü olan ve yeni versiyonu bulunan paketleri listeler,

yum remove <paket_ismi/isimleri> //paket ya da paketleri siler,

yum provides <dosya_ismi> //belirtilen dosyanın hangi paket tarafından yüklendiğini belirtir,

yum search <aranacak_kelime> //kullanılan repository lerde aranan kelimenin geçtiği paketleri listeler,

yum localinstall <paketin_bulunduğu_yer> //local de bulunan paketi yüklemek için kullanılır,

Yum Opsiyonları

yum opsiyonları "yum <opsiyonlar> <komut> <paket_ismi/isimleri>" şeklinde kullanılmaktadır,

aşağıda bazı yum opsiyonları bulunuyor, daha geniş bilgi için "man yum" yardımını inceleyebilirsiniz,

-y // işlemdeki tüm sorulara otomatik olarak yes cevabını verir,

-t // hatalar göz ardı edilir,

Yazar ceyhun çamlı \\ tags: , , , ,