Category: FreeBSD

pfSense Güvenlik Duvarı Eğitimi 19-20 Mart 2011

By | February 20, 2011

19-20 Mart 2011 tarihlerinde hızlandırılmış pfSense eğitimi düzenlenecektir. Türkiye’de alanında ilk olan bu eğitimde klasik pfSense özelliklerinin yanında pfSense’in kurumsal ortamlarda kullanılması için gerekli bileşenlerin Read more »

pfSense Güvenlik Duvarı Eğitimi 29-30 Ocak 2011

By | December 8, 2010

29-30 Ocak 2011 tarihlerinde hızlandırılmış pfSense eğitimi düzenlenecektir. Türkiye’de alanında ilk olan bu eğitimde klasik pfSense özelliklerinin yanında pfSense’in kurumsal ortamlarda kullanılması için gerekli bileşenlerin sisteme eklenmesi, yönetilmesi ve arabirimden yapılamayan özelleştirmelere değinilecektir. Read more »

pfSense Güvenlik Duvarı Eğitimi 27 Kasım 2010

By | October 8, 2010

27-28 Kasım 2010 tarihlerinde hızlandırılmış pfSense eğitimi düzenlenecektir.

Türkiye’de alanında ilk olan bu eğitimde klasik pfSense özelliklerinin yanında pfSense’in kurumsal ortamlarda kullanılması için gerekli bileşenlerin sisteme eklenmesi, yönetilmesi ve arabirimden yapılamayan özelleştirmelere değinilecektir. Read more »

BGA’dan PfSense Güvenlik Duvarı Eğitimi

By | August 15, 2010

Bilgi Güvenliği AKADEMİSİ özgür güvenlik yazılımlarına destek vermeye devam ediyor. bu amaçla Internet dünyasının en çok tercih edilen güvenlik duvarı yazılımlarından PfSense’in kurumsal iş ortamlarında etkin kullanımını amaçlayan iki günlük hızlandırılmış bir eğitim programı hazırladık(“PfSense güvenlik Duvarı Eğitimi”).

Eğitim içeriği ve detaylarına http://www.bga.com.tr/?page_id=1651 adresinden erişilebilir. Bu konudaki ilk eğitim 2011 yılında gerçekleştirilecektir.

FreeBSD Packet Filter SynProxy Problemi

By | January 2, 2010

FreeBSD’de  Packet Filter’in SynProxy özelliğini arkadaki bir makine için değil de FreeBSD’nin kendisini korumak için kullanırken dikkat edilmesi gereken ufak bir detay: Synproxy kullanmadan önce kuralların başında set skip on lo satırının yer alması gerekir yoksa SynProxy state kullandığınız kurallar çalışmayacaktır.

Asimetrik Hatlarda Trafik izleme ve IDS/IPS Calistirma

By | December 26, 2009

Asimetrik hatlar, iletisimin bir hattan baslayip diger hattan devam ettigi hatlardir. Bu tip baglantilarda hem güvenlik duvarlari hem de aradaki izleme/engelleme cihazlari oldukca zorlanir. Bunun sebebi TCP gibi protokollerde oturum bilgilerinin tam tutulamamasidir.

Mesela bir TCP baglantisinda ilk paket olan SYN 1. hattan gider, cevabi olacak SYN/ACK paketi 2. hattan döner. Durum böyle olunca trafigi izlemeye çalisan IDS/IPS/NSM benzeri sistemler oturum bilgisini tam tutamadigi için saglikli çalismazlar. Read more »

FreeBSD 7.2 Güncelleme

By | May 7, 2009

FreeBSD, 7.0 Release’den sonra çıkan sürümler için aşağıdaki gibi kolay bir güncelleme imkanı sunuyor.

Güncelleme öncesi
#uname -a
FreeBSD vps-fw 7.1-RELEASE FreeBSD 7.1-RELEASE #0: Thu Jan  1 08:58:24 UTC 2009   root@driscoll.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC”>root@driscoll.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64

Güncelleme

 [root@vps-fw ~]# freebsd-update upgrade -r 7.2-RELEASE
Looking up update.FreeBSD.org mirrors… 6 mirrors found.
Fetching metadata signature for 7.1-RELEASE from update5.FreeBSD.org… done.
Fetching metadata index… done.
Fetching 1 metadata patches. done.
Applying metadata patches… done.
Fetching 1 metadata files… done.
Inspecting system… done.

The following components of FreeBSD seem to be installed:
kernel/generic world/base world/dict world/games world/info

The following components of FreeBSD do not seem to be installed:
src/base src/bin src/cddl src/contrib src/crypto src/etc src/games
src/gnu src/include src/krb5 src/lib src/libexec src/release src/rescue
src/sbin src/secure src/share src/sys src/tools src/ubin src/usbin
world/catpages world/doc world/lib32 world/manpages world/proflibs

Does this look reasonable (y/n)? y

Fetching metadata signature for 7.2-RELEASE from update5.FreeBSD.org… done.
Fetching metadata index… ydone.
Fetching 1 metadata patches. done.
Applying metadata patches… done.
Fetching 1 metadata files… done.
Inspecting system… done.
Fetching files from 7.1-RELEASE for merging… done.
Preparing to download files… done.
Attempting to automatically merge changes in files… done.

The following changes, which occurred between FreeBSD 7.1-RELEASE and
FreeBSD 7.2-RELEASE have been merged into /etc/group:
— current version
+++ new version
@@ -1,6 +1,6 @@
-# $FreeBSD: src/etc/group,v 1.35.6.1 2008/11/25 02:59:29 kensmith Exp $
+# $FreeBSD: src/etc/group,v 1.35.8.1 2009/04/15 03:14:26 kensmith Exp $
 #

ardından

#freebsd-update install  
Installing updates…
Kernel updates have been installed.  Please reboot and run
“/usr/sbin/freebsd-update install” again to finish installing updates.

shutdown -r komutu verilir.

Sistem açıldıktan sonra tekrar

#freebsd-update install   ve reboot komutu ile güncelleme tamamlanır.

Güncelleme sonrasında sistemin durumunu uname -a ile kontrol edersek aşağıdaki gibi çıktı verecektir.

# uname -a
FreeBSD vps-fw 7.2-RELEASE FreeBSD 7.2-RELEASE #0: Fri May  1 07:18:07 UTC 2009     root@driscoll.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64

FreeBSD 7.2 & OpenBSD 4.5

daemonsArada iki önemli sürüm çıkardılar ama eskisi gibi hızlı takip edemediğim için yazamadım. Bugun biraz boş vakit bulup her iki sistemi de indirdim. Yakın zamanda bu sistemlerin yüksek performanslarına  çok ihtiyacım olacak. Şimdiden testlerine başlıyorum… Test yaptıkça buraya da eklemeye çalışacağım. İlk testin ipuçlarını da vereyim: 500~Mb trafik altında Snort nasıl davranıyor. Bu kadar trafik için ne kadarlık bir donanım yeterli olur.

 
FreeBSD 7.2 ile birlikte gelen dikkat çekici yenilikler:
    *      support for fully transparent use of superpages for application memory
    *      support for multiple IPv4 and IPv6 addresses for jails
    *      csup(1) now supports CVSMode to fetch a complete CVS repository
    *      Gnome updated to 2.26, KDE updated to 4.2.2
    *      sparc64 now supports UltraSparc-III processors

Diğer tüm yenilikler için http://www.FreeBSD.org/releases/7.2R/relnotes.html
OpenBSD 4.5 ile birlikte gelen yenilikler için http://www.openbsd.org/45.html#new

FreeBSD’de Paket Kayıplarının Ölçümü

By | May 6, 2009

pl

FreeBSD üzerinde bpf kullanan bir uygulamanız varsa(Trafik izleme, Sniffer, Saldırı Tespit/Engelleme Sistemleri vs) bu uygulamanın sistem üzerinden gidip-gelen tüm paketleri yakalayabildiğini görmek önemli bir şeydir.

FreeBSD 7 ile birlikte netstat’a -B parametresi eklenerek bu özellik sağlanmış gözüküyor( Eskiden port ağacından bpfstat kurularak yapılabiliyordu). Böylece kullandığınız yazılımın ne kadar sağlıklı çalıştığını görebilirsiniz.

Aynı anda Hem Firewall loglaması(Packet filter loglaması bpf kullanıyor) hem de Snort çalışan bir FreeBSD sistemde ekteki gibi bir çıktı alıyorum.

# netstat -B
  Pid  Netif   Flags                Recv                     Drop     Match S           blen            Hblen Command
  562 pflog0 p–s–l            2 03181642         0          203181642 1137024     0          pflogd
 4951  lagg0 p–s—           80564996            0          80564996 5405484       0           snort

Görüleceği gibi her iki uygulamada paket kaçırmadan çalışıyor. Yine bpf kullanan ve paket kaçırdığını düşündüğümüz  başka bir uygulamayı inceleyelim.

# netstat -B
  Pid       Netif    Flags      Recv                      Drop     Match Sblen Hblen Command
 
14109  lagg0 p–s—      716609791      1175963 315031330 9547396     0 Uygulama1
14111  lagg0 p–s—        716609841         0  40677365 2608139     0 Uygulama1
14108  lagg0 p–s—       716609840    2975378 611795979 9262176     0 Uygulama1
14110  lagg0 p–s—       716609803         0   7578723 214966     0 Uygulama1

Çıktıdan görüleceği gibi Uygulama1 isimli programımız ciddi sayılabilecek oranlarda paket kaçırıyor.

netstat -B ile alınan çıktı sabitdir. Yani netstat -w(ekranı belirli aralıklarda yenile) benzeri bir özelliği yoktur. Bunun için aşağıdaki tek satırlık script kullanılabilir.

# while [ 1 ];do netstat -B;sleep 2;done
  Pid  Netif   Flags      Recv      Drop     Match Sblen Hblen Command
  562 pflog0 p–s–l 208976932         0 208976932 1750144     0 pflogd
 4951  lagg0 p–s— 101664407         0 101664407 734372     0 snort
  Pid  Netif   Flags      Recv      Drop     Match Sblen Hblen Command
  562 pflog0 p–s–l 209035050         0 209035050 1700096     0 pflogd
 4951  lagg0 p–s— 101870233         0 101870233 9502240     0 snort
  Pid  Netif   Flags      Recv      Drop     Match Sblen Hblen Command
  562 pflog0 p–s–l 209090568         0 209090568 1451264     0 pflogd
 4951  lagg0 p–s— 102070052         0 102070052 3575342     0 snort
  Pid  Netif   Flags      Recv      Drop     Match Sblen Hblen Command
  562 pflog0 p–s–l 209147854         0 209147854 1330048     0 pflogd
 4951  lagg0 p–s— 102278007         0 102278007 2218950     0 snort
  ….

çıktıdaki Flags değerindeki alanlar aşağıdaki anlamlara geliyor.

The bpf(4) flags displayed when netstat is invoked with the -B option      represent the underlying parameters of the bpf peer.  Each flag is repre-
     sented as a single lower case letter.  The mapping between the letters      and flags in order of appearance are:

     p    Set if listening promiscuously
     i    BIOCIMMEDIATE has been set on the device
     f    BIOCGHDRCMPLT status: source link addresses are being filled auto-
          matically
     s    BIOCGSEESENT status: see packets originating locally and remotely on
          the interface.
     a    Packet reception generates a signal
     l    BIOCLOCK status: descriptor has been locked

Coklu Internet Baglantilarinda Hat Yedekleme

By | March 7, 2009

routerInternet baglanti teknolojilerinin gelimesi ile birlikte cogu sirket tek hatla yetinmeyip farklı teknolojilerde birden fazla hat ile interneti kullanma basladı. Bunun temel sebeplerinden biri de hat yedekliligidir. Yani X teknolojisini kullandıgı hat giderse Y teknolojisini kullanan hat uzerinden islemleri devam ettirebilsin.

Hat yedeklemede en önemli konu yedekleme isini routing protokolleri ile mi yoksa manuel mi yapılacağıdır. Eğer hizmet alınan ISP ve kullanılan bağlantı teknolojisi destekliyorsa en sağlıklısı routing protokollerini kullanarak hat yedekleme işlemini yapmaktır ama ADSL vs gibi bağlantı tipleri kullanılıyorsa bu durumdarouting protokollerini kullanmak pek mümkün olmayacaktır.

Eğer routing protokolleri üzerinden hat yedekleme yapılamıyorsa bu isi elle yapmak gerekir yani belirli aralıklarda hatların durumunu kontrol eden ve gerektiğinde tüm bağlantıları birinden diğerine aktaran scripler yazılabilir. Bu ilk akla gelen yöntemdir ama bağlantı sayısı 3′ü aştığında biraz zora girmektedir. Her eklenen bağlantı sayısında scripte eklemeler yapılması hata durumunu kaçınılmaz kılar.

Bu gibi durumlar  için OpenBSD işletim sisteminde ifstated yazılımı bulunmaktadır.(FreeBSD’e de port edildi). Ifstated verilen parametrelere göre hatların durumunu kontrol eder ve hatlarda bir değişiklik olduğunda istenilen komutu/scripti otomatik çalıştırır. ifstated aslında bizim her seferinde eklemelerle genişleteceğimiz scrit yazma işlemini kendi üzerine alarak bize sadece hatlarla ilgili durum senaryolarını oluşturmayı bırakır.

Örnek:Iki farklı internet hattımız olsun ve biz bu hatların her ikisi de aktif iken trafiği bu hatlar arasında paylaştırdığımızı, hatlardan biri gittiğinde ise tüm trafiği diğer hatta aktaran ve ilk hat geldiğinde tekrar iki hatta paylaştıran bir yapı istediğimizi düşünelim.

Burada olasılıklar şu şekildedir.

Iki tane hat var ;
hat1=ADSL
hat2=Kablo
Her iki hat aktif olabilir		 -->Trafik bu iki hat arasında Packet Filter kullanılarak paylaştırılır,default GW hat1 =pf_ortak.conf
Hat1 aktif, hat 2 gitmiş olabilir	 -->Tüm trafik hat1 üzerinden üzerinden gider, uygun PAcket Filter kuralları yüklenir=pf_hat1.conf
Hat2 aktif, hat1 gitmiş olabilir	 -->Tüm trafik hat2 üzerinden üzerinden gider, uygun PAcket Filter kuralları yüklenir, default GW2 olur=pf_hat2.conf
Her iki hat gidebilir		    	 --> Tüm hatlar gitti diye mail attırılır.
Hat2 aktif, hat1 gitmiş iken Hat1 tekrar gelebilir --> Bu durumda Trafik bu iki hat arasında Packet Filter kullanılarak paylaştırılır,default GW hat1 =pf_ortak.conf

..

secenekler bu sekilde arttırılabilir. Hat sayısı üçe çıktığında ise bu seçenekler çok daha fazla artacaktır.

Tekrar kurmak istediğimiz yapıyı hatırlayalım: Yapmak istedigimiz her iki hat da aktif iken default GW hat1 olsun ve trafik iki hatta paylaştırılsın(PF aracılığı ile), hat1 gittiginde hat2 default GW olsun, hat1 tekrar geldiginde tekrar default GW hat1 olsun. Her iki hat da gittiginde mesaj atsin.

FreeBSD/OpenBSD Üzerinde Deneme

FreeBSD için ifstated kurulu olmali

#cd /usr/ports/net/ifstated
#make && make install

/etc/rc.conf dosyasına aşağıdaki satırlar eklenir.

ifstated_enable=”YES”

Sonra /usrl/local/etc/ifstated.conf(OpenBSD’de /etc/ifstated) dosyasinin icerisine asagidaki satirlari yaziyoruz.

loglevel debug init-state primary hat1='("ping -q -c 1 -t 3 -S 192.168.2.24 195.175.39.39 > /dev/null" every 10)' hat2='("ping -q -c 1 -t 3 -S 10.10.10.1 74.125.79.147 > /dev/null" every 10)' state primary { init { run "echo 'hat1 hat2 - ADSL & Kablo Hatti Aktif Durumda...'" run "route delete default && route add default 192.168.2.1" run "pfctl -f /etc/pf_ortak.conf" } if (! $hat1 && $hat2) set-state mastera if ($hat1 && ! $hat2) set-state masterb if ( ! $hat1 && ! $hat2) set-state hatyok } state mastera { init { run " echo 'hat2- KAblo Internet Hatti Aktif Durumda...'" run "route delete default" run "route add default 10.10.10.2" run "pfctl -f /etc/pf_hat2.conf" } if $hat1 set-state masterb if ! $hat2 set-state hatyok } state masterb { init { run " echo 'hat1- ADSL Internet Hatti Aktif Durumda...'" run "route delete default" run "route add default 192.168.2.1 " run "pfctl -f /etc/pf_hat1.conf" } if ( ! $hat1 && ! $hat2) set-state hatyok if ($hat1 && $hat2) set-state primary } state hatyok { init { run "echo 'Iki HAT da YOK'" run 'echo "hatlar gidik"|mail -s "Hat Gitti" huzeyfe@lifeoverip.net' run "route delete default" } if (! $hat1 && $hat2) set-state mastera if ($hat1 && $hat2) set-state primary if ( $hat1 && !$hat2) set-state masterb }

dosyada gecen IP adresleri ve anlamlari;

192.168.2.24 hat1′in IP Adresi

195.175.39.39 hat1′in calisir oldugunu kontrol etmek icin kullanilan IP adresi

10.10.10.1 hat2′in IP Adresi

74.125.79.147 hat2′in calisir oldugunu kontrol etmek icin kullanilan IP adresi

Hat kontrolu icin kullanılan IP adresleri icin uygun arabirimlere routing girilmeli. yani 195.175.39.40′a giderken hep hat2 kullanılacak.

route add 195.175.39.39 192.168.2.1

route add 195.175.39.40 10.10.10.2

NOT: IP Adreslerinin kendi sisteminize gore uyarlanmasi gerekir.(POing ile kontrol edilecek ip adreslerinin her zaman ulasılabilir adresler olmasi onemli)

Bu işlemlerden sonra ifstated -n komutu ile dosyada birşeyler hatalı mı diye kontrol edilir. Hata yoksa ifstated -d -vv komutu ile debug modda çalışıp sistemin çalıştığı izlenir.

Sistemde yapılan testler ve çıktıları.

Her ikli hattın olmadığı durumda

ifstated: running ping -q -c 1 -t 3 -S 10.10.10.1 74.125.79.147 > /dev/null ifstated: running ping -q -c 1 -t 3 -S 192.168.2.24 195.175.39.39 > /dev/null ifstated: changing state to hatyok ifstated: running ping -q -c 1 -t 3 -S 192.168.2.24 195.175.39.39 > /dev/null ifstated: running ping -q -c 1 -t 3 -S 10.10.10.1 74.125.79.147 > /dev/null ifstated: running echo 'Iki HAT da YOK' Iki HAT da YOK ifstated: running echo "hatlar gidik"|mail -s "Hat Gitti" huzeyfe@lifeoverip.net ifstated: running route delete default delete net default

Ikinci hat aktif oldugunda

ifstated: running ping -q -c 1 -t 3 -S 192.168.2.24 195.175.39.39 > /dev/null ifstated: running ping -q -c 1 -t 3 -S 10.10.10.1 74.125.79.147 > /dev/null ifstated: changing state to mastera ifstated: running ping -q -c 1 -t 3 -S 10.10.10.1 74.125.79.147 > /dev/null ifstated: running ping -q -c 1 -t 3 -S 192.168.2.24 195.175.39.39 > /dev/null ifstated: running echo 'VELIBABAAA' VELIBABAAA ifstated: running route delete default route: writing to routing socket: No such process delete net default: not in table ifstated: running route add default 10.10.10.2 add net default: gateway 10.10.10.2

Ardindan I.hat tekrar aktif oluyor .

ifstated: running ping -q -c 1 -t 3 -S 10.10.10.1 74.125.79.147 > /dev/null ifstated: running ping -q -c 1 -t 3 -S 192.168.2.24 195.175.39.39 > /dev/null ifstated: changing state to primary ifstated: running ping -q -c 1 -t 3 -S 10.10.10.1 74.125.79.147 > /dev/null ifstated: running ping -q -c 1 -t 3 -S 192.168.2.24 195.175.39.39 > /dev/null ifstated: running echo 'ALIBABA' ALIBABA ifstated: running route delete default && route add default 192.168.2.1 delete net default add net default: gateway 192.168.2.1

Not-1:ifstated sadece hat yedekleme degil Failover firewall kurulumlarinda Firewall’larin birbirini kontrol etmesi icin de kullanılabilir.

Not-1: Yukarıdaki ornek calisan bir sistemden alınıp uzerine eklemeler yapılmıstır. Dolayısı ile bu hali ile dogrudan calismayabilir.