Serbest yazılım araçları ile karmaşık ağların güvenliğini sağlamak

ArticleCategory:

System Administration

AuthorImage:

Georges Tarbouriech

TranslationInfo:[Author and translation history]

original in fr Georges Tarbouriech 

fr to en Georges Tarbouriech  

en to tr:Erdal Mutlu

AboutTheAuthor

Georges uzun zamandır Unix kullanıyor. Serbest Yazılım topluluğuna bize sağlamış oldukları müthiş güvenlik araçlarından dolayı teşekkür etmektedir.

Abstract:

Bu yazı ilk olarak Linux Magazine France dergisinin güvenlik ile ilgili özel bir sayısında yayınlandı. Editör, yazarlar ve çevirmenler, bu sayıda yer alan yazıları LinuxFocus'da yayınlanmasını kibarca kabul ettiler. Dolayısıyla, LinuxFocus yazıların İngilizceleri hazır olur olmaz yayınlayacaktır. Konuyla ilgili herkese çok teşekkür ederim. Bu özet, bu türden olan her yazıda yeralacaktır.

ArticleIllustration:

secure it

ArticleBody:[The article body]

Önsöz

Bilgisayar ağlaraındaki güvenlik konusu, 21. yüzyılın en büyük fırsatlarından biridir.
Ancak, endişe edilmesi gereken birçok alanda olduğu gibi, bu konuda da herkes konuşmaktadır ve bundan etkilenmesi gerekenler ise, olayın potansiyel yıkım boyutuna pek aldırış ettikleri yoktur. "En çok etkilenmesi gerekenler" kuşkusuz, sistemi veya yazılımları tasarlayanlardır. En iyi örnek yine Redmond'an geliyor, güvenlik sanki "denetim altında" tutmaktan çok, pazarlama anlamına gelen bir kelime gibi.
20. yüzyılın son iki çeyreği, Serbest Yazılımın ve onunla birlikte gelen felsefenin doğuşunu gördüğü için kendimizi şanslı sayıyoruz. Eğer, bilgisayarlarınızın, ağlarınızın, sistemlerinizin vs. güvenliğini artırmak "istiyorsanız", bakmanız gereken yer orasıdır. Serbest Yazılım topluluğu, diğer büyük yazılım şirketlerinin toplamından daha fazlasını yapmıştır.
Doğrusunu söylemek gerekirse, kullanılan araçlar herşeye çözüm getirememktedir ve bilgisayar ağların güvenliğini sağlamak sürekli yapılması gereken bir iş haline gelmiştir!
Bunun anlamı, hiçbir zaman bir ağ %100 güvenlidir diyemeyiz. Sadece riskleri azaltabilirsiniz. Burada göstereceğimiz ise, riskleri azaltmak için yapılması gerekenlerin küçük bir kısmıdır. Bu özel yazıyı okuduktan sonra (Yazarın notu : Bu yazı Linux Magazine France'ın güvenlik alanında odaklanmış özel sayısından bir kısımdır.), güvenlik hakkında biraz daha fazlasını öğrenmiş olacaksınız, ancak hiçbir şekilde ağınızın %100 güvenli olduğunu söyleyemeyeceksiniz. Sizi uyarmış olduk.
Ayrıca, bu yazı herşeyi içermemektedir. Bu konuda çok fazla yazı vardır ve bu yazı sorunun çözümünden de oldukça uzaktır. Dolayısıyla, işletim sistemleri, araçlar, yapılandırımlar, kullanım vs. gibi konularda herşeyden sözetmemizi beklemeyin.
Son olarak, bu yazının bazı kısımları LinuxFocus dergisinden alıntılara yer verilmiştir, ancak üzülmeyin, tabii ki yazarın izni ile: sonuçta yazar da aynı kişi olunca sorun yok demektir!

Sunum

İlk önce, az veya çok yaygın kullanılmakta olan sistemlerden oluşan karmaşık ağın yapısından söz edeceğiz. Ne kadar fazla işletim sistemi varsa, o kadar fazla karmaşıklık oluşmaktadır, çünkü tüm sistemler güvenlik uyarıları karşısında eşit işlem görmemektedir. Ayrıca, sunucu olarak kullanılan bilgisayarların ağda farklı işlevleri olmalıdır: bizim ağımız oldukça karmaşık olacaktır.
Daha sonra, güvenliği artırıcı temel araçlardan sözedeceğiz. Seçim yapmak zor: hepsinden sözetmek çok zordur. Tabii ki, bu araçları kullanarak bilgisayarlarınızı ve ağalarınızı nasıl koruyacağınızdan sözedeceğiz. Bir sonraki bölümde, sistemlerin güvenliklerini sağlama aşamasında, sistemler arasındaki farklılıklara da deyineceğiz.
Sonuç bölümünde de güvenliğin sağlanmasının nasıl "göreceli" bir sey olduğundan ve neden uzun vadeli bir süreç olduğundan sözedeceğiz.

Karmşık ağlara örnek

TCP/IP protokolünün dünyadaki tüm işletim sistemleri tarafından konuşuluyor olması avantajdır tabii ki. TCP/IP sayesinde çok farklı sistemler aralarında haberleşebilmektedir. Dolayısıyla, kullanacağımız ağda TCP/IP olacaktır tabii. başka bir deyişle, proprietary (özel) protokollerden, az kullanılanlardan ve eskimiş olanlardan sözetmeyeceğiz. Ayrıca, fiziksel ağ bağlantılarından, yani bağlantı şekillerinden, tiplerinden vs. de sözetmeyeceğiz.
Evet, bu ağ'da herşeyden biraz olacaktır. Unıx'ler, ticari veya ücretsiz: sözgelimi Solaris 2.6, veya SunOS 5.6, Irix 6.5, Linux (RedHat 6.2), MacOS X. QNX, NeXSTEP, NetBSD veya OpenBSD de ekleyebilirdik. Bir de NT 4.0'ı(Hayır, diğerlerini değil, onlar daha da kötüdür.) ekleyebiliriz. Buraya OS2'yi de ekleyebiliriz. Ayrıca, BeOS ve AmigaOS (Evet, bunlar hala yaşıyor, aslında pek değil!) da ekleyebiliriz.
Aranızdan bazıları şimdiden şikayet etmeye başlamıştır bile: ne, AIX, HP-UX bunlar yok mu? Hayır! Eğer, her Unix'ten sözedecek olursak, o zaman bu yazı için bir kitap bile yetmeyecektir. Ancak, temel güvenlik kuralları hepsi için geçerlidir.

Evet, şimdi bunlardan ne isteyeceğiz?
Sözgelimi, Solaris uygulama sunucusu, Irix yedekleme sunucusu, NT başka bir uygulama sunucusu olsun. Linux geçişyolu (gateway), bir başka Linux veritabanı veya http sunucusu olsun. Diğer tüm bilgisayarlar da istemci olsun. Ele alacağımız ağ, kimliklendirme için geçişsözcüğü dosyası kullanan yaklaşık olarak 30 adet bilgisayardan oluşsun. Daha karmaşık kimliklendirme yöntemlerini de, yanii de, yani NIS (Sarı Sayfalar), LDAP veya Kerberos seçebilirdik. İşleri basit bir şekilde yürütelim. Kullanıldığı durumda faydalı olabileceği halde, NFS'de kullanmayacağız, çünkü güvenlik sözkonusu olduğunda, her nekadar geliştirmeler yapıldıysa da, onu unutmanız gerekir. Fransa'da atalarımız söyle der : "Tüm yumurtaları aynı sepete koymayın.". Daha sonra, "belirsiz", ancak gerekli olan servisler veya protokoller ancak bir defa ve başka işi olmayan bilgisayarlarda çalışacaktır. Sözgelimi, bir http, bir ftp sunucu, tercihen Unix bilgisayarlarında olsun. Bazı Unix bilgisayarlar SSH sunucuları, bazıları da SSH istemcileri olacaktır. Bu konuya daha sonra tekrar geleceğiz. Biz durağan IP kullanacağız, DHCP değil. Başka bir değişle, basit yapılar kullanacağız! Bu tabii ki 50 adet bilgisayrın olduğu bir ağa uygulanabilir, daha fazla bilgisayardan oluşan sistemlerde bunu uygulamak kabus haline dönüşebilir.

Araçlar ve bunların kullanımı

Doğal olarak, bunu yapmanın birçok yolu vardır(TIMTOWDI). İdeal ortam, sıfırdan başlanıldığı ortamdır, yani bilgisayarlar yeni yüklenecek ve ağ yeni kurulacak. Ancak, bu sadece filmlerde olur! Şimdi, zamanla büyüyen bir bilgisayar ağı düşünelim, bilgisayrların bir yerden başka bir yere taşındığı, yeni bilgisayarların eklendiği vs. Sözgelimi "Mhz" yarışından dolayı, bu günlerde Intel bilgisayarları 3 seneden fazla yaşamamaktadır ve bunlara yedek parça bulmak da çok zor olmaktadır. Yapılabilecek iki şey vardır: ya bunları başka işlere kaydıracaksınız yada onlardan kurtulacaksınız, üzüntü verici ama gerçek! Diğer bazı bilgisayarlar daha uzun süreli kullanılabilmektedir ve geliştirmeye değerdirler. Bu konunun konu dışı olduğunu düşünmeyin sakın: bir sistem yöneticisi yüksek erişibilirliği de düşünmek zorundadır.

Basit olanlar

İşin ilk adımını "genellemeler" koyabilirdik. Bu adım kullanılmayan herşeyin kaldırılmasından oluşmaktadır: pekte kolay bir iş değildir! Her işletim sistemi, buna Unix'te dahil, hiç kullanmayacağınız, inanılmayacak sayıda servis ve protokol yüklemektedir. Ustanın sözü: hepsinini çıkarıp atın! Unix altında basit, ama kaba yol, /etc/inetd.conf dosyasındaki herşeyi kapatmaktır. Böylece, birkaç servisten kurtulmuş olacaksınız. Tabii, bu biraz abartılı bir yoldur, ancak birçok bilgisayarda kabul edilebilir bir yaklaşımdır. Bu, sizin gereksiniminize bağlı olan bir şeydir. Linux ve birkaç başka sistem altında, bazı servisleri kapatmak için chkconfig komutundan yararlanabilirsiniz.
Ayrıca, SUID/SGID olan dosyaları denetleyiniz ve "hatalı" biti kaldırmaktan veya programı etkisiz kılmadan çekinmeyin.
find / -user root -a \( -perm -4000 -o -perm -2000 \) -print
Komutu, size bu dosyalarının listesini verecektir. "s" biti kaldırmak için chmod a-s programadı komutunu kullanabilirsiniz ("s" bitini kaldırmak doğal olarak bazı fonksiyonellikleri kaybetmiş olursunuz, tabii ki bunun bir işlevi vardı).
"Tehlikeli" veya "riskli" olarak bilinen programları kaldırın. Sözgelimi, rsh, rlogin, rcp vs. gibi uzaktan komut çalıştıran programları. Bunların yerini SSH, çok başarılı bir şekilde alacaktır.
/etc, /var vs. gibi dizinlerin haklarını denetleyiniz. Bu dizinlerin hakları ne kadar kısıtlı olursa, o kadar iyidir. Sözgelimi, açılış betik programlarının bulunduğu dizinin (Birçok Unix'te bu dizin /etc/rc.d/init.d dir.) haklarını chmod -R 700 yapmak, hiç de kötü bir fikir değildir. Bu kural ağ üzerindeki diğer tüm bilgisayarlar için de geçerlidir : kullanmadığınız herşeyi kaldırım veya en azından iptal edin. NT için yapılandırım panelinden kapatabildiğiniz sayıda servisi kapatın. Yapılması gereken birçok "basit" şey var ve bu konuda yeteri kadar bilgi ortalıkta vardır.

Araçlar

İşe Unix ile başlayalım, çünkü o, güvenlik sorunlarını dikkate alınması gereken tek işletim sistemidir. Güvenlik ile ilgili muazzam sayıda serbest yazılım araçları vardır ve bunlar her (hemen hemen) Unix'te çalışmaktadır.

Şimdilik bilgisayraların kendi güvenliklerini sağlamakla başlayacağız, çünkü bilgisayar ağının güvenliğini sağlamak, onu oluşturan bileşenlerden geçmektedir. Bu araçların yüklenmeleri oldukça basit bir işlemdir. O yüzden bunların üzerinde çok fazla durmayacağız. Ayrıca, yüklenecek araçların parametre değerleri de sizin isteklerinize göre farklılık gösterecektir. Dolayısıyla bunların sistemlerinize yüklenmesi size kalmış. İlk gerekli aracın adı shadow utils dir. Bunun sayesinde geçişsözcüklerinizi kriptolayabiliyorsunuz. Şansımız var ki, bu araç birçok Unix işletim sistemi ile birlikte gelmektedir. /etc/shadow dosyası /etc/passwd dosyasından yaratılmaktadır.

Daha da iyisi, PAM (Pluggable Authentication Modules) kullanarak, kullanıcıların servis bazlı erişimi denetlenebilir. Herşey, servislerin yapılandırım dosyalarının bulunduğu ve genelde /etc/pam.d olan dizinden denetlenmektedir. Ftp, login, xdm vs gibi birçok servisi pam ile denetleyebilirsiniz. Dolayısıyla, sistem yöneticisi kimin neye hakkı olması gerektiğini denetleme imkanına sahip olmaktadır.

Kullanılması şart olan bir sonraki aracımız TCPWrapper dır. Bu da hemen hemen her Unix işletim sisteminde vardır. Kısaca, bunun sayesinde servislere olan erişimi bilgisayar bazında denetlenebilmektedir. Bilgisayarların erişimlerine izin verildiği veya engellendiği şu iki dosya ile denetlenmektedir: /etc/hosts.allow ve /etc/hosts.deny. TCPWrapper iki farklı şekilde yapılandırılabilir: ya servisleri taşıyarak yada /etc/inetd.conf dosyasını değiştirerek. Daha sonra da göreceğimiz gibi, TCPWrapper diğer araçlar ile birlikte de çalışabilmektedir. TCPWrapper ftp://ftp.porcupine.org/pub/security adresinden elde edebilirsiniz.

Diğer ilginç bir araç xinetd dir. Yine kısaca sözetmek gerekirse, xinetd inetd'nin yerini almakta ve daha fazla özelliklere sahip olmaktadır. xinetd ile ilgili daha fazla bilgi http://www.xinetd.org adresinden elde edilebilir.

Linux altında var olan ve onsuz yapamayacağınız bir araç vardır: adı Bastille-Linux. kendisini http://www.bastille-linux.org adresinden elde edebilirsiniz. Bu yazılım Perl programlama dilinde yazılmıştır ve çok etkildir. Programı çalıştırdığınızda çeşitli sorulara yanıt veriyorsunuz ve verdiğiniz cevaplara göre program sisteminizde ayralamalar yapmaktadır. Her sorunun ayrıntılı açıklamaları verilmektedir. Yapılan değişiklikleri geri alabilirsiniz, yeni yapılandırım ile işe başlayabilirsiniz, yapılanları görebilirsiniz vs. Herşey yapılabilir! Ayrca, ateşduvarı yapılandırılması yapmak da mümkündür. Bu konuya daha sonra döneceğim. Bu yazının yazımı sırasında Bastille-Linux'un sürüm numarası 1.1.1 idi, ancak 1.2.0 sürümü çoktan çıkmaya aday. Bu sürüm daha da geliştirilmiş ve Tk tabanlı grafik arabirimi ile kendi Perl modülü birlikte gelmektedir. (Yazarın notu: Bu yazı birkaç ay önce yazılmıştı, dolayısıyla Bastille-Linux'un şu anki sürümü 1.3.0 dir.).

Intrusion detection sistemleri (Saldırı yakalam sistemleri) çok önemlidir. Bu konuda iki "ağır" top, snort ve portsentry dir. İlkini http://www.snort.org adersinden, ikincisini ise Abacus sanaldoku sayfası olan http://www.psionic.com adresinden elde edebilirsiniz. Bu ikisi karşılaştırılmamalıdır: ilki geneldi bilgi sağlayan bir NIDS (Network Intrusion Detection System, Ağ Saldırı Yakalam Sistemi) dir, diğeri ise bilgisayar odaklı ve daha aktif dir. snort'un birçok seçeneği vardır ve ağınızı istediğiniz gibi denetleyebilirsiniz. Herşeyi dinleyebilirsiniz: gelen, giden, ateşduvarı içinden veya dışından. Tabii, bu durumda çok büyük çetele dosyası yaratacaktır. Ne istediğinizi bilmelisiniz! Programın Win 32 sürümü de vardır. Eğer, bu "sistemler" için varolan serbest yazılım araçlarını düşünecek olursak, bu önemlidir.

portsentry'nin çok ilginç bir özelliği vardır: İsteğiniz doğrultusunda taranan bağlantı noktalarını kapatabilir. Saldırganı ya kullanılmayan bir adrese veya ateşduvarına yönlendirebilirsiniz. Kimlerin erişimi kısıtlanacağı veya kısıtlanmayacağı size kalmış. Şimdi TCPWrapper geri dönelim: portsentry istenildiğinde /etc/hosts.deny dosyasına yazabilir. Böylece, portsentry çok etkili olmaktadır. portsentry'nin bağlantı noktalarını kullanma felsefesine girmek istemiyorum. Konu ile ilgili daha çok ayrıntı öğrendikçe kararı kendiniz verebilirsiniz. Ayrıca, portsentry bilgisayarınızı "görünmez" yapabilir, hiç de fena değil, öyle değil mi? Son olarak, portsentry'nin farklı çalışma seviyeleri vardır. Bunlardan en gelişmişi Linux (en azından şimdilik) için olan "reserved" dir.

Kriptolamadan sözetmeden güvenlik konusunda konuşmamız mümkün olmaz. Ancak, kriptolama ile ilgili yasalar ülkeden ülkeye farklılık göstermektedir ve hatta bazen kullanılması tamamen yasaktır.
Yazarın notu: Bundan sonra gelen bölüm sadece Fransa'daki yasalar ile ilgili olduğu için yazının İngilizce (dolayısıyla Türkçe) olanından çıkarılmıştır.
Sonuç: Eğer, ülkenizin yasaları elveriyorsa, ssh istemcilerini ve sunucularını UNIX bilgisayarlarına yükleyip kullanabilirsiniz (Tabii ki, gerekiyorsa.).

UNIX araçları konusunu bitirmeden önce, ticari UNIX'lere ait olanlarından da sözetmek gerekekir. Solaris altında, ndd, aset; Irix altında ipfilterd; MacOS X ssh, ipfwadm vs. gibi serbest yazılımları kullanabilirsiniz.
Bu konuya daha sonra tekrar döneceğim.

Evet, şimdi de tek ve yanlız olan (şans eseri!) NT (Not Terminated = tamamlanmamış) 4.0'dan sözedelim. Burada serbest yazılımdan sözedemeyeyiz, ancak Redmond'taki adam bize sistemin özelliklerini geliştirici "serbest" şeyler (Hata düzeltme ile bunların ilgisi yok, çünkü bu sistemde hata yok!) sağlamaktadır. Güvenlik konusuna gelince, NT 4.0 bir model ... absurdity modelidir. Herneyse, buna göre tek yapmanız gereken en son servis packlerini (Bu yazının yazıldığı sırada 6 idi.) ve HotFix'lerini (bunlar güvenlik yamalarıdır) çekip yüklemektir. Daha sonra ... bazı serbest araçlar elde edebilirsiniz (Buradaki serbest kelimesi, kaynak programları olmaksızın serbestçe elde edebilme anlamındadır.). İşte bu kadar.

Diğer sistemler için arama yapmanız gerekmektedir. AmigaOS'un geliştirilmesi pek fazla insanı motive etmemektedir ve TCP/IP katmanı da biraz eskidir. BeOS'a gelince, burada da işler pek parlak değildir. Bu müthiş işletim sistemin gelecek vaat eden özellikleri ve Bone adında henüz tamamlanmamış bir ağ katmanı vardır.
(Yazarın notu: maalesef artık BeOS ölmüş durumdadır. Sadece birkaç kişi bunu serbest yazılım olarak ayakta tutmaya çalışmaktadır... ve kendileri çok güzel bir iş yapmaktadır.)
Orada da, bazı şeyleri iyileştirmek için UNIX dünyasında çeşitli araçlar bulmanız mümkündür.

Bilgisayar güvenliğinin sağlanması

Şimdi herşeyi yapılandırmanız gerekecektir! Her UNIX ile birlikte shadow araçları, PAM, TCPWrapper geldiğini ve tüm gereksiz servislerin kapatıldığını, "hassas" olan dizinlerin ve dosyaların erişim haklarının kısıtlandığını varsayalım.

Linux sistemlerinde Bastille-Linux programını çalıştırmanın tam zamanı. Bu araç hemen hemen tüm Linux dağıtımlarında çalışıyor olması gerekir. Ancak, asıl olarak RedHat ve Mandrake için yazılmıştır. Sorulan sorulara en kısıtlı haklar verecek şekilde cevap vermekten çekinmeyin.
Gateway (geçişyolu, gişe) olarak kullanılan Linux bilgisayarının en az sayıda program içerecek şekilde yüklenmeniz gerekmektedir. Http, ftp vs gibi birçok servisi kaldırabilirisniz. X11'i de kaldırın, ona gereksiniminiz yoktur! Kullanılmayacak olan yazılımları da kaldırın... yani yaklaşık herşeyi. Gereksiz servisleri kapatın. Sonunda ps ax komutunun çıktısı ekranının yarısını bile kaplamayacak kadar bir sistem elde etmiş olacaksınız. Eğer, IP Maskelemesi kullanıyorsanız lsof -i komutu, sadece bir satır (Bağlantı beklemekte olan sunucu ile ilgili olanı olduğunu ve kalıcı bir bağlantı olamadığını düşünmekteyiz.)
Linux bilgisayarlarına açılışta otomatik olarak "ileri" seviyede (Sadece Linux'ta olan bir çalışma seviyesi, yani -atcp ve -audp seçenekleri ile çalıştırılan portsentry.) çalıştırılacak, portsentry programını yüklenmelidir. Bu ise, bilgisayarınıza TCPWrappers ve bir ateşduvarı yüklenmiş olduğu anlamına gelmektedir. Bu konya daha sonra tekrar deneceğiz.

Solaris için aset ve ndd komutlarını kullancağız. Bu konuya da daha sonra tekrar döneceğiz. Tabii ki portsentry de yüklenenmiş olacaktır. IP Filter ve RPCbind'ı standart sürümü yerine, porcupine.org'un 2.1 sürümü de yükleyebiliriz. Irix için adından da anlaşıldığı gibi, ipfilterd'yi paket filtre programı olarak yükleyeceğiz. Bu program Irix sürümleri ile birlikte benimsenmiş olarak gelmektedir, ancak benimsenmiş değer olarak yüklenmemektedir.

NT'ye gelince, bu biraz daha karışıktır... En radikal çözüm, 137 ve 139 bağlantı noktalarını (port) kapatmaktır, yani meşhur NetBIOS (Belkide NetBIOS'u tamamen kaldırmalıyız.) ... ancak o zaman geriye ağ diye birşey kalmayacaktır (Yani Windows ağı kullanılamaz duruma gelecektir.). Bu uygulama sunucusu kullanımı sözkonusu olduğunda küçük bir sorun olabilir! Snort'u da yükleyebilirsiniz tabii ki, ancak çok fazla güvenlik sağlamanız zor. Dizinlere, bölmelere vs. olan erişimler konusunda çok kısıtlayıcı davranmalısınız. Bu durum NTFS kullanıyorsanız geçerlidir. Guest (misafir) kullanıcı hesabından kurtulmanızı sağlayan ve serbest olarak elde edebileceğiniz bir program var. Ancak programın kaynak kodu kapalı. Bulabildiğiniz tüm güvenlik yamalarını yükleyin!

Ekzotik işletim sistemleri için araştırma yapmanız ve bulduklarınız arasında seçimler yapmanız gerekecektir. Her zaman olduğu gibi, en az sayıda aktif servis kullanmak felsefesini takip etmeniz sizin yarına olacaktır.

Ağ güvenliğinin sağlanması

Eğer, bilgisayarlar "düzgün" bir şekilde hazırlanmışlar ise, yarı yolu geçmiş sayılırsınız. Ancak, daha ileriye devam etmeniz gerekecektir. Madem ki, serbest yazılımlardan sözediyoruz, geçişyolu bilgisayarında kullanılmak üzere serbest olan bir ateşduvarı yazılımını seçeceğiz. Tabii ki bir Linux bilgisayarı ile Bastille-Linux ateşduvarını kulalnacağız. Çekirdek sürümüne göre ipchains veya ipfwadm kullanmaktadır. Eğer, 2.4 çekirdeklerinden birini kullanıyorsanız iptables kullanmaktadır.

Biraz sitem: güvenlik sözkonusu olunca, tüm sorunları birden çözmeye yeltenmek herzaman iyi fikir değildir. En son çekirdek sürümünü kullanma "yarışı" bazen olumsuz sonuçlar doğurabilir. Buradan, yeni çekirdek için yapılan çalışmaların iyi olmadığı sonucu çıkmamalıdır. Ancak, var olan ve yeni şekilde çalışmak için tasarlanmamış programlarda uyum sorunları çıkabilir. Bir öneri: sabırlı olun! 2.4 çekirdeği ile birlikte gelen ateşduvarı birçok özelliği ile birlikte gelmektedir, ancak biraz "gençtir". Yani gerisi size kalmış...

Bastille-Linux ateşduvarı hem basit ve hemde etkili bir yazılımdır. Ancak, bundan daha yetenekli bir araç var, benzin istasyonu gibi birşey, adı T.REX dir. http://www.opensourcefirewall.com adresinden kendisini elde edebilirsiniz. Eğer, çok karmaşık serbest yazılım arıyorsanız, işte bu öyle bir araçtır.

Proxy (vekiller) ler gibi, başka çözümler de vardır. Ancak, bunlar da herzaman daha iyi sonuç vermemektedir. Bir şey daha: vekillere bazen ateşduvarı da denmektedir. Herneyse, her ikisi de iki ayrı şeydir. Bizim sözünü ettiğimiz ateşduvarları, paket filtreleridir ve kimliklendirme (authentication) yöntemi içermemektedirler. İki çeşit vekil sunucusu vardır: uygulama ve socks. Kısaca, uygulama vekil sunucusu sizin için işi yerine getirmektedir ve kullanıcı kimliklendirmesi vardır. Bundan dolayıdır ki, bir ateşduvarı sunucusundan daha fazla kaynak kullanımına gereksinim duymaktadır. Ancak, bir ateşduvarı sunucusunu kırmak için 15 dakikaya gereksinim vardır. Bunu bilmek hoş, öyle değil mi? Dolayısıyla, bilgisayarlarınızın ve ağınızın güvenliğini sağlarken sadece ateşduvarlar ve vekiller ile yetinmeyin.

Bir ağdaki riskleri azaltmak için kriptolama kullanılabilir. Sözgelimi, telnet kullanmak, saldırganlara kırmızı halı üzerinde yürüyerek sisteminize girmelerini sağlamak gibi birşeydir. Yani, dükkanın anahtarlarını teslim etmenin başka bir yoludur. Açık metin olarak aktarılan verileri görmekle kalmıyorlar, aynı zamanda da kullanıcı geçişsözcüğünü de elde etmiş olurlar, hoş öyle değil mi? Dolayısıyla, telnet yerine ssh kullanın. Eğer, telnet kulanmak zorunda iseniz, güvenli bir bağlantı üzerinden kullanın. Başka bir deyişle, telnet bağlantı noktasını güvenli olanın üzerine yönledirin. Bu konu hakkında daha fazla bilgi "Tünel geçişi" ( LinuxFocus, Mayis 2001, yazı 202) yazısından elde edebilirsiniz.

Tamam, güvenliğimizi artımayı denedik, ancak şimdi yaptığımız işi sınamamız gerekmektedir. Bunun için saldırgan gibi davranmaya çalışalım, yani onların kullandıkları araçları kullanalım. Biraz garip, öyle değil mi? Bu alnda da güzel araçlar vardır. Ben nessus ve nmap'i seçeceğiz. Nessus'u kullanmak için nmap'e gereksiniminiz vardır. Bu araçlar bağlantı noktası tarayıcılarıdır, nessus ise bundan daha fazlasını sağlamaktadır. Kendi güvenlik açıkları veritabanı ile yaptığı karşılaştırmalar sonucunda nessus, sistemdeki güvenlik açıkları konusunda sizleri uyarmaktadır. Bu araçları çalıştırmak ile, kullandığınız işletim sistemleri arasında fark gözetmeden, bilgisayarlarınızın zayıf noktalarını öğrenebilirsiniz. Sonuçlar oldukça ilginç çıkmaktadır. Bunu için bu araçları kullanmak artık şart olmuştur. Nmap programını http://www.insecure.org ve nessus da http://www.nessus.org adresinden elde edebilirisniz.

Bu yazının başından beri bazı bilgisayarların İnternete açık oldukları yerel ağların güvenliğinden sözediyoruz. İnternet servis sağlayıcısı durumunu ele alırsak, olaylara başka boyutlar eklenmektedir ve de biz bu konun ayrıntılarına burada girmeyeceğiz. Burada sözü edilenler geçerliliğini korumakla beraber, VPN (Virtual Private Network, Sanal Özel Ağ) vs. gibi çok daha karmaşık yöntemler kullanmanız gerekecektir. Bizim incelediğimiz duruma göre kısıtların çok daha farklı olduğu bir konudur bu. E-ticaret konusuna ise, hiç girmeyelim. Onlara güvenli sanaldoku yöreleri denmektedir! Duymak bile istemiyorum... Kredi kartı numaranızı İnternette kullanıyor musunuz? Eğer, evet ise, oldukça cesur olmalısınız. Öneri: Eğer, Fransızca okyabiliyorsanız http://www.kitetoa.com yöresine bir gözatmanızı öneririm.

Sistem farklılıkları

Daha önce de söylediğimiz gibi, düşmanın karşısında sistemler eşit değildir. Bazıların çok iyi yetenekleri vardır, bazıları ise korumasızdır (Şey, tam değil!). Paradoksa bakın ki serbest olan işletim sistemleri daha iyi durumdadır. BSD ailesi (OpenBSD, NetBSD, FreeBSD) ve çeşitli Linux dağıtımları güvenlik sözkonusu olunca oldukça önlerde yeralmaktadır. Tekrar belirtmek gerekirse, bu serbest yazılım topluluğunun bir başarısıdır. Diğerleri ve hatta Unix etiketli olanlar bile daha az yeteneklidir. Unix olmayanların durumu ise daha kötüdür!

Bu yazıda sözü edilen tüm araçlar serbest olan işletim sistemleri için geliştirilmiştir. Birçok ticari Unix işletim sistemleri bunlardan faydalanabilir. Ancak, genelde bu ticari Unix'lerin kendi araçları vardır. Sözgelimi, Solaris'te ndd ve aset bulunmaktadır. İyi bilinenin aksine, Sun sistemleri bir güvenlik modeli değildir. aset, erişim hakları sözkonusu olunca durumu biraz daha iyileştirmektedir. Düşük, orta ve yüksek olmak üzere, aset üç güvenlik seviyesi sunmaktadır. Programı komut satırından veya cron işi olarak çalıştırabilirsiniz. Çalışan bir ağda durum değişim göstermektedir. Saat 5'te doğru olan şey ile 5:30'da olan yanlış olabilir. Dolayısıyla, komutları periyodik olarak çalıştırma gereksinimi duyulmaktadır. İsterseniz, yarım saatte bir, isterseniz saat başı veya istediğiniz aralıklarla, dosya, dizin, vs. erişim haklarını denetlemeniz mümkündür.
ndd ile IP-yığıt parametrelerini değiştirmeniz mümkündür. Sözgelimi, sistemin izlerini saklayabilirsiniz. Kimliği belirlenmiş bir sistem, saldırganların neye saldıracakları bilgisini verdiği için, güvenlik açısından daha çok tehlike altındadır. ndd ile TCP Maximum Segment Size (MSS) değerini değiştirebilirsiniz. benimsenmiş değer olarak Solaris 2.6 536 olarak kullanmaktadır. ndd -set /dev/tcp tcp_mss_def 546 komutu, bu değeri 546 olarak değiştirmektedir. MSS değeri ne kadar büyük olursa o kadar iyi (çok yüksek olmasın!). Nmap, bu zayıf noktayı bulabilme özelliğine sahiptir. Eğer, Solaris sistemleriniz varsa, bu komutu kullanmaktan çekinmeyin. Komutun birçok seçeneği vardır, bunun için man ndd sayfasına gözatabilirsiniz.
Ayrıca, ftp://coombs.anu.edu/pub/net/ip-filter. adresinden elde edebileceğiniz IP filter programını da kullanabilirsiniz.

Irix'e gelince, durum biraz daha farklıdır. SGI (eski Silicon Graphics), isminden de anlaşıldığı gibi, sistemlerini grafik odaklı tasarlamaktadır. Güvenlik amaç değildi. Gereksinimler doğrultusunda, Irix sürümlerinde ipfilterd eklendi, ancak benimsenmiş değer olarak yüklenmemektedir. ipfilterd tabii ki paket filtrelemesi için kullanılmaktadır. Yani, nelere izin verileceği veya verilmeyeceği bununla ayarlanabilmektedir. Program, ipfilterd.conf dosyasından yapılandırılmaktadır. Bu dosyada yapılandırma işlemi sırasında beklenmeyen boşluklar ve boş satırlar sorun yaratmaktadır. "mars" adlı bilgisayara "jupiter" adlı bilgisayar ile haberleşme imkanının verilmesi için
accept -i ec0 between jupiter mars
komutu kullanılabilir. Bu dosyada yeralmayan bilgisayarlar jupiter adlı bilgisayara erişemeyecekler. Daha da kötüsü, ipfilterd_inactive_behavior parametresini systune ile değiştirmezseniz, hiç kimse bu makinaya erişemeycektir! Etkili, öyle değil mi? Bu parametrenin benimsenmiş değeri 1 dir ve siz systune -i ipfilterd_inactive_behavior 0 komutunu kullanarak onu 0 olarak değiştirmelisiniz.
Çok yaygın olarak bilinen bir başka şeyi hatırlatmakta fayda vardır: Irix'in fam (File Alteration Monitor) adında "harika" bir güvenlik açığı vardır. Bu program çok güzel bir özellik taşımaktadır: çeşitli servisler bunun aracılıyla haberleşmektedir. Bunun sayesinde dosya yöneticisi o güzel ikonları gösterebilmektedir. Herneyse, yapılabilecek tek şey var, o da bunu kaldırmak! Üzücü, ama gerçek.

UNIX sistemleri ile olan kısmı bitirirken QNX'ten de sözedelim. QNX güvenlik konusunda çok kötü durumdadır, ancak serbest yazılım araçlarından faydanmak mümkündür. Mac OS X, bu yazılımların bazılarını kullanmaktadır.

Biraz da diğer ağ sistemlerine referans olan ve türünün tek örneği NT 4.0'dan sözedelim. Redmond kralının (ve bazı başka kişilerin) söylediklerinin tersine, bu sistemi güvenli kılmak bir utopyadır. Nessus'u kullanarak bir saldırı simulasyonu yapacak olursanız, kabus görmüş gibi olursunuz. NetBIOS aktif olduğu sürece, alanda bulunan tüm bilgisayar isimlerini, kullanıcıları ve yöneticileri ile birlikte nessus ile elde etmiş olursunuz. Çözüm: NetBIOS'tan kurtulun! Ancak, daha önce de söylediğimiz gibi, o zaman ağınız da olmaz... Seçim size kalmış.
Sisteme guest kullanıcısı olarak NULL oturumu (yani kullanıcı adı NULL ve geçişsözcüğü NULL) ile girilebileceğini, nessus size kibarca söyleyecektir. Pek iyi daha sonra? Buna benzer şekilde devam edin!
NTFS bölmelerine olan erişimleri kısıtlayınız. FAT bölmeleri için yapılabilecek birşey yok. Kullandığınız yazılımlara göre, FAT dosya sistemine gereksiniminiz olabilir, çünkü bazı yazılımlar NTFS ile çalışmamaktadır. Son olarak, müthiş IIS sunucusunu kullanmaktan uzak durun, özellikle ftp sunucusu olarak. Aslına bakarsanız,onu hiç yüklemeyiniz. Eğer, bu günlerde birçok ISP bunu kullanma deliliğini gösteriyorsa, onlara tek yapabileceğimiz iyilik Apache'yi önermektir ... IIS'e yeterince zaman harcamadık mı? Konuyla ilgili çok fazla sayıda yayın zaten vardır.
Aslında, bu sistemi de daha güvenli hale getirmek mümkün. Sorun şu ki, buna bir dergi yazsak yeterli olmaz. En iyisi en önemli noktalardan sözedelim. Microsoft dünyasından sözettiğimiz sürece güvenliği serbest yazılımlar ile sağlayamayacağımız açıktır. İlk öneri ServicePack 4 ile gelen MMC (Microsoft Management Console) nin MSCE (Microsoft Security Configuration Editor) kullanmaktır. Ancak, çok dikkatli olun! Eğer, bir hata yaparsanız, yandınız! Doğal olarak bu yazılım İngilizce'dir ve eğer, İngilizce olmayan bir sistem kullanıyorsanız, Redmond'un dünyasında farklı dilleri birarada kullanmak hiçbir zaman iyi sonuç vermemektedir. Benden uyarması. Diğer şeylerin yanısıra, sistem yöneticisi hesabını da güvenlik altına almanız yada iptal etmeniz şarttır. SP 3'te yer alan passprop bir bakınız. passfilt dll kullanarak registry den geçişsözcüklerinizi tahmin edilmelerini güçlendirebilirsiniz (Bunu icat edenlerinin hep LSD'den etkilendiklerini düşünmüşümdür.). Meşhur guest hesabını kapatınız. Pek kullanışlı bir kullanıcı hesabı değilidir (Yukarıya bakınız.), sadece sorunları artırmaktadır. Yapabileceğiniz, registry kullanarak çetele dosyalarına olan erişimini kısıtlamaktır. "HKEY_LOCAL_MACHINE" de System\CurrentControlSet\Services\EventLog\Application, Security ve System olarak iki değer yaratınız. Adları "RestrictGuestAccess", tipleri REG_SZ ve değerleri 1 dir. Geçişsözcüklerini syskey ile kriptolayabilirsiniz. Dikkat, bu işlemden sonra geriye dönüş yoktur! En azından bazı iyi haberler var: guest hesabının erişim haklarını kısıtlayabilirisniz. Yine registry de değişiklikler yapacağız. "HKEY_LOCAL_MACHINE" kısmındaki System\CurrentControlSet\Control\Lsa anahtarının, "RestrictAnonymous" adında, "REG_DWORD" tipindeki değerini 1 yapın. Ancak, bu değişikliklerin ağ yapılandırımlarını da değiştireceğini unutmayın. Bir de yapılandırma panelindeki ağ uygulamalarından, bazı bağlantı noktalarına olan erişimi kısıtlamanız mümkündür. TCP/IP özelliklerinden "Advanced (Gelişmiş)" seçin ve "Activate security" kutucuğunu işaretleyin (Sanırım adı böyle bir şeydi, ancak evde böyle bir şey olmadığı için kontrol edemiyorum.) ve aktif hale getirmek istediğiniz bağlantı noktalarını seçiniz. Burada da dikkatli olmalısınız. Ne yaptığınızı bilmek zorundasınız, yoksa bazı servisleriniz çalışmayabilir.
Daha birçok şey yapılabilir, ancak bunlar esas olanlarıdır. Daha bilgi istiyorsanız, sans.org yöresini ziyaret edebilirsiniz. Orada tonlarca belge vardır.

İşlerin inanılmaz hafifliği

Evet, bütün bunları yaptınız. Tüm ağı taramak için nessus çalıştırdınız ve hala güvenlik açıkları olduğunu görüyorsunuz. Açıkların nereden geldiğini söylemeyeceğiz, çünkü zaten biliyorsunuz! Bu güvenlik açıklarını kapatmayı deneyiniz. NetBIOS ile birlikte gelen tüm güvenlik açıklarını kapatmanız zor, ancak sisteme verilebilecek zararları en aza indirmeniz mümkün. Alt alanlar yaratın. Sistem yöneticisi olarak sisteme girmeyin. Yamaları yükleyin. Tüm bu sistemleri geçiş kapısı olarak kullanabileceğiniz UNIX lerin arkasına saklamaya çalışınız. Ağ canlı bir varlıktır ve sürekli olarak birşeyler olmaktadır. İyi bir sistem yöneticisi "paranoid" olandır. Yani, sürekli olarak güvenlik açıklarının listesini takip eder, denetleme işlemlerini otomatikleştirmek için betik programları yazar. Sözgelimi, SUID/SGID programlarını, kritik dosyaları, çetele dosyalarını vs. denetlemek amaçlı programlar yazar. Birkaç arkadaş daha edinmek için disket ve CDROM sürücülerini kilitleyin. İzniniz olmadan kullanıcılarının İnternetten yazılım indirmelerini kabul etmeyin. Microsoft dünyasında herzaman olduğu gibi, bunlar çalıştırabilir yazılımlardır. Kullanıcılara, e-iletiler ile gelen Excel ve Word belgelerini açmalarına izin vermeyin. Biliyorum, bu faşizm gibi bir şey, ancak macro-virüslerine karşı başka ne yapabilirsiniz? Outlook gibi ürünleri kullanmayın. Aslında ne istediğiniz bilmeniz gerekmektedir! Biliyorum, söylediklerimi uygulamak zor ve kullanışsız. Ancak, bu ürünleri kullanrak güvenlikten sözedebilir misiniz? Meşhur "I love you" pek ders vermişe benzemiyor.
UNIX ortamlarında da İnternetten çekilen dosyalar da denetlenmelidir. Dosyaların checksum'ları boşuna verilmemiş olsa gerek.

Periyodik olarak ağınızı, çetele dosyaları, betik programları, taramalar vs. ile denetlemeyi alışkanlık haline getirin. Göreceksiniz, olaylar oldukça hızlı değişmektedir ve de değişim iyi yönde olmamaktadır.
Son olarak, yedekler konusunda hiçbirşey söylemedik ama, yedek almayı sakın unutmayın. Yedekleme stratejisi hep aynıdır: günlük, haftalık ve aylık yedekleme yapınız. Bir Unix bilgisayarı da sorunlar yaşayabilir, her nekadar seyrek de olsa. Bazen de kullanıcılar hata yapmaktadır, sık olmasa da. Biliyorsunuz, sorunların kaynağı ya makinalardadır, yada bunlara bakmakla yükümlü bölüme :-(

En azından bitti!

Eğer, bu bölüme kadar geldiyseniz, istekli olduğunuz anlaşılıyor. Sorun şu ki, biz konuya ancak yüzeysel olarak değinebildik! Güvenlik konusunun sonu yok ve sadece bilgisayar ağlar ile sınırlı değildir. Güvenlik açıkları bulunan uygulamalar ağ güvenliğini bozabilir. Yanlış ayarlanmış bir ateşdurvarı, hiç olmamasından çok daha kötüdür. Bir UNIX bilgisayarı normalde binlerce dosya içermektedir. Bunlardan birinde güvenlik açığı olmadığından kim emin olabilir? Bir saldırganın 128 bit anahtarı çözmeye yelteneceğini kim düşünebilir? Tekrar tekrar söylüyorum, var olan tüm güvenlik araçlarını yükleyebilirsiniz. En ufak bir güvenlik açığı kaldığı anda, "kötülüğün" geçeceği yer burası olacaktır.

Güvenlik aynı zamanda bir davranış biçimidir: olan biteni takip edin. Sözgelimi, güvenlikile ilgili olan sanaldoku yörelerini düzenli olarak ziyaret edin. Aynı şey kullandığınız işletim sistemlerin sanaldoku yöreleri için de geçerlidir. Sözgelimi, önerilen yamaları SUN aylık olarak yayınlamaktadır. Her üç ayda bir SGI yeni Irix sürümü çıkartmaktadır. Microsoft sıkça ServicePacks ve HotFixes sağlamaktadır. Linux sürümü dağıtıcıları, keşif edilen güvenlik açıklarına karşılık erreta lar yayınlamaktadır. Böyle devam edecek olursak, liste uzayıp gidecek. Kısacası, bu iş savsaklamaya gelmez.

Sonuçta, bütün bunlar ağınzı biraz daha güvenli yapmaya yaramaktadır. %100 güvenli bir ağ oluşturma beklentisi doğru değildir. Hatta, belli bir zaman aralığı için bile (Eğer, tüm bilgisayarları kapatırsanız başka tabii.). Yani, bu işi yapmak için paranoid olmaya gerek yok... ancak faydası olduğu kesin! Ancak, günlük hayatınızda bu şekilde olmayın, bu en azından sizin etrafınızdaki insalar için daha iyi olacaktır...

Referanslar

Hayat sıkıcıdır: şimdi biraz eylenelim!

Bu işi yapmanın başka bir şekli job ;-)