Yerel kullanıcılardan gelen saldırılara karşı sistem güvenliğiniz
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 .
4 . 1 Yeni Hesap Açma
Kullanıcı hesaplarının , kullanıcıların yapması zorunlu işler için asgari gereklerini karşılayacak şekilde açıldığından emin olmalısınız . Eğer ( 10 yaşındaki ) oğlunuza bir hesap açarsanız , erişiminin bir kelime işlemci ya da çizim programıyla sınırlı olmasını , ve kendisinin olmayan veriyi silme yetkisinin olmamasını isteyebilirsiniz .
Diğer kullanıcıların Linux makinenize meşru bir erişim sağlamasına izin verirken esas olarak alınabilecek bazı kurallar:
Onlara , gereksinim duydukları en az yetkiyi verin .
Ne zaman ve nereden sisteme giriş yaptıklarına , ya da yapmaları gerektiğine dikkat edin .
Kullanılmayan hesapların kapandığından emin olun .
Bütün bilgisayar ve ağlarda aynı kullanıcı isminin kullanılması , hesabın bakımını kolaylaştırması , ve günlük verisinin daha kolay çözümlenmesi açısından tavsiye edilir .
Grup kullanıcı kimliklerinin yaratılması mutlak surette yasaklanmalıdır . Kullanıcı hesapları sorumluluk mekanizması da sağlar , ve bu birden fazla kişinin kullandığı grup hesaplarıyla mümkün değildir .
Güvenlik ihlallerinde kullanılan bir çok yerel kullanıcı hesabı , aylardır hata yıllardır kullanılmayanlardır . Kimse onları kullanmadığı için , ideal bir saldırı aracıdırlar .
4 . 2 Root Güvenliği
Makinenizdeki , peşinden en fazla koşulan hesap root ( üstün kullanıcı ) hesabıdır . Bu hesap bütün makine üzerinde yetki sağlamasının yanı sıra , ağdaki diğer makineler üzerinde de yetki sağlıyor durumda olması mümkündür . Unutmayın ki root hesabını , sadece özel işler için ve çok kısa süreliğine kullanmalısınız , geri kalan zamanlarda normal kullanıcı olarak işlerinizi yürütmelisiniz . Root kullanıcısı olarak sisteme giriş yaptığınızda , yaptığınız küçük hatalar dahi sorunlara yol açabilir . Root hesabıyla ne kadar az zaman harcarsanız , o kadar güvende olursunuz .
Makinenizi root olarak karıştırmaktan uzak durmanızı sağlayacak bir kaç numara:
Karmaşık bir komut kullanırken , komutu ilk önce yıkıcı olmayan başka bir şekilde kullanmayı deneyin . . . Özellikle komutun geniş çaplı kullanımında . . . Örneğin rm foo* . bak yapmak istiyorsanız , önce ls foo* . bak komutunu kullanarak , silmek üzere olduğunuz dosyaların , silmeyi düşündüğünüz dosyalar olduğundan emin olun . Bu tür tehlikeli komutların kullanımında , komutlar yerine echo kullanmak da zaman zaman işe yarayabilir .
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!
Eğer birine ( umarız güvenli biridir ) , mutlak surette root hesabını kullanması için izin vermeniz gerekiyorsa , yardımcı olabilecek bir kaç araç var . sudo , kullanıcıların , parolalarını kullanarak sınırlı sayıda komutu root olarak çalıştırmalarına izin verir . Bu , örneğin , bir kullanıcının , ayrılabilir medyanın ( Ç . N . : Örneğin CDROM ) bağlanması veya çıkarılması işini , için root´un diğer yetkilerini kullanamadan yapabilmesi anlamına gelebilir . sudo aynı zamanda , başarılı ve başarısız sudo denemelerinin bir günlüğünü tutar , bu şekilde kimin ne yapmak için bu komutu kullandığını izlemeniz mümkün hale gelir . Bu sebeple sudo , birden fazla kişinin root erişimi olduğu yerlerde bile iyi bir iş yapar , çünkü değişikliklerin takip edilmesinde yardım etmiş olur .
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
Sistemlerinizi ağa bağlı hale getirmeden önce yapılacak bir kaç dakikalık hazırlık ve planlama , sistemlerinizin ve üzerlerinde saklanan verinin korunmasında yardımcı olabilir .
Kullanıcıların , SUID/SGID programları ev dizinlerinden çalıştırmalarına izin vermek için herhangi bir sebep olmamalıdır . /etc/fstab dosyasında , root´tan başkalarının da yazma izninin olduğu disk bölümleri için nosuid seçeneğini kullanın . Ayrıca , kullanıcıların ev dizinlerinin bulunduğu bölümlerde , ve /var dizininde , program çalıştırılmasını ve karakter veya blok cihazların yaratılmasını engellemek için ( ne de olsa hiçbir zaman böyle bir şey gerekmeyecektir ) nodev ve noexec seçeneklerini kullanabilirsiniz .
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
@users hard nproc 50
@users hard rss 5000
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 .
/var/log/wtmp ve /var/run/utmp dosyaları sisteminizdeki tüm kullanıcıların sisteme giriş bilgilerini içerir . Bu dosyaların bütünlükleri korunmalıdır , çünkü bir kullanıcının ( ya da bir saldırganın ) ne zaman ve nereden giriş yaptığını belirlemede kullanılabilirler . Bu dosyaların erişim izinleri , normal işlevlerini gerçekleştirmelerine engel olmayan 644 olmalı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 .
Sisteminizdeki bütün SUID/SGID programları bularak ne olduklarını izleyin . Böylelikle , bir değişiklik olduğunda , ki bu değişiklikler potansiyel bir saldırganın göstergesi olabilir , haberiniz olmuş olur . Sisteminizdeki bütün SUID/SGID programları bulmak için aşağıdaki komutu kullanabilirsiniz:
root# find / -type f \ ( -perm -04000 -o -perm -02000 \ )
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 .
Herkes tarafından yazılabilir dosyalar , özellikle sistem dosyaları , bir korsan sisteminize erişir ve üzerlerinde değişiklik yaparsa bir güvenlik deliği haline gelebilir . Ayrıca herkes tarafından yazılabilir dizinler de tehlikelidir , çünkü bir korsanın istediği gibi dosya ekleme ve silmesine izin verir . Sisteminizdeki herkes tarafından yazılabilen dosyaları bulmak için , aşağıdaki komutu kullanın:
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
. rhosts dosyalarına sisteminiz üzerinde izin vermemelisiniz , dolayısıyla sistem üzerindeki bu dosyaların bulunması düzenli yönetim görevlerinizin bir parçası olmalı . Unutmayın , bir korsan bütün ağınıza erişebilmek için sadece bir güvensiz hesaba gereksinim duyar . Aşağıdaki komutla sistem üzerindeki tüm . rhosts dosyalarını bulabilirsiniz:
root# find /home -name . rhosts -print
Son olarak , herhangi bir sistem dosyası üzerindeki erişim izinlerini değiştirmeden önce , ne yaptığınızı anladığınızdan emin olun . Sadece bazı işlerin daha kolay olduğunu düşündüğünüz için bir dosyanın erişim izinlerini değiştirmeyin . Daima değiştirmeden önce neden o dosyanın o izinlere sahip olduğunu belirleyin .
5 . 1 Umask Ayarları
umask komutu , sistem üzerinde varsayılan dosya yaratma kipini belirlemek amacıyla kullanılabilir . İstenen dosya kipinin sekizli sayı düzeninde tümleyicisidir . Eğer dosyalar , erişim ayarlarına bakmaksızın yaratılırsa , kullanıcı dikkatsizce , okuma veya yazma izni olmaması gereken birine bu izinleri verebilir . Tipik umask ayarları , 022 , 027 , ve 077 ( en fazla sınırlama budur ) ayarlarıdır . Normal olarak , umask /etc/profile dosyasında belirlenir , dolayısıyla bütün kullanıcılar için geçerlidir . Dosya yaratma maskesi 777´den istenen değerin çıkarılmasıyla elde edilebilir . Diğer bir deyişle , umask ayarı 777 olduğu zaman , yeni yaratılan bir dosya kimse için okuma , yazma ve çalıştırma izinlerini bulundurmayacaktır . 666 gibi bir maske , yeni yaratılan dosyaların 111 ( Ç . N . : Herkes için sadece çalıştırma ) izninde olmasını sağlayacaktır . Örneğin , aşağıdaki gibi bir satır olabilir:
# Kullanıcının varsayılan umask değerini belirle
umask 033
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 . )
5 . 2 Dosya İzinleri
Sistem dosyalarınızın , kullanıcılar tarafından , ve sistem dosyalarının bakımından sorumlu olmayan kişiler tarafından açılmadığını garanti altına almak önemlidir .
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
Dizinde hangi dosyaların bulunduğunu görebilme
Yazma:
Bir dosya üzerinde değişiklik veya ekleme yapabilme
Bir dizindeki dosyaları silebilme veya taşıyabilme
Çalıştırma:
İ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 )
Bir dizinde arama yapabilme , okuma izinleri ile birlikte ( Ç . N . : Bir dizin için çalıştırma bitinin durumu , o dizine cd veya chdir komutlarıyla girilip girilemeyeceğini de belirler )
Metin Sakla Niteliği: ( Dizinler için )
Yapışkan bit de dizinlere ve dosyalara uygulandığında farklı anlamlar taşır . Eğer bir dizinin yapışkan biti 1 ise , bir kullanıcı o dizinde yeni bir dosya oluşturabilir , fakat dizindeki diğer dosyaları , kendine ait olmadığı veya açık bir şekilde izin verilmediği sürece silemez . Bu bit , /tmp gibi herkesin yazabileceği , ama diğer hiçbir kullanıcının başkalarının dosyalarını silmemesinin sağlanması gereken dizinler için tasarlanmıştır . Uzun dizin listesinde yapışkan bit t olarak görünür ( Ç . N . : Bir başka örnek , dosya göndermenize izin verilen ftp sunucularıdır . Burda aynı dizine herkes dosya aktarımı yapabilir , ama bir kullanıcının koyduğu dosyayı diğer bir kullanıcı silemez . )
SUID Niteliği: ( Dosyalar için )
Bu , dosyayı kullanıcı-kimliği-belirle izinleriyle ilgilidir . Eğer sahip izinleri bölümünde but bit 1 ise , ve dosya çalıştırılabilir bir dosya ise , çalışan işlemler sistem kaynaklarına , işlemi başlatan kişinin değil , dosya sahibinin kimliğinde erişim sağlar . Bu , bir çok tampon taşması açıklarının da sebebidir . ( Ç . N . : Normalde Unix sistemlerde bir bir programı veya kabuk betiğini çalıştırarak bir işlem başlattığınızda , o işlemin kullanıcı kimliği ve izinleri , başlatan kişininkiyle aynıdır . Söz konusu dosyanın sahip izinleri bölümünde SETUID ( Set User ID ) biti 1 ise , bu , dosya sahibinin kullanıcı kimliğinin , işlemin etkin kullanıcı kimliği haline getirilmesini sağlar , ve işlem o dosya sahibinin erişim izinleri ile çalışır . Bunun pratik olarak anlamı şudur: Bir dosyanın sahibi root ise , ve SETUID biti 1 ise , o dosya çalıştırıldığında , çalıştıran kişi işlemin çalışması boyunca root olur , işlem bittiğinde eski kullanıcı kimliğine ( gerçek kullanıcı kimliği ) geri döndürülür . Tampon taşmaları , programın göçmesine ve yarım kalmasına sebep olan böceklerdir . Program henüz bitmemiş olduğu için çalıştıran kullanıcı hala root erişim iznindedir . Bu noktada bir kabuk çalıştırılabilirse bu kişi pratik anlamda root´un yapabileceği herşeyi yapabilir anlamına gelir . )
SGID Niteliği: ( Dosyalar için )
Bu bit grup izinlerinde 1 ise , dosyanın grup-kimliği-belirle durumunu denetler . Bu kullanıcı-kimliği-belirle biti ile aynı şekilde çalışır , fakat bu kez grup kimliği etkilenir . Bu bitin etkili olabilmesi için dosyanın çalıştırılabilir olması şarttır ( Ç . N . : SGID - set group id , grup kimliğini belirle )
SGID Niteliği: ( Dizinler için )
Eğer bir dizinin bu bitini 1 yaparsanız ( chmod g+s dizin ile ) , bu dizinde yaratılan dosyaların grupları , bu dizinin grubu ile aynı olacaktır .
Siz - Dosyanın sahibi
Grup - Ait olduğunuz grup
Diğer - Sizin ve grubunuzun diğer üyelerinin dışında kalan herkes .
Dosya Örneği:
-rw-r--r-- 1 kevin users 114 Aug 28 1997 . zlogin
1 . bit - dizin mi? ( hayır )
2 . bit - sahibi okuyabilir mu? ( evet , kevin tarafından )
3 . bit - sahibi yazailiror mu? ( evet , kevin tarafından )
4 . bit - sahibi çalıştırabiliyor mu? ( hayır )
5 . bit - grup üyeleri okuyabilir mu? ( evet , users tarafından )
6 . bit - grup üyeleri yazabiliyor mu? ( hayır )
7 . bit - grup üyeleri çalıştırabiliyor mu? ( hayır )
8 . bit - diğerleri okuyabiliyor mu? ( evet , herkes tarafından )
9 . bit - diğerleri yazabiliyor mu? ( hayır )
10 . bit - diğerleri çalıştırabiliyor mu? ( hayır )
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:
-r-------- Dosya sahibinin dosyayı okumasına izin verir .
--w------- Dosya sahibinin dosyayı değiştirmesine veya silmesine izin verir .
( Dosyanın içinde bulunduğu dizine yazma hakkı olan herkes , dosyanın
üzerine yazabilir , dolayısıyla dosyayı silebilir )
---x------ Dosyanın sahibi programları çalıştırabilir . Kabuk betiklerini çalıştıramaz ,
çünkü onlar için okuma izni de olmalıdır .
---s------ Etkin kullanıcı kimliğini dosya sahibinin kullacı kimliği haline getirir .
--------s- Etkin grup kimliğini dosyanın grup kimliği haline getirir .
-rw------T Son değiştirilme zamanı güncellenmez . Genelde takas dosyaları için
kullanılır .
---t------ Etkisi yoktur . ( Önceleri yapışkan bit olarak kullanılırdı )
Dizin Örneği:
drwxr-xr-x 3 kevin users 512 Sep 19 13:47 . public_html/
1 . bit - dizin mi? ( evet , bir sürü dosya içeriyor )
2 . bit - sahibi okuyabilir mu? ( evet , kevin tarafından )
3 . bit - sahibi yazailiror mu? ( evet , kevin tarafından )
4 . bit - sahibi çalıştırabiliyor mu? ( evet , kevin tarafından )
5 . bit - grup üyeleri okuyabilir mu? ( evet , users tarafından )
6 . bit - grup üyeleri yazabiliyor mu? ( hayır )
7 . bit - grup üyeleri çalıştırabiliyor mu? ( evet , users tarafından )
8 . bit - diğerleri okuyabiliyor mu? ( evet , herkes tarafından )
9 . bit - diğerleri yazabiliyor mu? ( hayır )
10 . bit - diğerleri çalıştırabiliyor mu? ( evet , herkes tarafından )
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:
dr-------- Dizin içeriği listelenebilir , fakat dosya nitelikleri okunamaz .
d--x------ Dizine girilebilir , ve tam çalıştırma yollarında kullanılabilir
( Ç . N . : Dizin içindeki dosyalar listelenmediği için , çalıştırmak istediğiniz
dosyanın ismini de bilmenizi gerektirir , ve dizinle birlikte tam yolunu
yazdığınız takdir çalıştırmanız mümkündür ) .
dr-x------ Dosya nitelikleri sahip tarafından okunabilir .
d-wx------ Dosyalar , dizinin içine girilmeksizin yaratılabilir/silinebilir .
d------x-t Dosyaların yazma hakkı olan diğerlerince silinmesini engeller . /tmp dizininde
kullanılır .
d---s--s-- Bir etkisi yoktur .
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ı .
SUID Kabuk Betikleri
SUID kabuk betikleri , ciddi bir güvenlik riskidir , ve bu sebeple çekirdek tarafından hoş karşılanmazlar . Bir kabuk betiğinin ne kadar güvenli olduğunu düşünürseniz düşünün , bir korsan ondan yararlanarak bir root kabuğuna erişebilir .
5 . 3 Bütünlük Denetimi
Yerel ( ve ağ ) saldırılarını ortaya çıkarmanın çok iyi bir yolu da bir bütünlük denetleyici , örneğin Tripwire , Aide veya Osiris gibi bir program çalıştırmaktır . Bu bütünlük denetleyiciler , bütün önemli ikili dosyalarınızın üzerinde bir sağlama toplamı hesaplar , ve dosyalar iyi durumda olduklarındaki toplamlarla karşılaştırır . Sonuç olarak , dosyalardaki değişiklikler farkedilebilir .
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
MAILTO=kevin
# run Tripwire
15 05 * * * root /usr/local/adm/tcheck/tripwire
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ı
Truva Atlarının ismi Homeros´un İlyada destanındaki ünlü numaradan gelmektedir . Bunun arkasındaki fikir , bir korsanın , kulağa çok hoş gelen bir program veya ikili dosya dağıtıp , diğer insanların dosyayı indirmesi ve root olarak çalıştırmasını teşvik etmesidir . Çalıştırılan program , sistem güvenliğini dikkat çekmeden bozar . İnsanlar indirdikleri ve çalıştırdıkları dosyanın tek bir şey yaptığını ( ve bunu çok iyi yapıyor da olabilir ) düşünürler , ama program bir taraftan güvenliğe de zarar vermek ile meşguldür .
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
Bugün en önemli güvenlik özelliklerinden biri parolalardır . Hem sizin hem de tüm kullanıcılarınız için , güvenli , tahmin edilemeyen parolalara sahip olmak önemli bir konudur . Yakın zamanlı Linux dağıtımlarının çoğu , kolay tahmin edilebilir bir parola belirlemenizi engelleyen passwd programları ile birlikte gelir . passwd programınızın güncel ve bu özelliklere sahip olduğundan emin olun .
Ş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 .
6 . 1 PGP ve Açık Anahtarlı Şifreliyazım
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 .
6 . 2 SSL , S-HTTP , HTTPS ve S/MIME
Kullanıcılar sık sık çeşitli güvenlik ve şifreleme protokolleri arasındakı farkları , ve nasıl kullanıldıklarını sorar . Bu bir şifreleme belgesi olmamakla birlikte her bir protokolün ne olduğunu ve daha fazla bilginin nerde bulunabileceğini açıklamak iyi bir fikir olabilir .
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
CIPE ve diğer veri şifreleme biçimlerinin yanında , IPSEC´in de Linux için bir kaç hayata geçirilme örneği vardır . IPSEC , IP ağ düzeyinde şifreliyazımsal-güvenli iletişimler yaratmak , ve kimlik doğrulama , bütünlük , erişim denetimi ve gizlilik sağlayabilmek amacıyla IETF tarafından gösterilen bir çabadır . IPSEC ve İnternet taslağı üzerinde daha fazla bilgiye http://www . ietf . org/html . charters/ipsec-charter . html . adresinden ulaşabilir , ayrıca anahtar yönetimini içeren diğer protokollere , ve bir IPSEC mektuplaşma ( haberleşme ) listesi ve arşivlerine ulaşabilirsiniz .
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 .
Bilgisayarınıza indirmek isterseniz , http://www . xs4all . nl/~freeswan/ , adresinden ulaşabilirsiniz . Bu belge yazıldığı sırada ( Ç . N . : İngilizcesi yazıldığı sırada ) sürüm 1 . 0 henüz çıkmıştı .
Diğer şifreleme biçimleri gibi , bu da dışsatım sınırlamaları nedeniyle çekirdek ile birlikte dağıtılmıyor .
6 . 4 ssh ( Güvenli Kabuk ) and stelnet
ssh ve stelnet , uzak sistemlere giriş yapabilmenizi , ve şifreli bir bağlantı kurabilmenizi sağlayan programlar grubudur .
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:
SRP projesi , dünya çapında ücretsiz kullanım için güvenli İnternet yazılımı geliştiriyor . Tamamen güvenli bir Telnet ve FTP dağıtımından başlayarak , ağ üzerindeki zayıf kimlik doğrulama sistemlerini değiştirmeyi , bunu yaparken de güvenlik uğruna kullanıcı-dostluğunu kurban etmemeyi amaçlıyoruz . Güvenlik , varsayılan olmalı , bir seçenek değil!
Daha fazla bilgi için: http://srp . stanford . edu/srp .
6 . 5 PAM - Takılabilir Kimlik Doğrulama Modülleri
Red Hat Linux dağıtımlarının yeni sürümleri , PAM adı verilen birleşmiş bir kimlik doğrulama tasarımı ile birlikte geliyor . PAM , kimlik doğrulama yöntem ve gereksinimlerinizi çalışma kesilmeksizin değiştirmenize izin veriyor , ve ikililerinizin yeniden derlenmesine gerek bırakmaksızın bütün yerel kimlik doğrulama yöntemlerinizi çevreliyor . PAM yapılandırması , bu belgenin konusu dışında , bununla birlikte daha fazla bilgi için PAM sitesini şöyle bir gözden geçirmeyi ihmal etmeyin: http://www . kernel . org/pub/linux/libs/pam/index . html .
PAM ile yapabileceklerinizden sadece bir kaçı:
Parolalarınız için DES´ten başka bir şifreleme kullanma ( Böylelikle kaba kuvvet saldırılarını daha da zorlaştırma )
Tüm kullanıcılarınızın üzerinde , kaynak sınırlandırmaları koyabilme , böylelikle servis-reddi saldırılarını engelleme ( işlem sayısı , bellek miktarı vb . )
Çalışma kesilmeksizin gölge parolaya geçiş olanağı ( aşağıya bakın )
Belirli kullanıcıların , sadece belirli zamanlarda ve belirli yerlerden giriş yapmalarına izin verme
Sisteminizi bir kaç saat içinde kurduktan ve yapılandırdıktan sonra , bir çok saldırıyı gerçekleşmeden durdurabilirsiniz . Örneğin , kullanıcıların ev dizinlerindeki . rhosts dosyalarının kullanımını engellemek için , sistem genelinde /etc/pam . d/rlogin dosyasına aşağıdaki satırları ekleyerek PAM´i kullanabilirsiniz:
#
# Kullanıcılar için rsh/rlogin/rexec kullanımını yasakla
#
login auth required pam_rhosts_auth . so no_rhosts
--------------------------------------------------------------------------------
6 . 6 Şifreliyazımsal IP Sarma ( CIPE )
Bu yazılımın birincil amacı ( gizlice dinleme , trafik çözümlemesi ve araya sahte mesaj sokmaya karşı ) , İnternet gibi güvensiz paket ağı boyunca oluşturulan alt ağ bağlantılarını güvenli hale getirmede bir kolaylık sağlamaktır .
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:
IPSEC standartları , ( diğer şeyler arasında ) şifrelenmiş VPN´ler oluşturmak için kullanılabilecek protokoller kümesini tanımlar . Bununla birlikte , IPSEC , bir çok seçeneği olan ağır ve karışık bir protokol kümesidr , protokolün bütün olarak hayata geçirilebildiği durumlar nadirdir ve bazı konular ( anahtar idaresi gibi ) tam olarak çözülmemiş durumdadır . CIPE , değiştirgelenebilen bir çok şeyin ( kullanılan asıl şifreleme algoritmasının seçimi gibi ) kurulum zamanındaki sabit bir seçim olduğu daha basit bir yaklaşım kullanır . Bu esnekliği kısıtlar , ama daha basit ( ve dolayısıyla daha etkili , böcek ayıklamasını kolaylaştıran ) bir uygulama olanağı sağlar .
Daha fazla bilgi http://www . inka . de/~bigred/devel/cipe . html adresinde bulunabilir .
Diğer şifreleme biçimleri gibi , dışsatım kısıtlamaları yüzünden çekirdek ile birlikte dağıtılmamaktadır .
6 . 7 Kerberos
Kerberos , MIT´teki ( Massachusetts Teknoloji Enstitüsü ) Athena Projesi tarafından geliştirilen bir kimlik doğrulama sistemidir . Kullanıcı sisteme giriş yaptığında , Kerberos kullanıcının kimliğini doğrular ( bir parola kullanarak ) , ve kullanıcıya ağa dağılmış diğer sunucular ve bilgisayarlara kimliğini kanıtlamak için bir yol sağlar .
İş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 .
6 . 8 Gölge Parolalar
Gölge parolalar , şifrelenmiş parola bilgilerinizi normal kullanıcılardan gizli tutmanın bir yoludur . Hem Red Hat hem de Debian Linux dağıtımlarının yeni sürümleri , gölge parolaları var sayılan yapılandırmada kullanıyor , fakat diğer sistemlerde , şifrelenmiş parolalar , herkesin okuyabileceği şekilde /etc/passwd dosyasında saklanıyor . Herhangi biri bunlar üzerinde parola-tahmin programları kullanarak ne olduklarını bulmaya çalışabilir . Gölge parolalar ise tam tersine /etc/shadow dosyasında saklanır , ve sadece yetkili kullanıcılar okuyabilir . Gölge parolalar , kullanılabilmek için , parola bilgisine erişime gereksinim duyan bütün yararlı programlar tarafından destekleniyor olmalıdır . PAM ( yukarıda ) de bir gölge modülünün takılmasına izin verir , ve çalıştırabilir dosyaların yeniden derlenmesini gerektirmez . Daha fazla bilgi için Shadow-Password HOWTO ( Gölge-Parola NASIL ) dosyasına başvurabilirsiniz: http://metalab . unc . edu/LDP/HOWTO/Shadow-Password-HOWTO . html . Yalnız oldukça eski olabilir ve PAM´ı destekleyen dağıtımlar için gerek yoktur .
6 . 9 Crack ve John the Ripper
Herhangi bir nedenle passwd programı tahmini-zor parolalar seçmeye zorlayamıyorsa , bir parola-kırıcı program çalıştırmak , ve kullanıcılarınızn parolalarının güvenli olduğundan emin olmak isteyebilirsiniz .
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/
6 . 10 CFS - Şifreliyazımsal Dosya Sistemi ve TCFS - Şeffaf Şifreliyazımsal Dosya Sistemi
CFS bütün dizin ağaçlarını şifrelemenin , ve kullanıcıların bu dizinlerde şifreli dosyalar saklayabilmesini sağlamanın bir yoludur . Yerel makinede çalışan bir NFS sunucusundan yararlanır . RPM dosyalarını , http://www . zedz . net/redhat/ adresinden , ve nasıl çalıştığı hakkında daha fazla bilgiyi ise ftp://ftp . research . att . com/dist/mab/ adresinden bulabilirsiniz .
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 .
6 . 11 X11 , SVGA ve Görüntü Güvenliği
X11
Saldırganların parolalarınızı yazarken çalmasını , ekranda okuduğunuz belge ve bilgileri okumasını , hatta root erişimi sağlama için bir delik kullanmasını engellemek amacıyla , çizgesel görüntünüzü güvenli hale getirmeniz önem taşır . Ağ üzerinde uzak X uygulamaları çalıştırmak da , koklayıcıların uzak sistemle olan tüm etkileşiminizi görmeleri açısından , tehlike dolu olabilir .
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 .
SVGA
SVGAlib programları , Linux makinenizin video donanımına erişmek için tipik olarak SUID-root´tur . Bu onları çok tehlikeli yapar . Eğer göçerlerse , kullanılır bir konsol almak için tipik olarak makinenizi yeniden başlatmak zorunda kalırsınız . SVGA programlarınızın düzgün olduğundan , en azından bir şekilde güvenilir olduğundan emin olun . Daha da iyisi , hiç çalıştırmayın .
GGI ( Genel Çizgesel Arabirim Projesi )
Linux GGI projesi , Linux´ta video arabirimlerinden kaynaklanan bir takım problemleri çözmeyi deneyen bir projedir . CGI , bir parça video kodunu Linux çekirdeğine taşır , sonra video sistemine erişimi denetler . Bu , çekirdeğinizin iyi bir durumunun herhangi bir zamanda tekrar çağrılabileceği anlamına gelir . Verdikleri güvenli anahtar sayesinde , konsolunuzda çalışan bir Truva atı login programının olmadığından emin olabilirsiniz . http://synergy . caltech . edu/~ggi/
7 . Çekirdek Güvenliği
Bu bölümde güvenlikle ilgili çekirdek yapılandırma seçeneklerini açıklayacak , ne işe yaradıklarını ve nasıl kullanıldıklarını anlatacağız .
Ç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/
7 . 1 2 . 0 Çekirdek Derleme Seçenekleri
2 . 0 . x çekirdekleri için izleyen seçenekler geçerli . Bu seçenekleri çekirdek yapılandırma işlemi sırasında görürsünüz . Burdaki yorumların çoğu . /linux/Documentation/Configure . help belgesinden , aynı belge çekirdeğin make config aşamasında Help ( Yardım ) kısmında da kullanılıyor .
Ağ Ateşduvarları ( CONFIG_FIREWALL )
Bu seçenek , eğer Linux makinenizde ateşduvarı kullanacaksanız , veya maskeleme yapacaksanız açık olmalı . Eğer sıradan bir istemci makine olacaksa , kapata da bilirsiniz .
IP: yönlendirme/ağ geçidi ( CONFIG_IP_FORWARD )
IP yönlendirmesini açarsanız , Linux kutunuz bir yöneltici haline gelir . Eğer makineniz ağ üzerinde ise , bir ağdan diğerine veri yönlendiriyor olabilirsiniz , belki de bunun olmasını engelleyen bir ateşduvarını devre dışı bırakarak . Normal çevirmeli ağ kullanıcıları bunu kapatmak isteyecektir , diğer kullanıcılar ise bunun güvenlik yan etkileri üzerinde düşünmelidir . Ateşduvarı görevi yapacak makineler bu seçeneğin açık olmasını , ve ateşduvarı yazılımıyla uyum içinde kullanılmasını gerektirir .
IP yönlendirmeyi şu komutu kullanarak dinamik şekilde açabilir:
root# echo 1 /proc/sys/net/ipv4/ip_forward
şu komutu kullanarak da kapatabilirsiniz:
root# echo 0 /proc/sys/net/ipv4/ip_forward
/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 )
SYN Saldırısı , makinenizdeki tüm kaynakları tüketen bir servis reddi ( DoS ) saldırısıdır , sistemi yeniden başlatmak zorunda kalırsınız . Normal olarak bu seçeneği açmamanızı gerektirecek bir sebep düşünemiyoruz . 2 . 2 . x çekirdek serisinde bu yapılandırma seçeneği syn kurabiyelerini açmaya izin verir , fakat onları açmaz . Açmak için aşağıdaki komutu kullanmalısınız:
root# echo 1 /proc/sys/net/ipv4/tcp_syncookies
IP: Ateşduvarı ( CONFIG_IP_FIREWALL )
Makinenizi bir ateşduvarı olarak yapılandıracaksanız , veya maskeleme yapacaksanız , veya PPP çevirmeli ağ arabirimini kullanarak çevirmeli ağ iş istasyonunuza birinin girmesine engel olmak istiyorsanız bu seçeneği açmanız gerekir .
IP: Ateşduvarı paket günlüğü ( CONFIG_IP_FIREWALL_VERBOSE )
Bu seçenek ateşduvarınızın paketler hakkında aldığı gönderici , alıcı , port gibi bilgileri verir .
IP: Kaynaktan yönlendirilen çerçeveyi düşür ( CONFIG_IP_NOSR )
Bu seçenek etkinleştirilmelidir . Kaynaktan yönlendirilen çerçeveler , gidecekleri yeri paketin içinde bulundurur . Bu , paketin içinden geçtiği yöneltici tarafından incelenmemesi , ve sadece yönlendirmesi anlamına gelir . Bu , potansiyel açıklardan yararlanmak isteyen verinin sisteminize girebilmesine olanak tanıyabilir .
IP: Maskeleme ( CONFIG_IP_MASQUERADE ) Linux´unuzun ateşduvarı rolünü üstlendiği yerel ağınızdaki bilgisayarlardan biri dışarı bir şey göndermek isterse , Linux´unuz kendini o bilgisayar olarak maskeleyebilir , yani trafiği istenen hedefe göndererek , kendisinden geliyormuş gibi görünmesini sağlayabilir . Daha fazla bilgi için http://www . indyramp . com/masq adresine bakın .
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 )
Genellikle bu seçenek kapalı durumdadır , fakat bir ateşduvarı veya maskeleyen bir bilgisayar oluşturuyorsanız , etkin hale getirmek isteyeceksiniz . Veri bir bilgisayardan diğerine giderken , her zaman tek bir paket halinde değil , bir kaç parçaya ayrılarak gönderilir . Burdaki sorun birinin kalan paketlere orda olması beklenmeyen bazı bilgileri sokmasıdır . Bu seçenek ayrıca , gözyaşı saldırısına karşı yama uygulanmamış içerdeki bir bilgisayara yapılan bu saldırıyı da engelleyebilir .
Paket İmzaları ( CONFIG_NCPFS_PACKET_SIGNING )
Bu , 2 . 2 . x çekirdek dizisinde yer alan ve daha güçlü güvenlik için NCP paketlerinin imzalanmasını sağlayan bir seçenektir . Olağan durumlarda kapalı bırakabilirsiniz , ama gereksinim duyarsanız orda duruyor .
IP: Ateşduvarı paket ağbağlantısı cihazı ( CONFIG_IP_FIREWALL_NETLINK )
Bu , bir paketin meşruluk durumuna bakarak kabul edilip edilmeyeceğini belirlemek amacıyla , kullanıcı uzayında çalışan herhangi bir programındaki paketlerin ilk 128 baytını inceleyebilmenizi sağlayan etkileyi bir seçenektir .
7 . 2 2 . 2 Çekirdek Derleme Seçenekleri
2 . 2 . x çekirdekleri için , seçeneklerin çoğu aynı , fakat yeni bir kaç seçenek daha var . Buradaki açıklamaların çoğu , çekirdeği derlerkenki make config aşamasında kullanılan Yardım bölümünün referans aldığı . /linux/Documentation/Configure . help belgesiyle aynıdır
( Ç . 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 ) .
Soket Süzümü ( CONFIG_FILTER )
Çoğu insan için bu seçeneğe hayır demek güvenlidir . Bu seçenek , tüm soketlere kullanıcı uzayında bir süzgeci bağlamanızı , ve bu yolla paketlerin geçişine izin verilip verilmeyeceğini belirlemenizi sağlar . Çok özel bir gereksinim duyuyor olmadıkça ve böyle bir süzgeç programlayabilir bilgiye sahip olmadıkça hayır demelisiniz . Ayrıca bu belgenin yazılışı sırasında ( Ç . N . : Özgün İngilizce belgenin ) TCP dışındaki tüm protokoller destekleniyordu .
Port Yönlendirme
Port Yönlendirme , ateşduvarındaki belirli portlarda , dışarı giden veya içeri gelen paketlerde bazı yönlendirmelerin yapılabilmesini sağlar . Bu , örneğin bir WWW sunucusunu ateşduvarının veya maskeleme bilgisisayarının arkasında çalıştıracağınız halde o WWW sunucusunun dış dünyadan ulaşılabilir durumda olması gerektiği durumlarda yararlıdır . Bir dış istemci ateşduvarının 80 . portuna bir istek yollar , ateşduvarı bu isteği WWW sunucusuna yönlendirir , WWW sunucusu istekle ilgilenir ve sonuçları ateşduvarının üstünden tekrar özgün istemciye gönderir . İstemci ateşduvarının kendisinin WWW sunucusu olarak çalıştığını düşünür . Bu , eğer ateşduvarının arkasında bir WWW sunucu çiftliği bulunduruyorsanız , yük dengelemede de kullanılabilir . Bu özellik hakkında daha fazla bilgiyi http://www . monmouth . demon . co . uk/ipsubs/portforwarding . html adresinden bulabilirsiniz . Genel bilgi için ftp://ftp . compsoc . net/users/steve/ipportfw/linux21/ adresine göz atın .
Soket Süzümü ( CONFIG_FILTER )
Bu seçeneği kullanarak , kullanıcı uzayındaki programları tüm soketlere bir süzgeç ekleyebilir , dolayısıyla çekirdeğe belirli tipteki verinin soket içinden geçip geçemeyeceğini bildirebilir . Linux soket süzümü şimdilik TCP dışındaki tüm soket tiplerinde çalışıyor . Daha fazla bilgi için . /linux/Documentation/networking/filter . txt adresine göz atın .
IP: Maskeleme
2 . 2 çekirdek maskeleme geliştirilmiş durumda . Özel protokollerin maskelenmesi için ek destek sağlıyor vb . Daha fazla bilgi için IP Chains NASIL belgesine göz atın .
7 . 3 Çekirdek Cihazları
Linux üzerinde güvenlik konusunda yardımcı olabilecek bir kaç blok ve karakter cihazlar mevcuttur .
Ç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:
root# head -c 6 /dev/urandom | mimencode
Bu , konsola sekiz rastgele karakter yazar , örneğin parola üretimi için kullanılabilir . mimencode programını metamail paketi içinde bulabilirsiniz .
Algoritmanın açıklaması için /usr/src/linux/drivers/char/random . c´ye bi göz atın .
Bu konuda bana yardımcı olan , Theodore Y . Ts´o , Jon Lewis , ve Linux çekirdek grubundan diğerlerine teşekkürler .