Portların koruyucusu Psionic Portsentry 1.1

ArticleCategory: [Choose a category for your article]

System Administration

AuthorImage:[Here we need a little image form you]

[Photo of the Author]

TranslationInfo:[Author and translation history]

original in en Georges Tarbouriech 

en to tr Erdal MUTLU

AboutTheAuthor:[A small biography about the author]

Georges uzun zamandır UNIX kullanıcısıdır. Güvenlik konusunun, bu yüzyılın en önemli fırsatlarından olduğunu düşünmektedir.

Abstract:[Here you write a little summary]

Psionic portsentry, Abacus projesinde yer alan araçlardan (portsentry'nin yanında logchek ve hostsentry de var) biridir. Bu bir Saldırı Belirleme Sistemidir (SBS, İngilizcesi : Intrusion Detection System) ve port taramalarına karşı aktif savunma için tasarlanmıştır. Mac OS X dahil birçok UNIX sisteminde çalışmaktadır. SBS'lerinin en önemli özelliği, saldırı girişimlerini sistem yöneticisine bildirmeleridir. Portsentry yapılan saldırıya cevap verebilme özelliği sayesinde daha da ileriye gitmektedir. Bu önemli aracın en son sürümünü (1.1) http://www.psionic.com adresinde bulabilirsiniz. Bu arada, 1.0 sürümü, ana Linux dağıtıcılarından Debian, RedHat ... ile birlikte gelmektedir.

ArticleIllustration:[This is the title picture for your article]

[illustration]

ArticleBody:[The article body]

Portsentry neden kullanılır?

Geçen yüzyılda bilgisayar ağları inanılmaz hızlı bir büyüme göstermiştir. Amaç, üzerlerinde farklı işletim sistemleri çalıştıran bilgisayarları haberleştirmek idi. Dolayısıyla, sistemlere özgü ağ haberleşme sistemleri, yavaş yavaş TCP/IP ile değiştirilmiştir. Gerisini de İnternet yaptı! Bugün birçok ağ haberleşme sistemi TCP/IP'ye dayanmaktadır, TCP/IP ise, port kullanımına. Kısacası portlar, istemci veya sunucu uygulamalarıyla ilişkilendirilmektedir. Sunucu, istemciden bağlantı isteği gelene dek ilgili portu dinlemektedir (beklemektedir). Yukarıda da sözü edilen istemci/sunucu mimarisine göre çalışan uygulamalar çeşitli protlar ile ilişkilendirilmiştir. UNIX sistemlerinde bu ilişki /etc/services dosyasında belirtilmiştir. Yani, hangi uygulama için, hangi port ayrılmıştır herkes tarafından bilinmektedir. Herkes bildiğine göre, saldırganlar daha da iyi bilmektedir! Eğer, portları kapılar gibi düşünecek olursak, açık (dinlenilen) port, kilitlenmemiş kapı gibidir. Bir eve nasıl girer siniz? Genellikle kapıdan (Tabii siz pencereyi tercih edebilirsiniz, bu size kalmış!) Dolayısıyla, siyah şapkalılar (saldırganlar) da bilgisayarınıza girmek için aynı yolu izlemektedir...
Riskleri azaltmak için yapılacak ilk iş, mümkün olduğu sayıda portu kapatmak olmalıdır, yani bu portlarda çalışan uygulamaları durdurmak. Ne kadar az, o kadar iyi. Ancak, ağ üzerinde çalışan bir bilgisayarın her portunu kapatamazsınız, haberleşme olmaz o zaman, yani biraz saçma olur!
Aktif çalışan uygulama sayısı nasıl azaltılır veya portlar nasıl kapatılır konuları bu makalenin kapsamı dıiında kalmaktadır. Konuyla ilgili ve bilgisayar ile ağ güvenliğini sağlamak için, Linux Documentation Project adresine bağlanarak veya LinuxFocus makaleleri üzerinde arama yaparak (sözgelimi Bastille Linux veya Security tools olabilir) birçok yazı bulabilirsiniz. Linux için Bastille Linux şarttır.
İşte buradan portsentry gelmektedir. Portsentry portları izleyebilir ve eğer, isterseniz bunlara yapılacak bağlantıları engelleyebilir. Portsentry'de çeşitli çalışma seviyeleri vardır ve bazıları işletim sistemlerine özgü olmaktadır. İşletim sistemlerinin buradaki anlamı Linux dur.
Portsentry, sahip olduğunuz Linux çekirdeğinin sürümüne göre, ipfwadm, ipchains ve iptables gibi paket filtrelemesi yapan uygulamalardan da faydalanabilir. Bu aynı zamanda başka uygulamalara sahip diğer UNIX'ler için de geçerlidir (bu konuya daha sonra döneceğiz). Portsentry'nin en önemli özelliği "otomatik engelleme" dir.
Bunun nasıl başarıyor? İşte cevabı!

Portsentry nasıl yüklenir?

Portsentry çok küçük bir tarball (tar ile arşivlenmiş ve gzip ile sıkıştırılmış) dosyası halinde gelmektedir. Dosyayı açtıktan sonra, kaynak dosyalarınını ve README dosyalarını elde ediyorsunuz. Açıktır ki, bütün bu dosyaları okumak gerekir. Güvenlikten sözettiğimize göre, PGP dosyalarını (imza ve anahtar) İnternetten indirmeyi unutmayınız.
Yükleme işlemi her zamanki gibi : make sizinsisteminiz ve make install komutlarını sırasıyla çalıştırarak yapılmaktadır. Ancak, yüklemeden önce hazılrık yapmanız gerekir. Yani, portsentry'nin kaynakyazılım dosyalarını okumanız ve portsentry.conf, portsentry_config ve Makefile dosyalarını kendi gereksinimlerinize göre değiştirip denetlemeniz gerekir.
Portsentry'yi etkin bir şekilde kullanabilmek için TCPWrappers sahip olmanız gerekmektedir. En azından, paket filtreleme uygulamalarıyla olan kullanımı daha iyi olmaktadır. Tabii eğer, Linux kullanıyorsanız, bunların hepsine sahipsiniz demektir. Diğer Unix'lerden ne haber?
Portsentry'yi farklı ortamlarda test ettiğimiz için, gereksinimlerden sözedelim.
MAC OS X, L,nux'ta olduğu gibi herşey vardır ( TCPWrappers, ipfw (BSD sürümü). Dolayısıyla, sadece "make osx" komutunu çalıştırmanız yeterlidir.
Solaris 2.6 (SPARC) da TCPWrappers yoktur. Bunu ftp://ftp.porcupine.org/pub/security adresinden elde edebilirsiniz. IPFilter uygulamasını da ftp://coombs.anu.edu.au/pub/net/ip-filter/ip-fil3.4.9.tar.gz adresinden elde edebilirsiniz (ancak Solaris derleyicisine sahip iseniz !!!).
Irix 6.5'de de TCPWrappers yoktur. Bunu paketlenmiş olarak http://freeware.sgi.com/index-by-alpha.html adresinden elde edebilirsiniz. Paket filtreleme uygulaması olarak Irix ile birlikte gelen, ancak başta yüklenmemiş olan ipfilterd vardır.
Son olarak, çalışan bir vsnprintf() bulamazsanız NeXSTEP için portsentry uygulamasını yükleyemezsiniz. Ben bulamadım da!
Tekrar vurgulamak gerekirse, yüklemeden önce portsentry'yi yapılandırmak gerekir. Bu size kalmış tabii, ancak, diğer herşeyden önce çalışma felsefesini anlamak daha iyidir. Ancak bu da seçim meselesi!

Portsentry nasıl çalışmaktadır?

İyi, teşekkür ederim!
Ciddi olmak gerekirse, portsentry yapılandırma dosyalarından ayarlanmaktadır. En önemlisi de portsentry.conf dosyasıdır. Saldırıya karşı nasıl tepki verileceğini burada belirtiyorsunuz.
Bu dosya ile ilgili bir şey yapmadan önce, çeşitli çalışma seviyelerini anlamak gerekir.
Çalıştırma sırasında verdiğiniz parametreye göre portsentry'ni, altı farklı çalışma şekline sahiptir.
- İlki "-tcp" dir ve en basitidir. Bu seçenekle, yapılandırma dosyasının "port configuration" bölümünde yer alan TCP portlarını dinleyecektir. Port sayisindaki üst limit 64 tür.
- İkincisi "-udp" dir ve ilkinin TCP portlarına yaptığını bu UDP portlarına uygulamaktadır.
- Üçüncüsü "-stcp" dir ("s" anlamı stealth dir). Bu ve bundan sonraki seçenekler sadece Linux sistemlerinde vardır. "-stcp" seçeneği ile portsentry, gelen paketleri izlemek için socket kullanmaktadır, yani portlar doğrudan (bind) kullanılmamaktadır.
- Dördüncüsü "-sudp" dir ve önceki seçeneğinin TCP için yaptığını, UDP portları için uygulamaktadır.
- Beşinci ve altıncıları sırasıyla "-atcp" ve "-audp" dir. Bunlar en etkin ("a" advanced, gelişmiş anlamına gelmektedir) seçeneklerdir. Bu seçenekler ile portsentry dinlemekte olduğu TCP ve UDP, eğer ikisi de seçili ise, portlarının bir listesini çıkartmaktadır ve portsentry.ignore dosyasında yer almayan tüm bilgisayarların buraya bağlanmalarını engellemektedir.
Bunlar, ugulama ile gelen README dosyalarında daha güzel bir şekilde anlatılmıştır. Kaynakyazılımları yeniden yazmaya çalışmak ile, tekerleği tekrar keşif etmeyelim. README dosyaları mutlaka okunmalıdır.

Portsentry nasıl tepki vermektedir?

Portsentry loglar yaratmaktadır. Eğer, logları okumayan sistem yöneticilerinden iseniz, portsentry'yi logcheck ile birlikte kullanabilirsiniz. Bu durumda, portsentry, saldırı girişimi olduğu zaman size e-ileti göndermektedir.
TCPWrappers ile kullanılması amacıyla, portsentry saldırıda bulunan bilgisayarı /etc/hosts.deny dosyasına yazabilir.
Yerel bilgisayarınız, ağ üzerinden gelen trafiği çalışmayan (ölü) bir bilgisayara yönlendirebilir.
Son olarak da yerel bilgisayarınız, paket filtreleme uygulaması kullanarak gelen paketleri iptal (kesebilir) edebilir.
Portsentry'nin felsefesi hakkında biraz daha fazla bilgi sahibi olduğunuza göre, kendi portsentry.conf dosyanızı yazabilirsiniz.
- Yapılandırım dosyasının ilk bölümü portlar ile ilgilidir. İzlemek istediğiniz portları buradan seçiyorsunuz. Unutmayın ki, Linux'da gelişmiş seçeneği kullanıyorsanız, bunlar dikkate alınmayacaktır. İzleyeceğiniz portları dikkatli seçiniz (Sözgelimi, 6000 portu seçmeyin, bu X Pencere Sisteminin kullandığı bir porttur.).
- Bir sonraki bölüm, gelişmiş belirleme seçenekleri ile ilgilidir. Benimsenmiş değer olarak, ister TCP ve isterse UDP olsun, 1024 altındatüm portlar izlenmektedir. Burada istemediğiniz portları çıkartabilirsiniz. Ağ üzerinde Windos bilgisayarları varsa, yanlış alarmlardan kaçınmak istiyorsanız ve de çok fazla log oluşturmak istemiyorsanız, bu ayrı bir önem kazanmaktadır. Sözgelimi, 111 nolu portu kullanıyorsanız, bu portmap uygulamasını kullanıyorsunuz anlamına gelir, ve portsentry.ignore dosyasına ağ üzerindeki bilgisayarları yazmadıysanız, bu çılgınlık olur, çünkü portmap NFS (Ağ Dosya Sistemi) gibi RPC (Uzaktan Fonksiyon veya Prosedür Çağırma) sunucusu demektir, ben Sizi uyarmış oldum. Yani, NFS, UNIX bilgisayarlarında pek güvenli değildir, Windos lardan hiç sözetmeyelim bile.
İşte şimdi konu dışı olan kısım gelmektedir: "Windos" olarak yazıdığım şey bir yazım hatası değildir. Windows, DOS (Buradaki D dirty = kirli anlamındadır.) üzerine kurulmuş bir masaüstü sistemidir ve bu bana bir karakter daha az yazmamı sağlıyor (Ne kadar tembelim, öyle değil mi?). Biraz konu dışı oldu ama, pardon.
- Dosya yapılandırma bölümü (configuration files), portsentry'nin kullandığı dosyalar ile ilgilidir ve dikkate alınmayacak bilgisayarları tanımlamak için kullanılır. Eğer, benimsenmiş olan yükleme yapıyorsanız, burasına dokunmanız gerekmiyor.
- Miscellaneous config bölümünde DNS (isim sunucusu) kullanımını açıp kapatabilirsiniz.
- Cevap verme seçenekleri (response options) bölümün yapılandırmanın kalbini oluşturmaktadır. Burada portsentry'nin nasıl tepki vereceğini tanımlıyorsunuz.
İlk önce, dikkate alınmayacaklar gelmektedir. Taramaları kesebilir, kesmeyebilir veya dışarıdan başka bir komut çalıştırabilirsiniz.
Daha sonra, dropping routes bölümü gelmektedir. Burada portsentry'ye gelenleri nasıl kesebileceğinizi veya bilgisayaranızda kullandığınız paket filtreleme uygulamasından nasıl yararlanacağını söylüyorsunuz. Gereksiniminize uyan birini, ama sadece birini seçiniz!
- TCPWrappers bölümünde, /etc/hosts.deny dosyasına yazıp yazmayacağını seçiyorsunuz.
- Dış komutlar bölümünde, bir bilgisayar bağlantı kurduğunda hangi komutu çalıştıracağınız seçiyorsunuz.
- Tarama tetiği (scan trigger) bölümünde tepki süresini ayarlayabiliyorsunuz. Benimsenmiş değer "0" dır ve ilk bağlantı denemesi yapılır yapılmaz hemen alarm vermektedir.
- En son bölümde ise, saldırı denemesi durumunda, mesaj (banner) göstermek amaçlıdır. Bu -stcp ve -sudp (stealth) ile birlikte çalışmamaktadır.
Burasını tamamladıktan sonra hemen hemen işi bitirmiş olmaktasınız. Yine de, yanlış alarmlardan ve çok fazla sayıda log oluşturulmasından kaçınmak için, portsentry.ignore dosyasına tekrar bir bakınız. Buraya yerel ağ adresininizi ağ maskesi bitlerini belirterek ekleyebilir veya birkaç bilgisayarın IP adreslerini yazabilirsiniz.
İşte bu kadar! Artık "make sizinsisteminiz" ve "make install" komutlarını çalıştırabilirsiniz. Yükleme betiği, dizinler ve dosyalar için kısıtlı erişim hakları vererek, gerekeni yapmaktadır. Bundan sonra portsentry'yi istediğiniz seçenekler ile çalıştırmak yeterlidir. Neler olup bittiğini öğrenmek için loglarınıza bakın. Eğer, herşey yolunda gitti ise, portsentry çalışmıştır ve bilgisayarınızı daha güvenli bir hale getirmiştir.

Bundan sonra ne olmaktadır?

Nmap (Nmap ile ilgili daha fazla bilgi bu adreste bulabilirsiniz.) gibi uygulamalar kullanarak, güvenliğini yeni sağladığınız bir bilgisayara saldırı yapıyormuş gibi bir deneme yapabilirsiniz. Alacağınız cevap ise, aşağıdaki gibidir:

tarama yapılan bilgisayarda 
portsentry çalışmaktadır

İşte, bu bilgisayar saldırgana pek bilgi vermemektedir!
Genellikle tarama yaptığınız bilgisayar için bu deneme size, işletim sisteminin sürümünü ve açık olan portları verecektir. Bu bilgiler saldırganın işine yarayacaktır, çünkü o neye nasıl saldıracağını iyi bilmektedir. Tarama tetiği değeri 0 olan portsentry gelişmiş seviyede çalıştırıyorsanız, saldırıyı hemen kesebilirsiniz (durdurabilirsiniz). 1 değeri ile ve normal çalışma seviyesi kullanıyorsanız, saldırgan, işletim sistemi bilgisi ile birlikte açık olan portların listesini elde etmiş olur. Ama bu durumda, açık olan bir porta bağlanmaya çalıştığında başarılı olmayacaktır. Portsentry ilk denemeden sonra, portu kapatmıştır. Basit, ama etkili, öyle değil mi!
Eğer, TCPWrappers kullanıyorsanız, saldırganın IP adresi /etc/hosts.deny dosyasına yazılmıştır. Eğer, size gelen paketleri çalışmayan bir bilgisayara yönlendirmek isterseniz, portsentry yinde de etkilidir, ancak UPD paketleri ile gelen saldırılardan tam olarak kurtulmuş sayılmazsınız.
Eğer, paket filtreleme uygulaması kullanıyorsanız, saldırgandan gelen paketleri engelleyebilirsiniz.
Tabii, portsentry'nin tüm gücünden faydalanmanın en iyi yolu budur.
Yine de, Linux altındaki gelişmiş seçeneği ideal olanıdır. Bu, portsentry'nin diğer işletim sistemlerinde iyi çalışmadığı anlamına gelmemektedir, sadece biraz daha az "etkilidir", gerçekte böyle değil tabii!
Daha iyi anlayabilmek için, farklı işletim sistemlerinde ve fakrli çalışma seviyelerinde çalışan portsentry'nin log dosyalarına bir bakınız. Onlar herşeyi söylemektedir!
Kullanılan çalışma seviyelerine göre, loglar yanlış alarm verebilmektedir. Bilginin kalitesini yükseltmek için, yapılandırım dosyaları üzerinde çalışmanız gerekecektir. Birkaç denemeden sonra, istediğinizi tam olarak elde edebilirsiniz.

Portsentry'siz yaşayabilir misiniz?

Kesinlikle HAYIR! Bedeva veya paralı olan bir çok SBS vardır. Bazıları oldukça iyidir. http://www.snort.org adresinde elde edebileceğiniz ve herkesçe bilinen snort örnek gösterilebilir.
Genellikle, bu SBS pasiftir. Yani, bunları sadece saldırıdan haberdar olmak için kullanırsınız. Zaten bunun için tasarlanmışlardır. Sözgelimi, snort, oldukça karmaşıktır, çünkü, sizden kuralları yazmanızı istemektedir. Snort'un sanaldoku yöresinde, kurallardan oluşan bir veritabanı vardır. Bu arada çok fazla logtan korkmuyorsanız, snort ile portsentry'yi birlikte çalıştırabilirsiniz. Bu o kadar da saçma değil!
Ancak, portsentry'nin güçlü yanı, aktif SBS olmasıdır. Gösterdiği tepki yöntemi nefes kesicidir. Bunu bir paket filtreleme uygulamasıyla birleştirmek olmazsa olmaz araçlardandır. Aklımıza şöyle bir soru gelebilir : paket filtreleme uygulamaları portsentry'nin karşılığı mı yoksa, portsentry paket filtreleme uygulamaların karşılığı mıdır?
Herneyse, portsentry konusunda söyleyebileceğimiz birçok şey vardır. Sözgelimi, UDP taramalarını belirlerken çok dikkatli olmak gerekir. UDP ile ilgli sorunları anlayabilmek için kaynakyazılımları okuyun (tekrar !). Solaris 32700 sevieyelerinde, yani çok büyük numaralı TCP ve UDP portları kullanmaktadır ve dolayısıyla sorunlar yaratabilir. Bu makale, sadece giriş niteliğindedir ve hiçbir şekilde herşeyi kapsayan bir yazı değildir.
Bilgisayar güvenliği sadece sistem yöneticilerinin düşünmesi gereken bir konu değildir. İnternetin bu kadar hızlı gelişmesiyle, işler daha da kötüye gitmektedir. Yani saldırıya uğrama olasılığı hergün artmaktadır. Saldırıları hafife almayın! Unutmamak gerekir ki, bu araçlar sadece riskleri azaltmaktadır ve hiçbir şekilde %100 güvenlik sağlamamaktadır. Güvenlik araçları alanında daha fazla araştırma yapmak için nedenlerden birisi de bu dur.
Psionic'de çalışan kişiler, ticari bir araç yazılımı üzerinde çalıştıklarını ve bize "hayal kırıklığına uğramayacağımızı" söylediler. Bekleyelim ve görelim o zaman!
Bu arada portsentry'nin 1.1 sürümünü elde edip deneyiniz. Siz de hayal kırıklığına uğramayacaksınız. Psionic'deki kişiler harika iş çıkartmaktadırlar. Ayrıca, hostsentry de denemeye ve kullanmaya değerdir.
Harika bir zamanda yaşıyoruz, öyle değil mi?

Kaynaklar

Güvenlik sözkonusu olduğunda, aşağıdaki sanaldoku yöreleri mutlaka ziyaret edilmelidir. Artı, buradan size daha fazla bilgi içeren sanaldoku yöresi gönderebilirler, onlar da daha fazla bilgi içeren başka sanaldoku yöresi göndermektedir ... Bir Rus sözü ne der biliyor musunuz? Herşeyi okumak istemenizin tek sorunu, bu kadar uzun yaşayamayabileceğinizdir !!!
http://www.linuxsecurity.com
http://www.sans.org
http://www.infosyssec.org
http://www.securityfocus.com is
http://www.cs.purdue.edu/coast/hotlist/