LINUX'DA GÜVENLIK
1.) Linux İşletim Sisteminde Güvenlik
Bilgisayar ağları ve özellikle İnternet, kullanıcılara büyük olanaklar
verirken ciddi güvenlik sorunlarını da beraberinde getirdi. Ağa bağlı
bilgisayarlarda çalışanların bu güvenlik sorunları konusunda bilgili
olmaları zorunlu hale geldi. Ancak güvenlik ile kullanım kolaylığının çoğu
zaman birbirleriyle çelişmesi ve kullanıcıların seçimlerini genellikle
kullanım kolaylığından yana kullanmaları güvenlik önlemlerinin yerleşmesini
engelledi. Bu bölüm, akademik ortamlarda yaygın olarak kullanılan Linux
işletim sisteminde sistem sorumlularına güvenlik için yapabilecekleri
konusunda yol göstermek ve kullanıcılara tehlikeleri tanıtmak amacıyla
hazırlanmıştır.
2.) Şifreler ve Şifre Seçimi
Çok kullanıcılı işletim sistemlerinde kullanıcının kimliğinin belirlenmesi
büyük önem taşır. Hem sistemi kullanmaya yetkisi olmayan kişilerin sisteme
girmelerinin engellenmesi, hem de sistemdeki kullanıcıların birbirlerinden
ayırdedilebilmeleri için, her kullanıcıya bir şifre verilir ve sisteme giriş
başta olmak üzere tüm kritik işlemlerde kullanıcıya şifresi sorulur.
Şifreler, diğer kullanıcı bilgileriyle birlikte, /etc/passwd veya /etc/shadow
dosyasında tutulur.
Bazı uygulamaların şifre dosyasının bazı alanlarına erişmeleri gerektiğinden
şifre dosyası, sistemdeki bütün kullanıcılar tarafından okunabilecek bir
dosya olmalıdır. Bu nedenle şifreler bu dosyaya açık halde değil,
şifrelenerek yazılırlar.
Şifre yönteminin güvenilirliği, sistemdeki kullanıcıların şifre seçiminde
gösterdikleri özene bağlıdır. Kolay akılda kalacak şifreler, çoğu zaman
kolay tahmin edilebilir. Buna karşılık, zor tahmin edilebilen şifreler
kullanıcıların akıllarında kalmayabileceklerinden bir yere yazmalarına ve
böylece yeni tehlikeler oluşturmalarına zemin hazırlayabilir.
Şu tip şifreler kolay tahmin edilebilen şifreler sayılmaktadır:
Kullanıcı ile yakınlığı olan kişilerinkiler (kendisi, ailesi, arkadaşları,
yakınları) başta olmak üzere bütün erkek ve kadın isimleri
Doğum tarihleri
Kullanıcı ile ilgili herhangi bir bilgi (kullanıcı adı, oda numarası,
telefon numarası, arabasının plaka numarası, sosyal güvenlik numarası)
Klavyede belli bir düzene göre ardarda gelen harflerden oluşan şifreler
(örneğin qwerty veya abcdefg gibi)
Anlamlı bir sözcük (bilgisayar terimleri, yer isimleri)
Yalnızca küçük (ya da yalnızca büyük) harflerden oluşan şifreler
Yukarıdakilerden birinin başına ya da sonuna bir rakam eklenerek oluşturulan
şifreler
Yukarıdakilerin ters yazılışları
İyi bir şifre üretmek için önerilen iki yöntem vardır:
İki sözcüğün aralarına bir rakam ya da noktalama işareti konarak
birleştirilmesi
Seçilen bir cümlenin sözcüklerinin baş harfleri
Tehlikeler
Şifre dosyasına erişimi olmayan bir saldırgan, hedef seçtiği bir
kullanıcının şifresini deneyerek bulmak zorundadır. Olası bütün şifrelerin
çokluğu gözönüne alınırsa bu tip bir saldırının etkisiz olacağı
düşünülebilir. Ancak, çoğu sistemde, şifresi boş olan, kullanıcı adıyla aynı
olan ya da sistem sorumlusunun geçici olarak verdiği basit şifreyi
değiştir(e)meyen kullanıcıların sayısı azımsanamayacak düzeydedir. Bir tek
kullanıcının bile şifresinin elde edilmesi sisteme giriş için yeterli
olduğundan güvenlik açısından büyük sorunlar yaratabilir.
Saldırgan, şifre dosyasının bir kopyasını alabilirse işi oldukça kolaylaşır.
Hem çok daha hızlı çalışabilir, hem de hedef sistemin sorumlusunun dikkatini
çekmek tehlikesinden kurtulur. Bir saldırganın şifre dosyasını eline
geçirmesi birkaç şekilde mümkün olabilir. Örneğin bir kullanıcının şifresini
elde ederek sisteme girer ve dosyayı alır, bazı programlardaki hatalardan
yararlanarak sisteme girmeden dosyayı elde edebilir, sistemdeki bir
kullanıcı şifre dosyasını saldırgana gönderebilir veya saldırgan, sistemdeki
kullanıcılardan biridir.
/etc/passwd dosyasındaki şifreleri kırmaya çalışan çeşitli yazılımlar
bulunmaktadır. Bunların en etkililerinden ve en yaygın kullanılanlarından
biri Crack isimli programdır. Alec E. Muffett tarafından geliştirilen Crack,
sözlük saldırısı yöntemini kullanan bir şifre kırma programıdır. Giriş
olarak verilen sözlüklerdeki sözcükleri şifre dosyasındaki 'salt'
bilgileriyle şifreleyerek şifre olarak kullanılıp kullanılmadıklarına bakar.
Ayrıca sistemin kullanıcı bilgilerinden de olası şifreler üretmeye çalışır.
Bu paketi ftp.metu.edu.tr adresinden temin edebilirsiniz.
Önlemler
Şifre güvenliğinin en önemli şartı, başta sistem sorumluları olmak üzere,
bütün kullanıcıların iyi şifre seçmenin önemini kavramalarıdır. Herkes,
şifresinin yetkisiz birinin eline geçmesi durumunda kendisi ve diğer
kullanıcılar açısından oluşan tehlikeleri anlamalıdır. Nelerin kötü şifre
olduğu ve nasıl iyi şifre seçilebileceği konusunda kullanıcılar
eğitilmelidir. Bu koşul gerçekleşmedikçe aşağıda sözü geçen önlemlerin çoğu
da başarısız olacaktır.
Şifre seçiminin kullanıcıya bırakılmaması : Şifreler, sistem sorumlusu
tarafından ya da rasgele şifre üreten bir program tarafından seçilerek
verilir ve kullanıcılara şifrelerini değiştirme hakkı tanınmaz. Bu yöntem,
iyi şifreler üretmekle birlikte, kullanıcıların akıllarında tutamayacakları
şifreleri bir yere yazmalarına neden olur.
Şifre seçiminin kısıtlanması : Kullanıcının kötü olduğu bilinen bir şifre
seçmesi engellenir.
Şifre dosyasının sistem sorumlusu tarafından kırılması : Sistem sorumlusu,
zaman zaman, şifre dosyasını Crack tipi bir program ile tarayarak zayıf
şifreleri arar. Bulduğu zayıf şifreli kullanıcıların hesaplarını kilitler.
Şifrelerin geçerlilik sürelerinin kısıtlanması : Yeterince sık
değiştirilmeyen şifreler, kuvvetli de olsalar, saldırgana aramak için daha
uzun zaman tanıdıklarından tehlike yaratırlar. Bu nedenle, şifrelerin belli
bir süre sonunda geçerliliklerini yitirerek yeni bir şifre verilmesi
zorunluluğu getirilebilir.
Gölge şifreler (shadow passwords) : Şifre dosyasının bazı alanlarının herkes
tarafından okunabilir olması gerekse de, şifre alanının herkes tarafından
okunabilir olması gerekmez. Bu nedenle, şifrelenmiş şifreler ancak sistem
sorumlusunun okuyabileceği bir dosyaya alınabilir. Şifre dosyasındaki şifre
alanına herhangi bir bilgi yazılırken (kullanıcı adı, * işareti gibi), gölge
dosyasına (/etc/shadow) şifrelenmiş şifreler konur. John F. Hough II
tarafından geliştirilen Shadow Password Suite, sistemdeki şifre güvenliğini
artırmaya yönelik bir pakettir. Gölge şifrelerin yanısıra, daha uzun
şifreleri (16 karakter) desteklemesi ve şifrelerin geçerlilik sürelerini
kısıtlaması nedeniyle sistem sorumlularının çokça kullandığı araçlar
arasında yer alır. ftp.metu.edu.tr adresinde bulunabilir. Slackware 3.2
sürümünden itibaren shadow desteği vardır.
3.) Dosya Güvenliği
Her dosyanın bir sahibi, bir de grubu vardır. Dosya uzerinde kimin hangi
işlemleri yapabileceğine dosyanın sahibi olan kullanıcı karar verir. Erişim
hakları, dosyanın sahibi, grubu ve diğerleri için ayrı ayrı belirtilir.
-rwxr-x--- 1 uyar users 4030 Dec 4 15:30 dene
Dizinler için de aynı erişim hakları modeli geçerlidir. Bir dizin üzerindeki
okuma izni, dizin altındaki programların listesinin alınıp alınamayacağını,
yazma izni dizinde yeni bir dosya yaratılıp yaratılamayacağını, çalıştırma
izni de o dizine geçilip geçilemeyeceğini belirler. Yetkili kullanıcının (root)
bütün dosyalar ve dizinler üzerinde (birkaç sistem dosyası ve dizini
haricinde) bütün işlemleri yapma yetkisi vardır.
Tehlikeler
İşletim sisteminde ya da uygulama programlarında bir hata olmadığı sürece
erişim izni olmayanlar dosyayı zaten okuyamayacaklardır. Asıl tehlike,
yetkili kullanıcının yetkisini kötüye kullanarak kullanıcıların kişisel
dosyalarını ve mektuplarını okumasıdır. Her şeye yetkisi olan bir kullanıcı,
sistemin kararlılığını korumak için gerekli olmakla birlikte, güvenliği ve
özel bilgilerin gizliliğini bir kişinin ahlakına bırakması açısından Linux
(ve Unix) işletim sisteminin güvenliğinin en zayıf noktalarından biri olarak
değerlendirilmektedir.
Saldırgan, sisteme girince, hem sonraki girişlerini kolaylaştırmak, hem de
daha rahat çalışabilmek için bazı sistem dosyalarını ya da programlarını
değiştirebilir. Örneğin, şifre dosyasına bir kayıt ekleyerek kendine yetkili
bir kullanıcı yaratabilir. Kullanıcıların şifrelerini öğrenmek için login,
passwd gibi programları değiştirebilir.
Önlemler
Şifre güvenliği sağlandığı sürece dosya erişimlerinde fazla bir güvenlik
sorunu olmayacaktır. Bu konuda sistem sorumlusuna düşen, kullanıcılarını
erişim haklarını nasil düzenleyecekleri konusunda bilgilendirmektir.
Şifre dosyası gibi metin dosyalarında değişiklik olup olmadığı gözle
inceleme yaparak ya da basit komut satırı programları kullanarak
bulunabilir. Çalıştırılabilir dosyalar gözle kontrol edilemeyeceğinden en
uygun yöntem, dosya imzaları oluşturarak sağlam olduğu bilinen imzalarla
yeni hesaplanan imzaları karşılaştırmaktır. Tripwire paketi, dosyalarda
yapılan değişiklikleri farketmekte sistem sorumlusuna ve kullanıcılara
yardımcı olur. Önce sağlam olduğu bilinen dosyaların dosya imzaları
oluşturularak bir yerde saklanır. Sonraki çalıştırmalarda imzalar yeniden
hesaplanarak eskileriyle karşılaştırılır ve farklı olanlar varsa bildirilir.
Düzgün çalışma için özgün imzaların iyi korunması, mümkünse, üstüne
yazılamayan bir ortamda saklanması gerekir. coast.cs.purdue.edu adresinden
temin edilebilir.
4.) TCP/IP Ortamında Güvenlik
IP paketleri ağa açık halde gönderildiklerinden iletişim fiziksel olarak
tamamıyla güvensizdir. Ağdan paketleri alabilen herkes içeriklerini
rahatlıkla okuyabilir. Özellikle, bir ortak yol (bus) ile gerçeklenen
ağlarda çok belirgin olarak ortaya çıkan bu sorun, şifreler başta olmak
üzere pek çok duyarlı bilginin kolayca ele geçirilmesine yol açar.
Bir istemci, hizmet almak için bir sunucuya bağlanırken gerçeğe aykırı bir
sayısal ya da sembolik adres bildirebilir. Internet'teki temel güvenlik
sorunlarından biri, sayısal - sembolik adres dönüşümleri için kullanılan
sunucuların yerel sistem sorumlusunun denetimi dışında olmaları ve çoğu
protokolün güvenlik koşullarının sağlanabilmesi için bunlara gereksinim
duymalarıdır.
Bir saldırgan, sunucu bir makinayi çökerterek hizmetlerin verilemez hale
gelmesine yol açabilir. Buna, TCP/IP protokol ailesinin tasarımından, sunucu
süreçlerdeki hatalardan veya işletim sistemindeki hatalardan kaynaklanan
açıklar neden olabilir.
rsh, rcp ve rlogin komutlarının kullanılmasında şifre denetimlerinin
atlanabilmesi için ya tüm kullanıcılar için geçerli sistem dosyasında (/etc/hosts.equiv)
ya da kullanıcıya özel erişim dosyasında (.rhosts) ayarlamalar yapılmalıdır.
Sistem dosyasında yer alan makinalar güvenilen (trusted) makinalar kabul
edilirler ve bu makinalardan bağlanan kullanıcıların isimleri yerel şifre
dosyasında varsa şifre denetimi yapılmaz.
Önlemler
İnternet hizmetlerini gerçekleştiren programların çoğu halen üzerinde
geliştirme ve hata ayıklama işlemleri süren programlardır. Sistem sorumlusu,
kullandığı programların gelişimini izleyerek bilinen hatası bulunmayan son
sürümlerini edinmeli ve çalıştırmalıdır. Ayrıca, Usenet'te güvenlik ile
ilgili forumları izleyerek ve CERT (Computer Emergency Response Team - www.cert.org)
önerilerine uyarak güncel olan güvenlik boşluklarını öğrenmeli ve
önlemlerini almalıdır.
Yapılabilecek en temel işlerden biri, verilmesine gerek olmayan ya da
taşıdığı riske değmeyeceği düşünülen hizmetlerin sunucu süreçlerini
çalıştırmamaktır. Sözgelimi, yerel ağda hiçbir NIS istemci makinası
bulunmadığı halde bir bilgisayarın NIS sunucu sürecini çalıştırıyor olması
gereksiz bir risk içerir. Bazı sistem sorumluları, kullanıcı isimleri ve
sistemde kimin çalıştığı gibi bilgileri dışarıya aktardığı için finger
hizmetini tehlikeli bularak kapatırlar. Hizmetin engellenmesi için işletim
sisteminin açılış dosyalarından (/etc/rc.d/rc.*) ilgili sunucuları
çalıştıran satırlar (özellikle netstat ve systat) kaldırılmalıdır.
Bazı durumlarda, hizmeti bütünüyle kapatmaktansa, erişimi koşullara bağlamak
daha anlamlı olabilir. Bu koşullar, hizmetin hangi makinalara, hangi
kullanıcılara, hangi saatlerde verileceği ya da verilmeyeceği şeklinde
belirtilebilir. Bu tip kısıtlamalar getiren programların en yaygın
kullanılanları tcpwrapper ve xinetd paketleridir. Wietse Venema tarafından
geliştirilen tcpwrapper, sunuculara erişimi bağlantı isteğinde bulunan
makina ve kullanıcıya gore kısıtlayan ve bağlantı istekleriyle ilgili
kayıtlar tutan bir pakettir.
Bu paket Linux'un Slackware dağıtımıyla birlikte gelmektedir.
Güvenliğin önem taşıdığı yerlerde giderek yaygınlaşan alev duvarı tekniği,
yerel ağdaki bilgisayarların dışarıdaki ağa doğrudan erişimlerini kaldırmayı
öngörür. Ağın yönlendiricisi, ağda güvenli çalıştığı bilinen yalnızca bir
makinanın dışarıyla bağlantı kurmasına izin verir. Diğer bilgisayarlar dış
ağa çıkmak için bu makinadaki süreçlere bağlanırlar.
5.) Kayıt Tutulması
Güvenliğin en önemli parçalarından biri, sistemin sürekli izlenerek,
güvenliğe aykırı durumlar oluşup oluşmadığının, oluştuysa bunların
sorumlularının kimler olduğunun belirlenmesidir. Bunun için, güvenliği
ilgilendirebilecek her türlü olayın kaydı tutulmalıdır. Şu tip bilgiler,
güvenlik açısından değer taşırlar:
Başarısız veya başarılı olmuş sisteme giriş denemeleri
Nerelerden, hangi hizmetler için bağlantı istekleri geldiği
Hizmetler sırasında gerçekleşen dosya aktarımları
Linux'ta kayıt tutulması işini syslogd süreci görür. Hangi tür mesajların
hangi dosyaya yazılacağı konfigürasyon dosyasında (/etc/syslog.conf)
belirtilir. Genellikle makina ilk açıldığı zaman /var/adm/messages dizini
altındaki messages, xferlog, syslog gibi dosyalara yazılan bu bilgileri
isteğinize göre daha sistematik bir yapıda saklamak da mümkündür. Ağ ile
ilgili hizmetleri denetleyen süreçler (tcpwrapper, xinetd gibi paketler)
kayıt dosyalarına girmesini istedikleri bilgileri syslogd sürecine
bildirirler.
|