PDF dökümanı oku - Seyhan Tekelioğlu
Transkript
PDF dökümanı oku - Seyhan Tekelioğlu
SNORT KURULUMU VE KONFİGÜRASYONU By Seyhan TEKELİOĞLU http://www.seyhan.biz Bu doküman da Snort’u NIDS (Network Intrusion Detection System) modunda, Red Hat Enterprise 4 linux üzerine kurulumunu anlatmaya çalışacağım. Anlatım sırasında işletim sisteminde kurulması gereken modüllere ve mysql ayarlarına da değineceğim. Ayrıca alarmları izlemek için BASE (Basic Analysis and Security Engine) kuracağız. Dokümanı adım adım uyguladığınızda kurduğunuz Snort’u NIDS modunda çalışıyor hale getireceksiniz. Bölüm 1 – Red Hat Enterprise 4 Kurulumu Kuruluma başlarken elinizdeki 4 adet RHEL 4 (Red Hat Enterprise Linux 4) cd’sinden ilkini cdrom’a takın ve sistemi boot edin. Cd kontrol ekranını Skip ile geçtikten sonra gelen Welcome ekranını next ile geçin. Dil seçiminde ben İngilizce kullandığım için English seçtim, size de Türkçe yerine İngilzice kurulumu tavsiye ediyorum. Burada English seçtikten sonra Keybord kısmında Turkish seçin. Sonraki ekranda Disk Partitioning olarak Automaticly partition seçin. Çıkan seçeneğe Yes cevabını verdikten sonra Automatic Partitioning kısmında Choose to remove all partitions from this hard drive seçeneğini işaretleyin. Sonraki ekranda yine öncekindeki gibi Yes seçeneğini seçin. Disk setup kısmını next ile geçip, Boot loader kısmınıda olduğu gibi bırakın ve sonraki adıma geçin. Network Configuration kısmında DHCP kullanmayarak server’ınıza statik bir ip adresi vermenizde yarar var. DNS ve Gateway’i de ayarladıktan sonra sonraki adıma geçin. Firewall bölümünde Choose enable firewall’u seçili duruma getirin ve SSH, HTTP, HTTPS portlarını açın. SELinux kısmını warn olarak ayarlayın. Additional Language kısmını US English olarak seçin. Time Setup’da Türkiye’yi bulup İstanbul’u işaretleyin (Europe/Istanbul). Root Password olarak bir şifre belirleyin. Sonraki adımda Customize software packages to be installed seçip ilerleyin. Packet Group Selection kısmında Desktop olarak hiçbir şey seçmeyin hepsi unchecked olsun (Biz konsoldan çalışacağız). Applications kısmında Editör olarak ben vi kullanıyorum o nedenle onu seçtim, burada istediğiniz bir editörü seçebilirsiniz. Text based internet olduğu gibi kalsın. Application başlığındaki diğer her şey işaretsiz olsun. Server Section kısmında Server Configuration Tools işaretli olsun, Web Server kısmında detaylara girin ve sadece Crypto-Utils, Mod_auth_mysql, Mod_perl, Mod_ssl, Php, Php_mysql, Webalizer işaretli kalsın. Mail Server, Windows File Server, DNS Server, FTP Server, Postgresql Database işaretsiz kalsın. MySQL Database’de sadece MyODBC, Mod_auth_myswl, Mysql-devel, Mysql-server, Mysqlclient10, Perl-DBD-Mysql, Php-mysql seçili olsun. News Server, Network Servers, Legacy Network Servers işaretsiz olsun. Development kısmında, Development Tools’u işaretleyin standart işaretlenen modüller dışında Expect ve Gcc-objc modülünü işaretleyin. Development altındaki diğer tüm işaretleri kaldırın. System kısmında Administartion’ı işaretleyin ve gelen seçenekler olduğu gibi kalsın. Bundan başka System altında işaretli başka bir şey kalmasın. Miscellaneous kısmında seçili bir şey olmasın. Bu seçimlerden sonra 2 kere next’e basıp kurulumun kaç cd olacağını öğrenin. Son olarak Continue düğmesine tıklayarak kuruluma başlayın. Kurulum bittikten sonra ekstra hiç bir şey kurmak istemediğinizi belirtip sistemi yeniden başlatın. RHEL 4 kuruldu. Tebrikler. Bölüm 2 – Snort İçin Ön Hazırlık RHEL 4 kurulumundan sonra konsol ekranından root hesabı ile giriş yapın ve snort için kullanacağımız yeni bir hesap yaratın. Bunun için önce groupadd snort ile snort isimli bir grup oluşturun daha sonrada useradd –g snort snort ile snort isimli bir kullanıcı oluşturup bunu snort grubuna ekleyin. Yeni oluşturduğumuz bu kullanıcıya şifre belirlemek içinse passwd snort komutunu verip iki kere istediğimiz şifreyi yazmamız yeterli olacaktır. Kullanıcıyı oluşturduktan sonra şimdi yeni user’la sisteme giriş yapıp ayarlara su - (sudo) kullanarak devam edebiliriz (su - ve sudo için daha fazla bilgiye google.com.tr dan ulaşabilirsiniz). Öncelikle SSH bağlantısı için konfigürasyonu elden geçirmelisiniz. Bunun için /etc/ssh/sshd_config dosyasını editörünüz ile açıp PermitRootLogin no ve PermitEmptyPasswords no satırlarını ekleyin. Bu işlemden sonra dosyayı kayıt edip kapatın ve ayarların geçerli olması için /etc/init.d/sshd restart komutu ile ssh servisini yeniden başlatın. Servisler ile ilgili olarak bir de kullanılması gereken http ve mysql servislerini de başlatmalısınız. Bunun içinde /etc/init.d/httpd start ile servis başlatılıp chkconfig httpd on ile her açılışta çalışır duruma getirilir. Mysql içinde /etc/init.d/mysqld start ve chkconfig mysqld on komutlarını kullanabilirsiniz. Şimdi sırada snort kurulumu için gerekli dosyaların indirilmesi işlemi var. Bütün dosyaları root folder’ına toplayacağız. Kurulumları orada yine su - ile root hakkı alıp yapacağız. Buradaki – ile root user’ının folder’ını kullanacağınızı belirtin. Bu yazı hazırlanırken en son snort sürümü 2.4.4 idi. Biz bu sürüme göre kurulum işlemlerini yapacağız. Önce wget http://www.snort.org/dl/current/snort-2.4.4.tar.gz komutunu kullanarak snort’u indirin. Daha sonra yine bu yazı hazırlanırken son sürümü 6.3 olan PCRE kütüphanesini wget http://belnet.dl.sourceforge.net/sourceforge/pcre/pcre-6.3.tar.gz komutunu kullanarak indirmemiz gerekiyor. Bölüm 3 – Snort Kurulumu ve Ayarları Snort’u kurmadan önce PCRE kütüphanesini derlememiz gerekiyor. Bunun için önce sıkıştırılmış tar dosyasını tar –zxvf pcre-6.3.tar.gz komutuyla açın. PCRE nin bulunduğu dizine girip sırasıyla önce ./configure yazıp enter’a basın, işlem bitince make yazıp enter’a basın ve son olarak make install yazıp enter’a basın ve kurulumu tamamlayın. Şimdi tekrar önceki dizine dönüp snort kurulumuna başlayalım. Bu işlemlere de önce tar dosyasını açmakla başlayalım. tar –zxvf snort-2.4.4.tar.gz komutuyla snortu açalım, daha sonra snort dizinine girip ./configure –with-mysql komutunu yazalım, sonra sırasıyla make ve make install konutlarını çalıştıralım. Bu işlemler ile snort kurulmuş oldu. Tebrikler. Kurulumdan sonra yapmamız gereken birkaç işlem daha var. Snort’un işlem yapacağı bazı dizinleri oluşturmanız gerekiyor. Şimdi snort dizininden çıkmadan dizinleri oluşturmak için sırasıyla şunları yapın. Önce mkdir /etc/snort komutunu çalıştırın. Daha sonra mkdir /etc/snort/rules ve mkdir /var/log/snort komutlarıyla dizin oluşturma işlemini bitirin. Daha sonra cd etc/ ile etc dizinine giderek her şeyi cp * /etc/snort komutuyla /etc/snort altına kopyalayın. Sıra snort için kullanılacak kural dosyasını indirip uygulamaya geldi. Bunun için diğer dosyaları da indirdiğiniz dizine geri dönün. Biz siteye kayıtlı kullanıcı olmadığımız için sadece kayıtsız kullanıcıların kullanabileceği kural dosyalarını indirebiliyoruz.(Kayıtlı kullanıcı olup gerekli ücreti verirseniz daha güncel http://www.snort.org/pubdosyaları indirmeye hakkınız olur). wget bin/downloads.cgi/Download/vrt_pr/snortrules-pr-2.4.tar.gz komutuyla kural dosyasını indirin. Sonrasında tar –zxvf snortrules-pr-2.4.tar.gz komutu ile tar dosyasını açın. Daha sonra cd rules komutu ile dizine girin ve son olarak daha önce açtığımız rules klasörüne yeni kural tablolarını kopyalayın. Bunun için cp –R * /etc/snort/rules komutunu kullanabilirsiniz. Şimdide snort.conf dosyası üzerinde bazı değişiklikler yapıp kullanabileceğimiz hale getireceğiz. snort.conf dosyası /etc/snort dizini altında bulunur. Kullandığınız editör programı ile konfigürasyon dosyasını açın. Ben vi kullandığım için .vi /etc/snort/snort.conf komutunu kullandım. Konfigürasyon dosyasında ilk değiştirmeniz gereken yer var HOME_NET any satırıdır. Buraya iç networkünüzde kullanılan ip bloğunu yazın. Bizim örneğimizde buraya var HOME_NET 192.168.1.0/24 yazdım. Daha sonra var EXTERNAL_NET any satırını var EXTERNAL_NET !$HOME_NET şeklinde değiştirin. Bu satırda bizim yaptığımız işlem HOME_NET ‘de yazan ip bloğu ve/veya blokları dışındaki tüm ip bloğunun dış ip bloğu olduğunun tanımlanmasıdır. Sonraki değiştirmemiz gereken satır kuralların belirlendiği dizinin tanımlandığı var RULE_PATH satırıdır. Burayı var RULE_PATH /etc/snort/rules şeklinde değiştirin. Daha sonra preprocessor stream4_reassamble satırını değiştirmemiz gerekiyor. Bu satırı preprocessor stream4_reassemble: both,prts 21 23 25 53 80 110 111 139 143 445 513 1433 olarak değiştirin. Konfigürasyon dosyasında son olarak logların tutulacağı database’i belirtmemiz gerekiyor. Burada database için belirleyeceğimiz kullanıcı adı ve şifre mysql ile oluşturacağınız database’de kullanılanla aynı olmak zorunda. Bu satırı output database: log, mysql, user=snort password=<snort user ı için oluşturduğunuz şifre> dbname=snort host=localhost şeklinde tanımlayın. Snort’u açılışta çalışacak bir daemon olarak tanımlayabiliriz. Bunun için önce cd /etc/init.d ile init.d dizinine girin, wget http://www.internetsecurityguru.com/snortinit/snort komutuyla snort dosyasını indirin. Daha sonra chmod 755 snort ile snort dosyasını çalıştırılabilir hale getirin. Son olarak açılışta çalışması için chkconfig snort on komutunu yazın. Bölüm 4 – Mysql Database Ayarları Snort için kullanılacak database’i ayarlamak için bazı mysql komutları gireceğiz. Burada istenen database adı, kullanıcı adı ve şifre bilgilerini snort.conf dosyasında yazdıklarınızla aynı olmasına dikkat edin. Şimdi database oluşturmaya başlayabiliriz. Konsola mysql yazıp enter’a basın. Daha sonra sırasıyla aşağıdaki satırları yazın. mysql> SET PASSWORD FOR root@localhost=PASSWORD('sifre'); >Query OK, 0 rows affected (0.6 sec) mysql> create database snort; >Query OK, 1 row affected (0.02 sec) mysql> grant INSERT,SELECT on root.* to snort@localhost; >Query OK, 0 rows affected (0.03 sec) mysql> SET PASSWORD FOR snort@localhost=PASSWORD('snort_sifreniz'); >Query OK, 0 rows affected (0.00 sec) mysql> grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to snort@localhost; >Query OK, 0 rows affected (0.00 sec) mysql> grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to snort; >Query OK, 0 rows affected (0.00 sec) mysql> exit Oluşturduğumuz database’e tabloları eklemek için ise konsoldan mysql -u root -p < /root/snort2.4.4/schemas/create_mysql snort komutunu çalıştırın. Bu komuttan sonra size root şifresi sorulacaktır. Şifrenizi yazıp tablo oluşturmayı tamamlayın. Buradaki root şifresi ile database oluştururken yazdığınız root şifresi birbiriyle aynı olmalıdır. Bu işlem ile oluşturduğumuz snort database’ine tabloları da eklemiş olduk. Snort kurulum işlemimiz bitti sayılır. Şimdi sırada alarmları izleyebileceğimiz görsel bir arabirim oluşturmaya geldi. Bölüm 5 – BASE (Basic Analysis and Security Engine) Kurulumu Alarmları izlemek için BASE kullanacağız. BASE php tabanlı bir scripttir. Snort database’inden aldığı verileri işler ve karşımıza anlaşılır bilgiler çıkartır. Ayrıca arama, listeleme v.s. gibi işlemler ile çıkan alarmların yönetimini kolaylaştırır. BASE kurulumuna başlamak için daha önce dosyaları kaydettiğimiz dizine dönüp önce ADODB sonrada BASE’i indirmeye başlayalım. Bu yazı hazırlanırken en son ADODB versiyonu 4.8.1, en son BASE versiyonu ise 1.2.4 idi. Kurulumlar bu versiyonlar üzerinden yapılacaktır. wget http://belnet.dl.sourceforge.net/sourceforge/adodb/adodb481.tgz komutuyla ADODB’yi indirin. wget http://belnet.dl.sourceforge.net/sourceforge/secureideas/base-1.2.4.tar.gz BASE’ i indirin. ile de İndirdiğimiz dosyaları kurmadan önce Firewall’da bazı ayarlamalar yapmamız gerekiyor. Bu işlemler sistemimizin daha güvenli çalışmasını sağlayacaktır. Önce cd /etc/sysconfig komutuyla sysconfig dizinine girin. vi iptables komutuyla iptables dosyasını editör ile açın. Daha sonra konfigürasyon satırlarından aşağıdaki satırları bulup silin. -A RH-Firewall-1-INPUT -p 50 -j ACCEPT -A RH-Firewall-1-INPUT -p 51 -j ACCEPT -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT Satırları sildikten sonrada aşağıdaki satırı da konfigürasyona ekleyin. -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 –j ACCEPT Son olarak da -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT satırını -A RHFirewall-1-INPUT -p icmp --icmp-type any -j REJECT ile değiştirin. Bu işlemler bittikten sonra services iptables restart komutuyla Firewall kurallarının yeniden alınmasını sağlayın. Şimdi sırada ADODB kurulumu var. Kuruluma başlamadan önce indirdiğimiz dosyayı apache’nin www dizinine kopyalamamız gerekiyor. Bunun için dosyayı indirdiğiniz yere gelip cp adodb481.tgz /var/www komutunu kulanın. Kopyalamadan sonra cd /var/www ile www klasörüne girin. tar –zxvf adodb481.tgz ile tar dosyasını açın ve daha sonra rm –rf adodb481.tgz ile buradaki dosyayı silin. ADODB ile işimiz bitti. Sıra geldi BASE kurulumuna. BASE kurulumu için önce dosyaları indirdiğimiz dizine geri dönün. ADODB de olduğu gibi buradaki indirilmiş base-1.2.4.tar.gz dosyasını bu sefer apache klasörlerinden html altına kopyalayacağız. Bunun için cp base-1.2.4.tar.gz /var/www/html komutunu kullanın. Şimdi cd /var/www/html komutuyla kopyalama yaptığımız dizine gidin ve tar –zxvf base-1.2.4.tar.gz ile tar dosyasını açın. Buraya kopyaladığımız dosyayı rm –f base-1.2.4.tar.gz ile silin. Son olarak da açılan dizinin adını daha kolay ulaşılabilir bir hale getirelim. Bunun için mv base-1.2.4 base komutu dizinin adını değiştirmekte bize yardımcı olacaktır. Şimdi BASE içindeki konfigürasyon dosyasında bazı değişiklikler yapmanız gerekecek. Bunun için cd /var/www/html/base ile BASE’in bulunduğu dizine girin. Konfigürasyon dosyasını oluşturmak için cp base_conf.php.dist base_conf.php komutunu kullanın. Sırada konfigürasyon dosyasının içindeki ayarlamalara geldi. Bunun için vi base_conf.php komutuyla konfigürasyon dosyasını editör ile açıyoruz. Burada önce dosyaların durduğu yeri $BASEurlpath = “/base”; olarak ayarlayın. Sonra ADODB nin durduğu yeri $DBlib_path = “/var/www/adodb/”; olarak değiştirin. Database tipini $DBtype = “mysql”; olarak seçin. Daha sonra database bağlantı ayarlarını yapmanız gerekiyor. Bunun için de konfigürasyonu aşağıdaki şekilde düzenleyin. $alert_dbname = “snort”; $alert_host = “localhost”; $alert_port = “”; $alert_user = “snort”; $alert_password = “snort_sifreniz”; Bu işlemlerden sonra internet tarayıcınızla BASE kurulumuna devam edebilirsiniz. Bunun için tarayıcınızın adres satırına https://localhost/base yazıp kurulum ekranının gelmesini sağlayın. İlk ekranda Setup Page linkine tıklayın. Çıkan ekranda AG düğmesine tıklayarak tabloları oluşturun. Tablo oluşturma işlemi sona erdikten sonra Main page linkine tıklayarak BASE’in ana sayfasına gelebilirsiniz. BASE ekranına herkesin ulaşmasını istemiyorsanız girişi şifreleyebilirsiniz. Bunun için apache içinden BASE’in bulunduğu dizini güvenli hale getirin. Önce mkdir /var/www/passwords komutuyla passwords dizinini oluşturun. Sonra /usr/bin/htpasswd –c /var/www/passwords/passwords kullanici komutuyla dizine erişmesini istediğiniz bir kullanıcıyı tanımlayın. kullanici kısmına istediğiniz bir şeyi yazabilirsiniz. Bu komuttan sonra size bu kullanıcı için bir şifre soracaktır. Erişim şifresini belirleyin. Daha sonra şifreli giriş işlemini apache’ye tanıtmamız gerekiyor. Bunun yapmak için vi /etc/httpd/conf/httpd.conf komutuyla apache konfigürasyon dosyasını açın. <Directory /> Options FollowSymLinks AllowOverride None </Directory> Bu satırları bulduktan sonra sonuna aşağıdaki satırları ekleyin. <Directory "/var/www/html/base"> AuthType Basic AuthName "Seyhan" AuthUserFile /var/www/passwords/passwords Require user kullanici </Directory> Son olarak da apache’nin servislerini yeniden başlatmamız gerekiyor. Bunun için /etc/init.d/httpd restart komutunu kullanın. Artık snort’u çalıştırıp neler olup bittiğine bakabiliriz. Snort çeşitli modlarda çalışabilmektedir. Burada NIDS (Network Intrusion Detection System) modunda çalıştıracağız (Daha fazla bilgi için bkz. http://www.snort.org/docs/snort_htmanuals/htmanual_2.4/rc1/). Komut satırından snort -dev -l /var/log/snort -h 192.168.1.0/24 -c /etc/snort/snort.conf komutunu çalıştırarak snort’u aktif hale getirin. Snort’un kurulu olduğu makine trafiğin geçtiği bir yere bağlı değil ise Snort’un çalışıp çalışmadığını test etmek için snort kurulu makineye nmap, nessus v.s. gibi programlarla tarama başlatıp BASE içinden alarmların gelişini takip edebilirsiniz. BASE ekranındaki hareketlilik snort’un düzgün çalıştığınız göstergesidir. Snort’u başarıyla kurdunuz. Tebrikler. Başka bir makalede görüşmek üzere hepinize iyi çalışmalar. Seyhan Tekelioğlu http://www.seyhan.biz