Hazırlayan

:Yusuf UZUNAY

 

  yuzunay@yahoo.com                                                                                     

Tarih

: 05.07.2003

Kategori                  

: Bilişim Güvenliği  - Saldırı Tespit Sistemleri                                              

Konu              

: FreeBSD’de Snort’un Mysql , ACID ve Webmin Destekli Kurulumu    

 

İÇİNDEKİLER :

 

 

 

İÇİNDEKİLER : 1

LİSANS. 2

1 SALDIRI TESPİT SİSTEMİ NEDİR ?. 2

2 SNORT NEDİR ?. 3

2.1 SNORT’UN ÖZELLİKLERİ : 3

3 KURULUMA GİRİŞ : 3

4 FREEBSD PORT GÜNCELLEME : 3

5 KURULUMLAR : 4

5.1 Php , apache ve mysql kurulumları : 4

5.2 phplot  KURULUMU : 5

5.3 Snort KURULUMU : 5

5.4 Acid KURULUMU : 5

6 AYARLAR: 6

6.1 Snort Ayarları : 6

6.2 Apache Ayarları : 6

6.3 Acid Ayarları : 6

6.4 MYSQL AYARLARI: 7

7 SNORT SCRIPT ‘i : 8

8 ACID’İN İLK AÇILIŞ AYARLARI : 9

9 SALDIRI TESPİT SİSTEMİNİN WEBMİN İLE YÖNETİMİ : 10

9.1 WEBMİN KURULUMU : 10

9.2 WEBMIN KURULUM AYARLARINI DEĞİŞTİRMEK : 11

9.3 WEBMIN’E SALDIRI TESPIT SISTEMI MODULU EKLENMESI : 11

9.4 WEBMIN’de KURAL YONETIMI : 13

10 KAYNAKLAR.. 14

 


 

LİSANS

Bu döküman Yusuf Uzunay tarafından yazılmıştır. Network tabanlı bir saldırı tespit sistemi olan snort’un, FreeBSD platformunda  acid , php , mysql ve webmin destekli kurulumunu anlatmaktadır. Bu döküman , parça parça ya da tamamen herhangi bir şekilde, yazarın izni olmadan çoğaltılamaz.

Yazar, bu dökümanı okuyanların uğrayacakları herhangi bir zarardan ötürü sorumluluk kabul etmez.

 

1 SALDIRI TESPİT SİSTEMİ NEDİR ?

 

Sisteme değişik amaçlarla dışarıdan sızan veya sızmaya çalışan saldırganları ve sistem kaynaklarını uygunsuz ya da yetkilerini aşan biçimde kullanan kullanıcıları tespit etmeyi amaçlayan sistemlerdir.

 

Ağ bazındaki saldırıları tespit eden sistemlere Ağ Tabanlı Saldırı Tespit Sistemleri(Network Based Intrusion Detection Systems - NIDS), tek bir bilgisayar sistemine yapılan saldırıları tespit eden sistemlere ise Bilgisayar Tabanlı Saldırı Tespit Sistemleri (Host Based Intrusion Systems - HIDS) denir.

 

Saldırı tespit sistemleri çalışma mantığına göre ikiye ayrılır;

·         Anormallik Tespiti

·         Kötüye Kullanım Tespiti

 

Anormallik Tespiti Modeli :

Anormallik tespiti modeline göre çalışan bir saldırı tespit sisteminde, saldırılar önceden sisteme tanıtılmamıştır. Normal ve anormal davranış mantığına göre çalışır. Öncelikle normal koşullar altında belirli bir süre çalıştırılması gerekir. Bu devre, saldırı tespit sisteminin normal davranış olarak tanımlanan kuralları oluşturup, hafızasına alma evresidir. Bu evreden sonra saldırı tespit sistemi  normal olarak çalıştırıldığında, kendi hafızasına işlediği normal kavramı dışında bir iletişim gerçekleşirse, anormal bir davranış oldu diye alarm verecektir. Günümüzde bu model çok sayıda yanlış alarm ürettiği ve normal davranış tanımlama evresinin çok zahmetli ve yeteri kadar saf olmaması gerekçesiyle fazla  tercih edilmemektedir.

 

Kötüye Kulanım Tespiti Modeli :

Bu modelde saldırılar önceden sisteme tanıtılmıştır. Kötüye kullanım tespiti modelinde çalışan bir saldırı tespit sistemi, devamlı olarak akan ip trafiğini dinler ve paketleri kendi elinde tanımlanmış saldırı kuralları ile karşılaştırır. Eğer aksi bir durum meydana gelirse alarm üretir. Tabiki saldırı kurallarının da devamlı olarak takip edilip güncellenmesi gerekir.

 

 

 

2 SNORT NEDİR ?

 

Snort , 1990’ların sonunda bilişim güvenliği sektöründe çalışan bir yazılım mühendisi olan Martin Roesch tarafından kendi evindeki ağına yönelik saldırıları tespit edebilmek amacı ile geliştirilen bir saldırı tespit sistemidir.

 

2.1 SNORT’UN ÖZELLİKLERİ :

 

Ø      Kaynak kodu ile birlikte dağıtılan ve kısa sürede son derece

popüler olan Snort yazılımının etrafında çok sayıda geliştirici

toplanmış ve yazılımın bugün endüstrideki ticari alternatifleri

il kıyaslanabilir bir noktaya ulaşmıştır.

Ø      Yazılımın artan işlevselliği ve becerileri nedeniyle pek çok

firma Snort temelli ticari IDS çözümleri geliştirmekte ve

satmaktadır

Ø      Snort günümüzde çok sayıda büyük kuruluş tarafından tercih

edilen bir NIDS sistemi haline gelmiştir. Pek çok ülkede ordular,

kamu kuruluşları ve özel sektör firmaları Snort’u yoğun bir biçimde

kullanmaktadır.

Ø      Ağ temelli ve kötüye kullanım tespiti modelinde çalışır

Ø      Yazılım genişletilebilir bir mimariye sahiptir. Spesifik denetim

kriterleri tanımlamak, ve çıkış işleyicileri ile de yeni alarm raporlama

mekanizmalarını sisteme eklemek mümkündür

 

3 KURULUMA GİRİŞ :

 

Snort’u mysql ve ACID ile birlikte çalıştırabilmek için öncelikle apache’yi php ve mysql destekli olarak kurmamız gerekiyor.

 

Kurulumlara Başlamadan önce programların en son versiyonlarını kurabilmek için port güncellemesi yapabiliriz. Ama bu oldukça zaman alacak bir iştir. Yine de nasıl yapılacağına göz atalım:

 

 

4 FREEBSD PORT GÜNCELLEME :

 

·        #cd /usr/ports/net/cvsupit

·        #make install clean

 

Bundan sonra hangi branc’ı istediğimizi seçmek için bir pencere geldiğinde “current” anlamına gelen “.” seçiyoruz.  Diğer sorduğu sorulara da cevap verdikten sonra CVS’yi şimdi mi çalıştırayım mı sorusuna “No” diyoruz. Daha sonra /etc dizinine girip cvsupfile dosyasındaki src-all olan satırı comment out yapıyoruz.

 

Şimdi portlarımızı güncelleyebiliriz.

·  #rehash

·  #cvsup –g –L 2 /etc/cvsupfile

 

Bu yapılanlar ilk defa portları güncelleyeceğimiz zaman yapılıyor. Daha sonraki port güncellemelerinde sadece cvsup ile başlayan satırı vermemiz yeterli.

 

Şimdi gece saat 1’de portları güncellemesi için bir script yazalım:

 

·        #touch /usr/local/sbin/cvsup.sh

·        #chmod 755 /usr/local/sbin/cvsup.sh

 

*************** cvsup.sh Dosyası **************************

#!/bin/sh

/usr/local/bin/cvsup –g –L 2 /usr/local/sbin/cvsup.sh

 

********************************************************

 

Şimdi /etc/crontab dosyasını ayarlayalım ;

0          1          *          *          *          root      /usr/local/sbin/cvsup.sh

 

Evet böylelikle her gece saat bir de sistemimiz port güncellemesi yapacak. Tabiki bu isteğe bağlı siz eğer daha uzun bir sürede güncelleme istiyorsanız crontab dosyasını isteğe bağlı olarak değiştirebilirsiniz.

 

5 KURULUMLAR :

 

5.1 Php , apache ve mysql kurulumları :

 

·        Mysql Kurulumu

o       cd /usr/ports/databases/mysql323-server/

o       make install

 

·        Php Kurulumu

o       cd /usr/ports/www/mod_php4/

o       make install all

NOT : Seçim Ekranı çıkarsa GD2’yi seçiyoruz. Yoksa Acid’de grafikleri görüntülerken şu uyarı mesajını veriyor.

PHP ERROR: PHP build incomplete: the prerequisite GD support required to generate graphs was not built into PHP. Please recompile PHP with the necessary library (--with-gd)

 

 

Mysql Root Şifresi Verilmesi :

·        mysqladmin -u root   password 'mysql123'

 

Mysql’de Diğer İşlemler :

- /usr/local/mysql-xxx/bin/mysqld_safe --user=mysql &

- /usr/local/mysql-xxx/bin/mysqladmin -u root   password 'mysql123'

- /usr/local/mysql-xxx/bin/mysqladmin -u root -h `hostname` password 'mysql123'

- /usr/local/mysql-xxx/bin/mysqladmin -p version

- /usr/local/mysql-xxx/bin/mysqladmin -p variables

- /usr/local/mysql-xxx/bin/mysqladmin -p shutdown

 

5.2 phplot  KURULUMU :

 

·        cd /usr/ports/graphics/phplot

·        make WITH_X11=yes

NOT: phplot konfigürasyon menüsü çıkarsa karşınıza GD 2’yi seç ve Ok’le.

·        Make install clean

 

5.3 Snort KURULUMU :

 

·        cd /usr/ports/security/snort

·        make -DWITH_MYSQL -DWITH_FLEXRESP

·        make install

·        cp /usr/local/security/snort/work/snort-1.9.0/contrib/create_mysql  /tmp

 

NOT: Yukarıdaki –DWITH in önündeki çizgi tek çizgi. Bu önemli yoksa snort mysql’e loglayamaz.

 

5.4 Acid KURULUMU :

 

·        cd /usr/ports/security/acid

·        make install clean

 

Snortman isminde bir Kullanıcı Oluşturulması:

(passworddu da “snortman” olarak veriyorum. Diger ayarları da bu passworda göre yapacağım)

#adduser

Enter username [^[a- z0-9_][a-z0-9_-]*$]: snortman

Enter full name [ ]:

Enter shell csh date no sh tcsh [csh]: no

Enter home directory (full path) [/home/snortman]:

Uid [1000]:

Enter login class: default [ ]:

Login group snortman [snortman]:

Login group is ``snortman''. Invite snortman into other groups: guest no

[no]:

Enter password [ ]:

Enter password again [ ]:

 

6 AYARLAR:

 

6.1 Snort Ayarları :

 

  1. #cd /usr/local/etc ; cp snort.conf-sample snort.conf
  2. #chmod 644 snort.conf
  3. snort.conf’taki EXTERNAL_NET gibi değişkenleri kendi networküne göre ayarla

# ORNEK snort.conf degisiklikleri

var HOME_NET [192.168.0.0/16,213.139.220.0/24]

var EXTERNAL_NET any

  1. #pico /usr/local/etc/snort.conf

output database: log,mysql, user=snortman password=snortman dbname=snort host=localhost sensor_name=sensor01

  1. #mkdir /var/log/snort
  2. #chown –R snortman:snortman /var/log/snort

 

6.2 Apache Ayarları :

 

  1. #pico /etc/hosts

127.0.01       sensor01.com  localhost

  1. #pico /usr/local/etc/apache/httpd.conf
  2. Şu satırları değiştir :

·       Duzenle    DocumentRoot “/usr/local/www/data” 

Şuna :

·       DocumentRoot “/usr/local/www/acid”

 

·       Düzenle <Directory “/usr/local/www/data”>

Şuna:

·       <Directory “/usr/local/www/acid”>

 

 

6.3 Acid Ayarları :

 

  1. #chmod 644 /usr/local/www/acid/acid_conf.php
  2. #pico /usr/local/www/acid/acid_conf.php
  3. Şu satırları düzenle :

 

$alert_dbname   = "snort";

$alert_host     = "localhost";

$alert_port     = "";

$alert_user     = "snortman";

$alert_password = "snortman";

 

/* Archive DB connection parameters */

$archive_dbname   = "snort";

$archive_host     = "localhost";

$archive_port     = "";

$archive_user     = "snortman";

$archive_password = "snortman";

 

$ChartLib_path = "/usr/local/lib/php/phplot";

 

$portscan_file = "/var/log/snort/portscan.log";

 

6.4 MYSQL AYARLARI:

 

  1. #mysqladmin -p shutdown
  2. #cp /usr/local/share/mysql/my- large.cnf /etc/my.cnf
  3. #mysqld_safe & veya #safe_mysqld &

Snort’tan bilgi kaydedebilmesi için gerekli mysql ayarları:

  1. root olarak şu komutu veriyoruz:

# echo "CREATE DATABASE snort;" | /usr/local/bin/mysql -u root –p

  1. Mysql’e bağlanıyoruz   

#mysql –p

  1. grant INSERT,SELECT on snort.* to snortman@l27.0.0.1 IDENTIFIED BY 'snortman';
  2. grant INSERT,SELECT,CREATE,DELETE on snort.* to snortman@localhost IDENTIFIED BY 'snortman';
  3. UPDATE user SET Password = PASSWORD('snortman') WHERE Host = 'localhost' AND User = 'snortman'
  4. UPDATE user SET Password = PASSWORD('snortman') WHERE Host = '127.0.0.1' AND User = 'snortman'
  5. Mysql’den çıkıyoruz

quit

  1. /usr/local/bin/mysql -p < /tmp/create_mysql snort
  2. Edit the startup script (/usr/local/etc/rc.d/mysql-server.sh) so that the line that

begins with “/usr/local/bin/safe_mysqld --user=mysql” includes the parameter “--

bind-address=127.0.0.1”

 

ÖNEMLİ NOT: İleride yukarıdaki mysql işlemlerinde sorun çıkarsa snortman ın 127.0.0.1 ve localhost üzerindeki haklarıyla oyna.

 

Şimdi mysql’e bağlanıp tabloların oluşup oluşmadığını kontrol edelim;

#mysql –p

 

mysql> use snort

Database changed

mysql> show tables;

+------------------+

| Tables_in_snort |

+------------------+

| data |

| detail |

…

…

 

 

7 SNORT SCRIPT ‘i :

 

Snortu başlatıp kapatabilmek için bir script yazalım;

 

***************  snortd.sh ************************

 

#!/bin/sh

sleep 10

case "$1" in

                start)

                if [ -x /usr/local/bin/snort ]; then

                /usr/local/bin/snort -c /usr/local/etc/snort.conf -u snortman -g snortman -D > /dev/null & echo -n 'snort'

                echo ""

                fi

                ;;

                stop)

                /usr/bin/killall snort > /dev/null 2>&1 && echo -n 'snort'

                echo ""

                ;;

                *)

                echo ""

                echo "Usage: `basename $0` { start | stop }"

                echo ""

                exit 64

                ;;

esac

 

 

Kurulumları tamamladık makinamızı reboot ediyoruz;

#reboot

 

Şimdi snorttaki local.rules gibi ilgili kayıt dosyalarını düzenledikten sonra saldırı tespit sistemimizi çalıştırıyoruz;

 

#/usr/local/sbin/snortd.sh start

 

 

Evet şimdi Acid programına herhangi bir web browserı kullanarak bağlanabiliriz.

 

 

 

8 ACID’İN İLK AÇILIŞ AYARLARI :

 

Acid ilk açıldığında grafik arayüzünden bazı ayarlar yapmamız gerekiyor.

 

·        Öncelikle Setup page’i tıklayalım

 

 

 

·        Bu ekranda Create ACID AG’yi tıklıyoruz.

 

 

·        Evet aşağıdaki gibi bir ekran gelirse başarılı bir şekilde kurulduğuna dair (successfully created) Sorun yok demektir.

 

 

 

·        Ve artık son aşama olarak Main page’i  tıklayarak programımızı kullanabiliriz.

 

9 SALDIRI TESPİT SİSTEMİNİN WEBMİN İLE YÖNETİMİ :

9.1 WEBMİN KURULUMU :

 

·       cd /usr/ports/sysutils/webmin

·       make

·       make install

 

make install esnasındaki sorular :

 

Config file directory[/usr/local/etc/webmin] : ENTER <

Log file directory [/var/log/webmin] : ENTER <

Full Path to perl [default /usr/bin/perl] : ENTER <

Operating System : FreeBSD’nin numarasını listeden yaz

Version : listeden hangi versiyonsa onu yaz.

Web Server Port (default 10000): ENTER <

Login name (default admin) : root <

Login password : ******

Password Again : ******

Web server host name (default www.yourdomain.com.tr) : ENTER <

Use SSL (y/n) : y<

 

 

WEBMIN’i Başlatmak :

·        /usr/local/etc/webmin/start

WEBMIN’i Durdurmak :

·        /usr/local/etc/webmin/stop

 

9.2 WEBMIN KURULUM AYARLARINI DEĞİŞTİRMEK :

Biraz önce Web server port, log file directory gibi ayarları değiştirmek için /usr/local/etc/ altındaki webmin’i sil ve sonra şunu çalıştır.

·        /usr/ports/sysutils/webmin/work/webmin-0.990/setup.sh

 

Webmin Password’unu Değiştirmek :

·        /usr/local/lib/webmin/changepass.pl   /etc/webmin/ root newpassword

 

Webmin Portunu Değiştirmek :

·        #pico /usr/local/etc/webmin/miniserv.conf

·        Burada port yazan yeri bul değiştir ve webmini durdurup yeniden başlat.

 

Webmin’de IP ACCESS LIST

Webmin GUI’sinden

Webmin > Webmin Configuration > IP Access Control

192.168.8.96

veya

192.168.8.0/255.255.255.0 gibi

girebilirsin.

 

NOT: Bazı dosyaların path’leri webmin’de yanlış tanımlanmış olabilir. Eğer böyle bir hata verirse ilgili dosyaları alıp webmin’in baktığı klasörlere koy.

Mesela mysql işlemini tam yapabilmek için, webmin /usr/local/bin altında şunları arıyor :

-         mysql

-         mysqladmin

-         mysqlshow

-         mysqld_safe

 

9.3 WEBMIN’E SALDIRI TESPIT SISTEMI MODULU EKLENMESI :

 

  1. Webmin GUI’yi açıp (ÖR: http://192.168.0.1:10000) kullanıcı adı ve şifreyi girerek sisteme login oluyoruz.
  2. Buradan Webmin Configuration > Webmin Modules’u seçiyoruz.
  3. Karşımıza şöyle bir ekran geliyor;

 

  1. burada “From ftp or http URL” i işaretleyip yanına http://www.snort.org/dl/contrib/front_ends/webmin_plugin/snort-1.0.wbm yazıyoruz.
  2. ve Install Module From File’ı tıklıyoruz.
  3. Bu işlemden sonra modülün başarılı yüklenip yüklenmediği ekranın alt tarafında yazıyor.
  4. Yükleme işi tamamlandıktan sonra Üst bölümden Servers’ı seçiyoruz.

 

 

  1. Buraya alttaki şekilde gördüğümüz gibi Snort IDS Admin diye bir modül geliyor. Bunu tıklıyoruz.

 

  1. Daha sonra karşımıza aşağıdaki gibi bir menü geliyor. Bu menüyü dolduruyoruz ve save dediğimizde her şey çalışmaya hazır hale geliyor.

 

NOT: Yukarı Snort pid’ini verirken kendi sisteminizdeki arayüze göre veriniz.

9.4 WEBMIN’de KURAL YONETIMI :

 

  1. Burada gördüğünüz gibi bütün kurallarımız geliyor. Bunları bu menüden disable veya enable edebiliyoruz.
  2. Bu kural dosyalarından herhangi bir tanesini tıklayıp işlem yapabiliyoruz. Ama burada ilk başta hata verebiliyor $RULE_PATH’i bulamadım diye bu hatayı önlemek için snort.conf dosyasında $RULE_PATH’leri silip tam path yazıyoruz. Örnek

 

include  $RULE_PATH/local.rules

yerine

include /usr/local/share/snort/local.rules yazıyoruz.

  1. Şimdi artık üzerine tıkladığımız kural grubunu görebiliriz:

  1. Bu kurallar üzerinde şekilde de görüldüğü gibi değişiklik yapabilir, disable edebilir veya silebilirim.
  2. Ayrıca en altta bulunan satır yardımıyla da bu dosyaya yeni bir kural ekleyebilirim.

 

 

10 KAYNAKLAR

 

http://www.snort.org/docs/FreeBSD47RELEASE-Snort-MySQLVer1-3.pdf

http://www.snort.org/docs/snort-rh7-mysql-ACID-1-5.pdf

 

 

 

 

 

 

 

 

 

 

 

Copyright © 2003 , Yusuf UZUNAY (yuzunay@yahoo.com)