original in en Georges Tarbouriech
en to tr Erdal MUTLU
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.
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.
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 ç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!
İ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 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.
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:
İşte, bu bilgisayar saldırgana pek bilgi vermemektedir!
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?
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/