| Editor Login | Register | ||
| Root > Bilgisayar > Linux |
|
|
| Linux Security-2 |
Şöyle bir göz atılması gereken sonraki konu, yerel kullanıcılardan gelen saldırılara karşı sistem güvenliğiniz konusu. Kullanıcıların yerel olduğunu söyledik mi? Evet! Sistem saldırganlarının root hesabına giden yollarındaki ilk şeylerden bir tanesi yerel bir kullanıcı hesabına erişim elde etmektir. Bu saldırganlar, gevşek bir yerel güvenlik ile, kötü ayarlı bir yerel servis veya çeşitli böceklerden yararlanarak, normal kullanıcı erişimlerini root erişimine terfi ettirir. Eğer yerel güvenliğinizin sıkı olduğundan emin olursanız, saldırganın üzerinden atlaması gereken başka bir çit daha oluşturmuş olursunuz. (Ç.N.: İngilizce bug (böcek) kelimesi, bilgisayar dünyasında, yazılımların, yazarları tarafından önceden tahmin edemedikleri, çalışma zamanında, yani çalışırken ortaya çıkan hataları kastetmek için kullanılır. Bununla ilgili anlatılan bir hikaye, bilgisayarların henüz bir oda büyüklüğünde olduğu zamanlarda, bir böceğin bilgisayarın içine girerek kısa devreye sebep olduğu, böylelikle o anda çalışmakta olan yazılımın görevini yerine getirememesine yol açtığı şeklindedir. Bu olay, ilk yazılım böceği olarak anılır. Genelde böcek kelimesi, yazılımların çalışırken, çoğunlukla beklemedikleri veya kontrol etmedikleri bir girdi karşısında ne yapacaklarını bilememeleri, yahut da kendilerine işletim sistemi tarafından yasaklanmış olan bazı şeyler yapmaya kalkmaları yüzünden göçmesi ile sonuçlanan yazılım hataları için kullanılır. Bu yazılım hataları, önemli bir oranda denetimin yazılım dışına çıkmasına ve işletim sistemine devredilmesine yol açar. Bunu bilen bir saldırganın, yazılımın bıraktığı yerde, işletim sistemi henüz devreye girmemişken, denetimi devralarak kendi yararına olan yazılım kodu parçacıklarını sistem üzerinde çalıştırmasına olanak sağlar. Bu yüzden daha önce bahsedilen, yazılım sürümlerinin güncel tutulması özellikle önem kazanmaktadır. Çünkü bir yazılımın bulunmuş böcekleri, bir sonraki sürüm çıkmadan önce temizlenir. Hatta bazı güncellemeler, yazılımın sadece böceklerden temizlenmiş olması için yayımlanan güncellemelerdir.) Yerel kullanıcılar, gerçekten söyledikleri kişi oldukları durumda bile sistem üzerinde fazlaca kargaşa yaratabilir (Ç.N.: Bizzat hesabın meşru sahibi tarafından zarar verilmek istenebilir). Tanımadığınız insanlara, veya iletişim bilgilerine sahip olmadığınız birine hesap açmak, gerçekten çok kötü bir fikirdir.
Diğer kullanıcıların Linux makinenize meşru bir erişim sağlamasına izin verirken esas olarak alınabilecek bazı kurallar:
Makinenizi root olarak karıştırmaktan uzak durmanızı sağlayacak bir kaç numara:
Kullanıcılarınıza, rm komutunun, dosyaları silmeden önce onay almasını sağlayacak, varsayılan bir takma ismini olusturun. (Ç.N.: Bir çok Linux sistemde bunu alias rm=rm -i komutuyla, örneğin sistem genelindeki başlangıç dosyalarının (/etc/profile gibi) içinde gerçekleştirebilirsiniz.) Sadece belirli, tek bir işi yapmanız gerektiği zamanlarda root olun. Eğer kendinizi bir şeyin nasıl yapıldığını tahmin etmeye çalışırken bulursanız, normal kullanıcı hesabınıza geri dönüp, root tarafından neyin yapılacağından emin olmadan önce root kullanıcısına dönmeyin. Root için komut yolu tanımı çok önemli. Komut yolu (yani PATH çevre değişkeni), girdiğiniz herhangi bir komut ya da programın hangi dizinlerde aranacağını belirtir. Root kullanıcısı için komut yolunu olabildiğince sınırlandırmaya çalışın, ve asla . dizinini eklemeyin (geçerli dizin anlamına gelir, Ç.N.: tek bir nokta olan geçerli dizin, o anda içinde bulunduğunuz dizindir). Ek olarak, komut yolunuzda, yazılabilen dizinler bulundurmayın, çünkü bu saldırganların bu dizinler içine, bir sonraki sefer kullandığınızda root erişim izniyle çalışacak olan yeni çalıştırılabilir dosyalar koyabilmesi anlamına gelir. Asla rlogin/rsh/rexec araçlarını (r-araçları olarak adlandırılırlar) root olarak kullanmayın. Çünkü bunlar, çok çeşitli saldırılara açık komutlardır, dolayısıyla root olarak çalıştırıldıklarında çok daha tehlikeli hale gelirler. Asla root için .rhosts dosyası yaratmayın. (Ç.N.: Bu dosya başka bilgisayarlardan çoğunlukla parolasız bağlantı için kullanılır. Sadece yaratmamamakla kalmayıp, özellikle root için böyle bir dosyanın olmadığından emin olun. Bir çok saldırı, root´un ev dizinine, içinde + + satırı bulunan bir .rhosts dosyası kullanılması ile sonuçlanır ki, bu makinenize her hangi bir bilgisayardan herhangi bir kullanıcının parola girmeden root olarak bağlanabileceği anlamına gelir). /etc/securetty dosyası, root olarak giriş yapılabilecek terminalleri belirtir. Bu dosyanın varsayılan ayarları (Red Hat Linux´ta) yerel sanal konsollardır (Ç.N.: /dev/tty1´den /dev/tty6´ya kadar). Bu dosyaya herhangi bir şey eklerken çok tedbirli olun. Root olmanız gerektiğinde uzaktan normal bir kullanıcı hesabına (ssh veya diğer şifrelenmiş bir yolla) giriş yapıp su komutuyla olabilirsiniz. Dolayısıyla doğrudan root olarak giriş yapabilmeye gereksiniminiz yoktur. Root´u kullanırken daima yavaş ve temkinli davranın. Davranışlarınız bir çok şeyi etkileyebilir. Tuşlara dokunmadan önce düşünün! sudo belirli kullanıcılara belirli yetkiler vermekte yararlı olmasına rağmen, bazı eksiklikleri vardır. Sadece sınırlı bir takım işlerde kullanılmak zorundadır, örneğin bir sunucuyu yeniden başlatmak, veya yeni kullanıcılar eklemek gibi. sudo ile çalıştırılan, ve kabuğa çıkmaya izin veren her program, sisteme root erişimi sağlamış olur. Buna örnek olarak bir çok editör gösterilebilir. Ayrıca, /bin/cat kadar zararsız bir program bile, dosyaların üzerine yazmakta, ve root erişimi sağlamakta kullanılabilir. sudo programını, yapılan işten kimin sorumlu olduğunun izlenilmesi için kullanılan bir programmış gibi düşünün, ve hem root kullanıcısının yerine geçmesini hem de güvenli olmasını beklemeyin 5. Dosyalar ve Dosyasistemi Güvenliği
NFS kullanarak dosyasistemlerini dışarı açıyorsanız, /etc/exports dosyasında en fazla sınırlandırma sağlayan seçenekleri kullandığınızdan emin olun. Bu, genel karakter kullanılmaması, root kullanıcısına yazma izninin verilmemesi, ve mümkün olduğu yerlerde salt-okunur şekilde dışa açılması anlamına geliyor. Kullanıcılarınızın dosya yaratma umask´ini mümkün olduğu kadar sınırlı tutun. Bkz. umask ayarları. Eğer, NFS gibi bir ağ dosyasistemini kullanarak dosyasistemlerini bağlıyorsanız, /etc/exports dosyasında uygun sınırlama ayarlarının yaptığınızdan emin olun. Tipik olarak, nodev, nosuid, ve belki de noexec gerekli olanlardır. Dosyasistemlerinin sınırları belirleyin, varsayılan unlimited (Ç.N.: sınırsız) ayarına izin vermeyin. Kullanıcı bazındaki sınırları, kaynak-limitleri PAM modülünü kullanarak, ve /etc/pam.d/limits.conf dosyasındaki ayarlar aracılığı ile yapabilirsiniz. Örneğin, users grubu için sınırlar şu şekilde olabilir: @users hard core 0 Burda söylenen, core dosyalarının yasaklanması, işlem sayısının 50 ile sınırlanması, ve bellek kullanımının 5M ile sınırlandırılmasıdır.
Korunması gereken bir dosyanın kazara silinmesi veya üzerine yazılmasını önlemek için değişmez biti kullanılabilir. Bu ayrıca, dosyaya bir simgesel bağ yaratılmasını da engelleyecektir (bu tür simgesel bağlar, /etc/passwd veya /etc/shadow dosyaların silinmesi gibi saldırılarda temel oluşturmuştur). Değişmez biti ile ilgili daha fazla bilgi için chattr (1) man sayfasına bakın. Sisteminizdeki SUID ve SGID dosyaları, potansiyel bir güvenlik riski oluşturur ve yakından izlenmelidir. Bu programlar, onları çalıştıran kullanıcıya özel yetkiler verdiği için, güvensiz programların kurulu olmadığından emin olmak gereklidir. Korsanların gözde bir numarası da SUID-root programlarından yararlanarak, bir sonraki girişlerinde arkakapı olarak kullanmak üzere bir SUID programı yerleştirmektir. Bu şekilde asıl delik kapatılsa bile yeni arkakapı sayesinde sisteme giriş yapabilirler.
Debian dağıtımı, hangi SUID programlarının bulunduğunu belirlemek için her gece bir iş çalıştırır. Daha sonra bunu bir önceki gece ile karşılaştırır. Bu günlük için /var/log/setuid* dosyalarına bakabilirsiniz. Şüpheli bir programdaki SUID ve SGID erişim izinlerini chmod ile kaldırabilir, daha sonra mutlak şekilde gerektiğini hissederseniz tekrar yerine koyabilirsiniz.
root# find / -perm -2 ! -type l -ls ve bu dosyaların neden yazılabilir olduklarını bildiğinizden emin olun. Normal işlevler sırasında, herkes tarafından yazılabilir bir takım dosyalar bulunur, bunlar arasında /dev dizinindekiler ve simgesel bağlar da vardır. Bu nedenle yukarıdaki find komutunda simgesel bağları dışarıda bırakan ! -type l seçeneğini kullandık. Sahipsiz dosyalar da bir saldırganın sisteminize eriştiğinin bir göstergesi olabilir. Sahibi olmayan veya hiçbir gruba ait olmayan dosyaları aşağıdaki komut ile bulabilirsiniz: root# find / -nouser -o -nogroup -print
5.1 Umask Ayarları # Kullanıcının varsayılan umask değerini belirle Root´un umask değeri 077 olmalıdır; bu, root´tan başka herkesi okuma, yazma ve çalıştırma izinlerinden, açık bir şekilde chmod ile izin verilene kadar yoksun bırakır. Yukarıdaki örnekte, yeni yaratılan dizinlerin izinleri, 777 - 033 = 744 olacaktır. Yeni yaratılan dosyaların ise bu maske ile erişim izinleri 644 olur. Eğer Red Hat kullanıyorsanız, ve onların kullanıcı ve grup ID yaratma düzenlerine bağlı kalıyorsanız, umask için gereken sadece 002 değeridir. Bunun sebebi, Red Hat´te varsayılan ayarın her kullanıcı için ayrı bir grup olmasıdır. (Ç.N.: Red Hat dağıtımında, yeni bir kullanıcı açtığınız zaman, grubunu belirtmediğiniz sürece, kullanıcı ismiyle aynı yeni bir grup açılır ve kullanıcı bu grupta yer alır.)
Unix, dosya ve dizinlerdeki erişim denetiminde üç ayrı özelliğe göre sağlar: sahip, grup, ve diğer. Bir dosyanın her zaman bir sahibi ve grubu vardır, geriye kalan herkes diğer özelliğine sahiptir. Unix izinlerini kısaca açıklayacak olursak: Sahiplik - Hangi kullanıcı(lar) ve grup(lar), dosyanın (veya dizin/üst dizinin) izin haklarını denetim altında tutuyor? İzinler - Kimi erişim tiplerine müsade etmek için 1 veya 0 olabilen bitler. (Ç.N.: bit, binary digit´in kısaltması olup, ikili rakam anlamına gelir. İkili sayı düzeninde zaten iki rakam vardır, 1 ve 0). Dosyaların izinleri, dizinlerinkinden farklı anlamlar taşır. Okuma: Dosyanın içeriğini görebilme Bir dosya üzerinde değişiklik veya ekleme yapabilme İkili yapıdaki bir programı veya kabuk betiğini çalıştırma (Ç.N.: Betikler, ikili dosya türünde olmayıp, bildiğimiz okunabilir metin dosyalarıdır. Diğer metin dosyalarından farkları çalıştırılabilme özellikleridir. Bu özellikleri, betiklerin ikili dosya tipleri, yani programlar tarafından yorumlanması şeklindedir. Örneğin bir kabuk betiği bash programı tarafından, bir perl betiği perl programı (veya modülü) tarafından, ve bir php betiği ise php programı (veya modülü) tarafından okunarak, içindeki komutlar yerine getirilir) Metin Sakla Niteliği: (Dizinler için) SUID Niteliği: (Dosyalar için) SGID Niteliği: (Dizinler için) Grup - Ait olduğunuz grup Diğer - Sizin ve grubunuzun diğer üyelerinin dışında kalan herkes.
Aşağıdaki satırlar, dosyalar için açıklanan erişim izinlerinin uygulanabilmesi için verilmesi gereken en az izinlerin örnekleridir. Herhangi birine burdakilerden daha fazla izin vermek isteyebilirsiniz, fakat bunların en azları açıklanmaktadır:
Dizin Örneği:
dr-x------ Dosya nitelikleri sahip tarafından okunabilir. Sistem yapılanış dosyaları (genelde /etc içinde), genelde 640 kipindedir (-rw-r-----), ve sahipleri root´tur. Sitenizin güvenlik gereksinimlerine bağlı olarak, bunun üzerinde değişiklik yapmak isteyebilirsiniz. Asla herhangi bir sistem dosyasını grup veya herkes tarafından yazılabilir durumda bırakmayın. Bazı yapılanış dosyaları, /etc/shadow da buna dahildir, sadece root tarafından okunabilir durumda olmalı. /etc içindeki bazı dizinler de en azından diğer kullanıcılar tarafından erişebilir olmamalı.
5.3 Bütünlük Denetimi Bu tür programları bir diskete kurmak, ve disketin yazma korumasını kapatmak iyi bir fikirdir. Bu yolla saldırganlar bütünlük denetleyicisinin kendisini veya veritabanını kurcalayamazlar. Bir kere bunun gibi bir düzeneğiniz olduktan sonra, bu düzeneği normal yönetim görevleriniz arasında kullanmak, ve değişen bir şeyler olup olmadığını görmek de iyi bir fikirdir. Hatta, crontab´a denetleyicinizin her gece disketten çalışması için bir girdi ekleyebilir, ve sabaha sonuçlarını gözden geçirebilirsiniz. Aşağıdaki gibi bir şey size her sabah 5:15´te bir raporu mektup olarak yollar: # set mailto Bütünlük denetleyicileri, aksi takdirde farkedilmesi zor olan saldırganları ortaya çıkarmak konusunda bir nimettir. Ortalama bir sistemde çok fazla dosya değiştiği için, hangisinin bir korsan tarafından, hanginizin kendiniz tarafından değiştirildiği konusunda dikkatli olmak zorundasınız. Tripwire´ın açık kaynak sürümünü, ücretsiz olarak http://www.tripwire.org/ bulabilirsiniz. Kitapçıklar ve destek ise satın alınabilir. Aide, http://www.cs.tut.fi/~rammer/aide.html adresinde, Osiris ise http://www.shmoo.com/osiris/ adresinde bulunabilir. 5.4 Truva Atları Makinenize hangi programları kurduğunuza dikkat edin. Red Hat, RPM dosyaları için, programın gerçeğini kurduğunuzu doğrulayabilmeniz amacıyla, MD5 sağlama toplamları ve PGP imzaları sağlar. Diğer dağıtımlar da benzer yöntemler kullanır. Asla bilmediğiniz, kaynak kodu elinizde bulunmayan bir ikili dosyayı, root olarak çalıştırmayın! Çok az saldırgan kaynak kodlarını halka açık hale getirir. Karmaşık olabilir, fakat bir programın kaynak kodunu gerçek dağıtım sitesinden aldığınıza emin olun. Eğer program root olarak çalışacaksa, güvendiğiniz birinin kaynak koduna bakmasını ve doğrulamasını sağlayın 6. Parola Güvenliği ve Şifreleme Şifrelemenin derin anlamda tartışılması bu belgenin konusu ötesindedir, ama bir giriş yapılabilir. Şifreleme gerçekten yararlıdır, hatta bu zaman ve çağda gereklidir de. Şifrelemenin bir çok yöntemi vardır ve her biri kendi özellikler kümesini birlikte getirir. Bir çok Unix (ve Linux bir istisna değil), parolalarınızı şifrelemek için çoğunlukla tek yönlü, DES (Data Encryption Standard - Veri Şifreleme Standardı) adında bir algoritma kullanır. Şifrelenmiş parola (tipik olarak) /etc/passwd veya (daha az sıklıkla) /etc/shadow dosyasının içinde tutulur. Sisteme giriş yapmaya kalktığınızda, girmiş olduğunuz parola tekrar şifrelenir, ve parola dosyalarının içindeki ile karşılaştırılır. Eğer uyarsa, o zaman aynı parola olmalı demektir, ve erişime izin verilir. DES aslında iki yönlü bir şifreleme algoritmasıdır (doğru anahtar olduğunda, bir mesajı şifreleyebilir veya şifreli bir mesajın şifresini çözebilirsiniz). Bununla beraber, DES´in Unixler üzerindeki değişik biçimi tek yönlüdür. Bunun anlamı, /etc/passwd (veya /etc/shadow) dosyasının içindeki şifrelenmiş parolaya bakarak, şifreleme algoritmasını tersine çevirmek yoluyla parolayı bulmak mümkün olmamalıdır. Crack veya John the Ripper (Bkz. Crack) programlarında olduğu gibi kaba kuvvet saldırıları, parolanızı yeterince rastgele değilse bulabilir. PAM modülleri (aşağıda), parolalarınız ile birlikte başka bir şifreleme algoritmasının kullanılmasına izin verir (MD5 vb.). Crack programını kendi lehinizde de kullanabilirsiniz. Kendi parola veritabanınızı, güvensiz parolalara karşı Crack programını çalıştırarak düzenli olarak denetlemeyi düşünün. Güvensiz parolaya sahip kullanıcıyla iletişim kurarak, parolasını değiştirmesini isteyebilirsiniz. İyi bir şifrenin nasıl seçildiği hakkında bilgi almak için http://consult.cern.ch/writeup/security/security_3.html for adresine gidebilirsiniz.
Açık anahtar şifreliyazım, örneğin PGP´de kullanılan gibi, bir anahtarı şifreleme, diğer bir anahtarı da şifre çözme için kullanır. Geleneksel şifreleme tekniklerinde, şifreleme ve şifre çözme için aynı anahtar kullanılır. Bu anahtarın, her iki tarafta da bulunması, dolayısıyla bir şekilde bir tarafdan diğer tarafa güvenli şekilde aktarılmış olması gerekir. Şifreleme anahtarının güvenli aktarımını kolaylaştırmak için, açık anahtarlı şifreleme iki ayrı anahtar kullanır: bir açık anahtar ve bir de özel anahtar. Herkesin açık anahtarı diğerlerine şifreleme yapabilmesi amacıyla açıktır, ama herkes özel anahtarını, doğru açık anahtarla yapılmış şifreyi açabilmek için diğerlerinden gizli tutar. Hem açık anahtarın hem de gizli anahtar şifreliyazımın bazı avantajları vardır. İkisi arasındaki farklar hakkında bilgi edinmek için the RSA Cryptography FAQ (RSA Şifreliyazım SSS) belgesine göz atabilirsiniz. PGP (Pretty Good Privacy, Oldukça İyi (Kişisel) Gizlilik) Linux´ta iyi desteklenir. 2.6.2 ve 5.0 sürümlerinin iyi çalıştığı biliniyor. İyi bir PGP tanıtımı ve nasıl kullanıldığı ile ilgili bilgiyi PGP SSS içermektedir: http://www.pgp.com/service/export/faq/55faq.cgi Ülkeniz için uygun sürümü kullandığınızdan emin olun. ABD Hükümetinin dışsatım sınırlamalarından dolayı, güçlü şifrelemenin elektronik yollarla ülke dışına aktarılması yasaktır. ABD dışsatım denetimleri, artık ITAR tarafından değil, EAR (Export Administration Regulations - Dışsatım Yönetim Düzenlemeleri) tarafından idare edilmektedir. Ayrıca, Linux üzerinde PGP yapılandırmasını adım adım anlatan bir rehber http://mercury.chem.pitt.edu/~angel/LinuxFocus/English/November1997/article7.html. adresinde bulunmaktadır. Bu rehber PGP´nin uluslararası sürümleri için yazılmıştır, ama ABD sürümü için de uyarlanabilir. Bunun yanısıra Linux´un son sürümleri için bir yamaya ihtiyacınız olabilir. Bu yamaya ftp://metalab.unc.edu/pub/Linux/apps/crypto adresinden ulaşabilirsiniz. PGP´nin ücretsiz ve açık kaynak şekliyle yeniden hayata geçirme amacını taşıyan bir proje var. GnuPG, PGP´nin yerini alacak tamamlanmış ve ücretsiz bir yazılım. IDEA veya RSA´yı kullanmadığı için sınırlandırma olmaksızın kullanılabilir. GnuPG aşağı yukarı OpenPGP ile uyumlu. Daha fazla bilgi için GNU Gizlilik Nöbetçisi ana sayfasına bakabilirsiniz: http://www.gnupg.org/. Şifreliyazım ile ilgili daha fazla bilgi RSA şifreliyazım SSS´ında bulunabilir: http://www.rsa.com/rsalabs/newfaq/. Burda, Diffie-Hellman, Açık-Anahtarlı Şifreliyazım, Sayısal Sertifika vb. konular hakkında bilgi bulabilirsiniz.
SSL: - SSL, veya Secure Sockets Layer (Güvenli Soket Katmanı), Netscape tarafından İnternet üzerinde güvenlik sağlamak amacıyla geliştirilen bir şifreleme yöntemidir. SSL veri aktarım katmanında işlev görür, güvenli bir şifreli veri kanalı oluşturduğu için bir çok veri tipini şifreleyebilir. Bu en yaygın olarak, Communicator güvenli bir WWW sitesine bağlandığı, ve güvenli bir belgeyi görüntülemek istediğinde görülür. SSL, Netscape Communications şirketinin diğer veri şifrelemelerinin olduğu kadar, Communicator´ın da güvenli iletişim temellerini oluşturur. Daha fazla bilgi için http://www.consensus.com/security/ssl-talk-faq.html adresine bakabilirsiniz. Netscape´in güvenlikle ilgili hayata geçirdiği diğer örnekler, ve bu protokoller için iyi bir başlangıç noktası da http://home.netscape.com/info/security-doc.html adresinde bulunabilir. S-HTTP: - S-HTTP, İnternet üzerinde güvenlik servislerini sağlayan bir diğer protokoldür. Tasarlanma amacı gizlilik, kimlik doğrulama, bütünlük, ve inkar edememe (kendisinden başkası olduğunu söyleyememe) olan S-HTTP, aynı zamanda birden çok anahtar-yönetimi mekanizmasını ve şifreleme algoritmasını, taraflar arasındaki aktarımda yer alan seçenek kararlaştırılması yoluyla destekler. S-HTTP, kendisini hayata geçirmiş olan belirli yazılımlarla sınırlıdır, ve her bir mesajı ayrı ayrı şifreler (RSA Şifreliyazım SSS, Sayfa 138) S/MIME: - S/MIME, veya Güvenli Çokamaçlı İnternet Mektup Uzantısı (Secure Multipurpose Internet Mail Extension), elektronik mektup ve İnternet üzerindeki diğer mesajları şifrelemek için kullanılan bir şifremele standardıdır. RSA tarafından geliştirilen açık bir standarttır, dolayısıyla bir gün Linux üzerinde görme olasılığımız yüksektir. S/MIME ile ilgili daha fazla bilgi http://home.netscape.com/assist/security/smime/overview.html adresinde bulunabilir. 6.3 Linux IP Güvenliği´nin (IPSec) Hayata Geçirilmesi Arizona Üniversitesi´nde geliştirilen, Linux için x-çekirdek (x-kernel) uygulamasi, x-çekirdek adı verilen ağ protokollerinin hayata geçirilmesi için nesne tabanlı bir iskelet kullanır. Bununla ilgili bilgi http://www.cs.arizona.edu/xkernel/hpcc-blue/linux.html adresinde bulunabilir. En basit anlatımla, x-çekirdek, mesajların çekirdek düzeyinde aktarılması yöntemidir, ki bu hayata geçirilmesini kolaylaştırır. IPSEC´in ücretsiz bir diğer uygulaması da Linux FreeS/WAN IPSEC´tir. WWW sayfalarında belirtildiğine göre, Bu servisler, güvenmediğiniz ağların içinde güvenli tüneller oluşturmanızı sağlar. Güvenilmeyen ağdan geçen herşey IPSEC ağ geçidi tarafından şifrelenir ve diğer uçtaki ağ geçidinde şifresi çözülür. Sonuç bir Sanal Özel Ağ, yani VPN´dir (Virtual Private Network). Bu, bir takım farklı sitelerdeki güvensiz İnternet ile birbirine bağlı bulununan makineler içerdiği halde, etkin anlamda özel bir ağdır. Diğer şifreleme biçimleri gibi, bu da dışsatım sınırlamaları nedeniyle çekirdek ile birlikte dağıtılmıyor.
openssh, ise rlogin, rsh ve rcp´nin yerine geçen güvenli bir programlar grubudur. Kullanıcıların kimliğini doğrulamak için ve iki bilgisayar arasındaki iletişimi şifrelemek için açık anahtarlı şifreliyazım tekniğini kullanır. Uzaktaki bir bilgisayara güvenli şekilde giriş yapmak veya bilgisayarlar arasında veri kopyalama yapmak, ama bu sırada gelebilecek ortadaki-adam (oturum kaçırma) ve DNS taklit saldırılarını engellemek amacıyla kullanılabilir. Bağlantılarınız arasındaki verilerı sıkıştırır, ve bilgisayarlar arasındaki X11 iletişimini güvenli hale getirir. Şu anda bir çok ssh uygulaması mevcut. Data Fellows tarafından hayata geçirilen özgün ticari sürümü http://www.datafellows.com/ adresinde bulunabilir. Mükemmel Openssh uygulamasında, Data Fellows ssh´sinin önceki sürümlerinden biri taban oluşturmuş, ve patentli veya tescilli herhangi bir parça bulunmaması için tamamen yeniden bir çalışma yapılmıştır. BSD lisansı altında ücretsiz olarak dağıtılmaktadır: http://www.openssh.com/. ssh´yi sıfırdan yeniden yazmak amacıyla, psst... adıyla başlatılan bir açık kaynak proje daha mevcut. Daha fazla bilgi için: http://www.net.lut.ac.uk/psst/ ssh´yi Windows iş istasyonunuzdan Linux ssh sunucunuza bağlanmak amacıyla da kullanabilirsiniz. Ücretsiz olarak dağıtılan bir çok Windows istemcisi de mevcut, bunlardan birine http://guardian.htu.tuwien.ac.at/therapy/ssh/ adresinden ulaşabilirsiniz. Data Fellows´un ticari bir uygulamasına ise aşağıdaki adresten ulaşılabiliyor olmalı: http://www.datafellows.com/. SSLeay, Netscape´in Güvenli Soket Katmanı protokol uygulamasının, Eric Young tarafından yazılan ücretsiz bir sürümü. Güvenli telnet gibi bazı uygulamalar, Apache için bir modül, bir takım veritabanları, ve DES, IDEA, ve Blowfish algoritmaları SSLeay´in içinde bulunabilir. Bu kütüphaneyi kullanarak, telnet bağlantısı üzerinde şifreleme yapan güvenli bir telnet uygulaması yaratıldı. SSH´nin tersine, stelnet SSL´yi, Netscape tarafından geliştirilen Güvenli Soket Katmanı´nı kullanıyor. Güvenli telnet ve Güvenli FTP hakkında bilgiyi SSLeay SSS´ından başlayarak bulabilirsiniz: http://www.psy.uq.oz.au/~ftp/Crypto/. Bir diğer güvenli telnet/ftp uygulaması ise SRP. WWW sayfalarından:
PAM ile yapabileceklerinizden sadece bir kaçı:
#
6.6 Şifreliyazımsal IP Sarma (CIPE) CIPE veriyi ağ düzeyinde şifreler. Bilgisayarlar arasında ağ üzerinde seyahat eden paketler şifrelenir. Şifreleme motoru, paketleri alan ve gönderen sürücüye yakın bir yerdedir. Bu, verileri soket düzeyinde bağlantılara göre şifreleyen SSH´den farklıdır. Farklı bilgisayarda çalışan programlar arası mantıksal bağlantılar şifrelenir. CIPE, Sanal Özel Ağ yaratmak amacıyla tünellemede kullanılabilir. Düşük-düzey şifrelemenin, uygulama yazılımında değişiklik yapmaksızın VPN´de bağlı iki ağ arasında şeffaf şekilde çalıştırılabilme getirisi vardır. CIPE belgesinden özet:
Diğer şifreleme biçimleri gibi, dışsatım kısıtlamaları yüzünden çekirdek ile birlikte dağıtılmamaktadır.
İşte bu kimlik doğrulama rlogin gibi programlar tarafından kullanılır (.rhosts dosyası yerine), ve kullanıcıya diğer bilgisayarlara parolasız girebilmesi için izin verilir. Bu kimlik doğrulama yöntemi posta sistemi tarafından da mektubun doğru kişiye dağıtıldığından emin olmak, ve gönderen kişinin iddia ettiği kişi olduğunu garanti altına almak amacıyla kullanılabilir. Kerberos ve birlikte gelen diğer programlar, kullanıcıların başka birini taklit yoluyla sistemi yanıltmasını engeller. Ne yazık ki, Kerberos´u kurmak kökten değişiklik ister, bir çok standard programın yenileriyle değiştirilmesini gerektirir. Kerberos hakkında daha fazla bilgi almak için The Kerberos FAQ (SSS)´a, kodu almak içinse http://nii.isi.edu/info/kerberos/ adresine bakabilirsiniz.. [Kaynak: Stein, Jennifer G., Clifford Neuman, and Jeffrey L. Schiller. Kerberos: An Authentication Service for Open Network Systems (Kerberos: Açık Ağ Sistemleri için Bir Kimlik Doğrulama Servisi USENIX Konferans Tutanakları, Dallas, Texas, Winter 1998.] Kerberos, bilgisayarınızın güvenliğini iyileştirmede ilk adımınız olmamalı. Oldukça kapsamlı olduğu gibi, örneğin SSH kadar yaygın olarak da kullanılmamaktadır.
Parola kıran programlar basit bir düşünceye dayanarak çalışır: Sözlükteki her sözcüğü, ve sözcüklerden türeyen ifadeleri dener. Önce bunları şifreler, daha sonra sistemdeki şifrelenmiş parola ile karşılaştırır. Eğer birbirini tutarsa, parolayı bulmuş olurlar. En dikkate değer ikisi Crack ve John the Ripper olmak üzere ( http://www.false.com/security/john/index.html) ortalarda dolaşan bir kaç program mevcuttur. Bu programlar çok fazla işlemci zamanı alırlar, fakat önce kendiniz çalıştırarak ve zayıf parolası olan kullanıcıları farkederek herhangi bir saldırganın bunları kullanarak sisteme girip giremeyeceğini öğrenebilirsiniz. Dikkat edilmesi gereken bir nokta, bir saldırganın bu programları kullanabilmesi için, önce başka bir delik kullanarak /etc/passwd dosyasını okumuş olması gerekir ve bu tür delikler düşündüğünüzden daha yaygındır. Güvenlik, en güvensiz bilgisayar kadar güçlü olduğundan, belirtilmelidir ki, eğer ağınızda Windows makineler varsa L0phtCrack programına da bir göz atmak isteyebilirsiniz. L0phtCrack Windows için bir parola kırma uygulamasıdır: http://www.l0pht.com/
TCFS, dosya sistemine daha fazla bütünlük katarak CFS´in geliştirilmiş halidir, böylece dosya sisteminin şifrelenmiş olduğu kullanıcılara şeffaftır. Daha fazla bilgi: http://edu-gw.dia.unisa.it/tcfs/. Ayrıca tüm dosya sistemleri üzerinde de kullanılabilir. Dizin ağaçları üzerinde de çalışılabilir.
X11 X bir takım erişim-denetim mekanizmalarına sahiptir. Bunların en basiti bilgisayar bazında olandır. Görüntünüze erişmesine izin verdiğiniz bilgisayarlar için xhost programını kullanırsınız. Bu kesinlikle çok güvenli değildir, çünkü biri makinenize erişim sağlarsa, xhost + saldırganın makinesi yaparak rahatlıkla girebilir. Ayrıca, güvensiz bir makineden erişime izin verirseniz, oradaki herhangi biri görüntünüzü bozabilir. Giriş yapmak için xdm (X Display Manager, X Görüntü Yöneticisi) kullanırken, çok daha iyi bir erişim yönteminiz vardır: MIT-MAGIC-COOKIE-1. 128 bitlik bir kurabiye üretilir ve .Xauthority dosyanızda saklanır. Eğer uzak bir makineye görüntü erişim izni vermek isterseniz, xauth komutunu ve .Xauthority dosyanızdaki bilgiyi bunu sağlamak için kullanabilirsiniz. Remote-X-Apps mini-howto (Uzak-X-Uygulamaları Mini-NASIL) belgesine bir göz atabilirsiniz: http://metalab.unc.edu/LDP/HOWTO/mini/Remote-X-Apps.html. Güvenli X bağlatıları için ssh (yukarıda bkz. ssh) da kullanabilirsiniz. Bunun son kullanıcıya şeffaf olması avantajı vardır, ve ağda şifrelenmemiş hiç bir veri akışının olmadığı anlamına gelir. X güvenliği ile ilgili daha fazla bilgi için Xsecurity man sayfasına bir göz atın. En güvenilir yol, konsola giriş yapmak için xdm, üzerinde X programları çalıştırmak istediğiniz uzak sitelere gitmek içinse ssh kullanmaktır.
7. Çekirdek Güvenliği Çekirdek, bilgisayarınızın ağını denetim altında tuttuğu için, çok güvenli olması ve bozulmaması önemli. En yeni ağ saldırılarını engellemek için, çekirdek sürümünüzü güncel tutmaya çalışmalısınız. Çekirdeklerinizi ftp://ftp.kernel.org/ adresinden, veya dağıtıcınızdan bulabilirsiniz. Ana Linux çekirdeğine, birleştirilmiş bir şifre yaması sağlayan uluslararası bir grup var. Bu yama, dışsatım kısıtlamaları yüzünden ana çekirdeğe dahil edilemeyen şeyler ve bazı şifreliyazımsal alt sistemler için destek sağlıyor. Daha fazla bilgi için: http://www.kerneli.org/
IP yönlendirmeyi şu komutu kullanarak dinamik şekilde açabilir:
şu komutu kullanarak da kapatabilirsiniz: /proc dizini içindeki dosyaların sanal dosyalar olduğunu ve gösterilen boyutun dosyadan alınabilecek veri miktarını yansıtmadığını aklınızdan çıkarmayın. IP: syn kurabiyeleri (CONFIG_SYN_COOKIES) root# echo 1 /proc/sys/net/ipv4/tcp_syncookies
IP: Kaynaktan yönlendirilen çerçeveyi düşür (CONFIG_IP_NOSR)
IP: ICMP Maskeleme (CONFIG_IP_MASQUERADE_ICMP) Bu seçenek, sadece TCP ve UDP trafiğinin maskelenmesi anlamına gelen bir önceki seçeneğe ICMP maskelemesini de ekler. IP: şeffaf vekil desteği (CONFIG_IP_TRANSPARENT_PROXY) Bu, Linux ateşduvarınızın, yerel ağdan çıkan ve uzaktaki bir bilgisayara gidecek olan tüm trafiği, şeffaf vekil sunucu adı verilen yerel bir sunucuya yönlendirebilir. Bu, yerel kullanıcıların uzak uç ile konuştuklarını sanmalarına yol açar, halbuki yerel vekile bağlanmış durumdadırlar. Daha fazla bilgi için http://www.indyramp.com/masq adresindeki IP Maskeleme NASIL belgesine göz atın. IP: daima parçala (CONFIG_IP_ALWAYS_DEFRAG)
(Ç.N.: Çekirdek kaynak dosyaları genelde /usr/src/linux altında bulunur, make config komutu da bu dizine girdikten sonra verilir. Bahsedilen dosya da make config komutunun verildiği dizine göre genelde ./Documentation/Configure.help altındadır) Gereken seçeneklerin bir listesi için 2.0 açıklamalarına başvurun. 2.2 çekirdekteki en anlamlı değişiklir IP ateşduvarı kodudur. Artık ateşduvarı oluşturmak için, 2.0 çekirdeğindeki ipfwadm programının yerine ipchains programı kullanılıyor. (Ç.N.: 2.4 çekirdek sürümünden itibaren artık bu iki programın yerine iptables kullanılmaktadır).
Çekirdek tarafından /dev/random ve /dev/urandom cihazları, rastgele veri sağlama amacını taşır. Hem /dev/random hem de /dev/urandom, PGP anahtarlarının üretilmesinde, ssh bağlantılarında, ve rastgele sayıların gerektiği diğer uygulamalarda kullanılmak için yeteri kadar güvenli olmalıdır. Verilen herhangi bu kaynaklardan çıkan herhangi bir sayı dizisi için saldırganlar bir sonraki sayıyı tahmin edememeli. Bu kaynaklardan elde edilen verinin kelimenin tam anlamıyla rastgele olması için çok fazla çaba ortaya konmuştur. Bu iki cihaz arasındaki tek fark, /dev/random cihazının elindeki rastgele baytların tükenmesi, ve yenileri toplanması için beklemek zorunda oluşunuzdur. Yani kullanıcı tarafından üretilen entropinin sisteme girmesi için beklemesi durumunda uzun bir süre çalışması durabilir. Dolayısıyla /dev/random´ı kullanırken dikkatli olmak zorundasınız (Belki de yapılacak en iyi şey bu cihazı hassas anahtarlama bilgisini üretirken kullanmak, ve kullanıcıya Tamam, yeterli denilene kadar klavyesindeki tuşlara rastgele basmasını söylemektir) /dev/random yüksek kalitede entropi sağlar, kesmeler arasındaki farklı zamanları ölçme vb. şeylerden elde edilir. Yeterli bitte rastgele veri var olana kadar çalışması durur. /dev/urandom benzeri bir cihazdır, fakat depolanmış entropi azalmaya başladığında, olan kadarının, güçlü bir şifreliyazımsal hash değerini döndürür. Bu, rastgele veri kadar güvenli olmasa da çoğu uygulama için yeterli derecede güvenlidir. Bu cihazlardan okuma yapmak için aşağıdaki gibi bir şey kullanabilirsiniz:
Bu, konsola sekiz rastgele karakter yazar, örneğin parola üretimi için kullanılabilir. mimencode programını metamail paketi içinde bulabilirsiniz. Bu konuda bana yardımcı olan, Theodore Y. Ts´o, Jon Lewis, ve Linux çekirdek grubundan diğerlerine teşekkürler. |
|
| Bağlantılar: bilgininefendisi.net |
| Open Source Document Project | AUP&TOS |