Şö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.
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.