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 |
1
SALDIRI TESPİT SİSTEMİ NEDİR ?
5.1
Php , apache ve mysql kurulumları :
8
ACID’İN İLK AÇILIŞ AYARLARI :
9 SALDIRI
TESPİT SİSTEMİNİN WEBMİN İLE YÖNETİMİ :
9.2
WEBMIN KURULUM AYARLARINI DEĞİŞTİRMEK :
9.3
WEBMIN’E SALDIRI TESPIT SISTEMI MODULU EKLENMESI :
9.4
WEBMIN’de KURAL YONETIMI :
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.
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.
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.
Ø 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
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:
· #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 “.” yı 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.
· 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
·
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
·
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.
·
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 [ ]:
# ORNEK snort.conf degisiklikleri
var HOME_NET [192.168.0.0/16,213.139.220.0/24]
var EXTERNAL_NET any
output database: log,mysql, user=snortman password=snortman dbname=snort host=localhost sensor_name=sensor01
127.0.01 sensor01.com localhost
· 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”>
$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";
Snort’tan bilgi kaydedebilmesi için gerekli mysql ayarları:
# echo "CREATE DATABASE snort;" | /usr/local/bin/mysql -u root –p
#mysql –p
quit
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 |
…
…
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.
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.
·
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
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
NOT: Yukarı Snort pid’ini verirken kendi sisteminizdeki arayüze göre veriniz.
include $RULE_PATH/local.rules
yerine
include /usr/local/share/snort/local.rules yazıyoruz.
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)