5.3 · Seviye 0 · Dijital Dünyanın Temelleri
Dosya izinlerini okumak
okuma, yazma, çalıştırma; sahip, grup ve diğerleri
Siber Güvenlik Akademisi — M05, Komut Satırına Giriş · 1.866 kelime · 3 saha durumu · ≈ 8 dk okuma · 12 dk dinleme
Saha durumlarındaki kişiler ve kurumlar kurgusaldır; kaynaklar gerçektir. Bu akademi savunma odaklıdır: saldırılar mekanizma düzeyinde anlatılır, adım adım saldırı tarifi verilmez. Uygulamalar yalnız kendi cihazında, kendi hesabında ya da yalıtılmış bir laboratuvarda yapılır; başkasının sistemine izinsiz erişim suçtur. Dersler hukuki danışmanlığın yerini tutmaz.
Açılış
Bora hastanenin dosya sunucusundaki ortak klasörleri gözden geçirirken, idari birimlerin kullandığı bir klasörün izinlerine komut satırından baktı. Çıktıda tek bir satır dikkatini çekti: "Herkes" adlı grup, klasör üzerinde tam denetim iznine sahipti. Yani hastanenin ağına bağlı her kullanıcı, kimin olursa olsun, o klasördeki dosyaları okuyabilir, değiştirebilir ve silebilirdi.
Klasörde personel izin çizelgeleri, satın alma teklifleri ve birkaç bordro özeti vardı. Kimse kötü niyetle böyle bir izin vermemişti. Birkaç yıl önce bir çalışan klasöre erişemediğinden şikâyet etmiş, sorunu hızla çözmek isteyen biri en geniş izni vermiş ve iş bitince geri almayı unutmuştu. Klasör o günden beri hastanenin her bilgisayarına açıktı.
Bora'yı en çok düşündüren şey, bunun hiçbir ekranda görünmemesiydi. Klasörü açan herkes dosyalarını görüyordu ve bu doğal görünüyordu. Sorun, kimin görebildiği sorusunu soran kimse olmamasıydı. Bu ders o soruyu sormayı ve cevabını komut satırında okumayı öğretiyor: bir dosyaya kimin, ne yapabileceğini.
Tek fikir
Her dosya ve dizin, kimin okuyabileceğini, değiştirebileceğini ve çalıştırabileceğini söyleyen izinler taşır. Gereğinden geniş bir izin hiçbir uyarı vermeden durur ve hassas bir dosyayı, onu görmemesi gereken herkese açar; izinleri okumak bu sessiz açığı görmenin yoludur.
Nasıl çalışır
Bir önceki derste dizinlerde gezindik ve bazı dizinler için "erişim reddedildi" hatası aldık. O hatanın arkasında izinler vardır. İşletim sistemi dersinde gördüğümüz hakem, bir sürecin bir dosyaya erişmek istediği her seferde, o süreci çalıştıran hesabın bu dosya üzerinde hangi izinlere sahip olduğuna bakar.
macOS ve Linux gibi Unix kökenli sistemler bu izinleri yarım asırdır aynı basit düzenle tutar.
Bu izinler ls -l komutunun çıktısında, her satırın başındaki on karakterlik bir dizide görünür, örneğin -rw-r-----. İlk karakter öğenin türünü söyler: tire dosyayı, d harfi dizini gösterir. Sonraki dokuz karakter üçerli gruplar hâlinde okunur. İlk üçlü sahibin, ikinci üçlü grubun, üçüncü üçlü diğerlerinin izinleridir. Her üçlüde r okuma, w yazma, x çalıştırma iznini gösterir; tire o iznin olmadığını söyler. Yani -rw-r----- şunu söyler: sahip okuyabilir ve yazabilir, gruptakiler yalnız okuyabilir, diğerleri hiçbir şey yapamaz. Aynı satırda dosyanın sahibinin ve grubunun adı da yazar.
Windows izinleri daha ayrıntılı bir yapıyla tutar.
Windows'ta bu listeyi okumanın komut satırındaki yolu icacls komutudur. Microsoft'un resmî belgesine göre komut, dosyaların erişim denetim listelerini görüntüler ya da değiştirir; çıktıda her satır bir kullanıcı ya da grubun adını ve parantez içinde izinlerin kısaltmasını gösterir. Belgede tanımlanan temel kısaltmalar şunlardır: F tam erişim, M değiştirme, RX okuma ve çalıştırma, R yalnız okuma, W yalnız yazma, N erişim yok. Parantez içindeki I harfi ise iznin bir üst klasörden kalıtımla geldiğini söyler. Bora'nın gördüğü satır, "Herkes" grubunun yanında F, yani tam erişim yazan satırdı.
Kalıtım önemli bir kavramdır: bir klasöre verilen izin, varsayılan olarak içindeki bütün dosya ve alt klasörlere geçer. Bu yüzden üst düzeydeki tek bir yanlış izin, binlerce dosyayı birden açabilir.
İzinlerin yanlış verilmesi, yazılım zayıflıklarının sözlüğünde de ayrı bir başlıktır.
Yanlış izinlerin iki yönü vardır. Gereğinden geniş okuma izni gizliliği bozar: bir parola dosyası ya da bir bordro, görmemesi gereken kişilere açılır. Gereğinden geniş yazma izni ise bütünlüğü bozar ve çoğu zaman daha tehlikelidir: yönetici yetkisiyle çalışan bir betiği herkes değiştirebiliyorsa, herkes yöneticinin çalıştıracağı komutu değiştirebilir demektir.
Sahada
Savunma
İzinlere dair savunma tek bir ilkeye dayanır, Modül 2'den bildiğin en az ayrıcalık ilkesine: her kullanıcıya ve her sürece, işini yapabileceği en dar izin.
İlk savunma, izinleri okumayı bir alışkanlık hâline getirmektir. Yanlış bir izin kendini belli etmez; dosyalar her zamanki gibi açılır, işler her zamanki gibi yürür. Bora'nın klasörü yıllarca böyle durdu. Hassas dosyaların ve ortak klasörlerin izinlerine düzenli aralıklarla bakmak, kimin neye ulaşabildiğini görmenin tek yoludur. Kurumlarda bu gözden geçirme, Seviye 7'deki erişim gözden geçirme sürecinin bir parçasıdır.
İkinci savunma, geniş izinleri geçici bir çözüm olarak bile vermemektir. "Şimdilik herkese açayım, sonra düzeltirim" cümlesi, Bora'nın bulduğu sorunun ta kendisidir. Bir kullanıcı bir klasöre erişemiyorsa, doğru çözüm o kullanıcıya ya da onun grubuna gereken dar izni vermektir, herkese tam erişim değil.
Üçüncü savunma, iki özel duruma dikkat etmektir. Sırlar taşıyan dosyalar, parola ya da anahtar içeren yapılandırma dosyaları, yalnız sahibinin ya da onları kullanan hizmet hesabının okuyabileceği izinlerle durmalıdır; Unix kökenli sistemlerde bu genellikle yalnız sahibin okuyup yazabildiği izindir. Yönetici yetkisiyle çalışan betikler ve programlar ise yalnız yöneticinin değiştirebileceği izinlerle durmalıdır; aksi hâlde Kaan'ın ekibinin bulduğu gibi bir yetki yükseltme yolu açılır.
Son olarak kalıtımı hesaba kat: bir üst klasöre verilen izin, içindeki her şeye geçer. İzinleri değiştirirken mümkün olduğunca üst düzeyde dar, alt düzeyde gerektiği kadar geniş düşünmek, binlerce dosyayı tek tek yönetmekten daha güvenlidir.
Uygulama
Bu uygulamada kendi ana dizinindeki birkaç dosya ve dizinin izinlerini okuyacak ve yorumlayacaksın. Komutlar yalnız okur; hiçbir izni değiştirmezsin.
Bir dosyanın izinleri sana beklediğinden geniş görünürse, onu hemen değiştirme; önce not al ve neden öyle olduğunu araştır. İzinleri değiştirmek, yanlış yapıldığında programları bozabilir ve bunu Seviye 5'te, sistem güvenliğinde, güvenli biçimde yapmayı öğreneceğiz.
Defter: Tehditler bölümüne kendi ana dizininde, diğerlerine ya da geniş gruplara açık bulduğun dosya ve dizinlerin listesi; gizli anahtar dosyaların izinlerinin doğru olup olmadığı. Aylık güvenlik turuna "hassas klasörlerin izinleri" maddesi.
Hata köşesi
Yaygın yanlış"Dosyayı açabiliyorsam izinleri doğrudur."
Bir dosyayı açabilmen yalnız senin iznin olduğunu gösterir; başka kimlerin açabildiğini göstermez. Bora'nın klasöründe herkes dosyaları açabiliyordu ve bu doğal görünüyordu, çünkü sorun izinlerin fazla olmasıydı. İzinlerin doğruluğu, kimin erişebildiğine bakarak anlaşılır.
Yaygın yanlış"Erişim sorununu çözmenin en hızlı yolu herkese tam izin vermektir."
En hızlı yol, uzun süreli bir açık bırakmanın da en hızlı yoludur. Geniş izinler genellikle geri alınmayı unutulur ve yıllarca kalır. Erişemeyen kullanıcıya ya da onun grubuna yalnız gereken izni vermek, aynı sorunu kalıcı bir açık bırakmadan çözer.
Yaygın yanlış"Yazma izni okuma izninden daha az önemlidir, çünkü kimse benim dosyalarımı değiştirmek istemez."
Yanlış verilmiş yazma izni çoğu zaman daha tehlikelidir. Yönetici yetkisiyle çalışan bir betiğin dosyasını değiştirebilen biri, yöneticinin çalıştıracağı komutları değiştirebilir; bu, bir yetki yükseltme yoludur. Bütünlük, gizlilik kadar önemlidir.
Etik ve sınırlar
İzinleri okumak, bir sistemde kimin neye ulaşabildiğini görmek demektir ve bu bilgi hassastır. Kendi dosyalarının izinlerini okumak senin hakkındır. Bir kurumda paylaşılan klasörlerin izinlerini gözden geçirmek ise, Bora ve teknisyen gibi, kurumun bu işi yapmaya yetkilendirdiği kişilerin işidir. Gereğinden geniş bir izin fark edersen, ki bu sık olur, o izni kullanarak başkasının dosyalarını açmak yerine durumu sorumlu kişiye bildirirsin; bir kapının açık bırakılmış olması, içeri girme izni olduğu anlamına gelmez ve teknik olarak erişebildiğin bir dosyayı yetkin olmadan okumak, kişisel verilerin hukuka aykırı işlenmesi sayılabilir.
Kapanış
- Her dosya ve dizin, kimin okuyabileceğini, değiştirebileceğini ve çalıştırabileceğini söyleyen izinler taşır; Unix kökenli sistemlerde izinler sahip, grup ve diğerleri için üçerli olarak, Windows'ta erişim denetim listeleriyle tutulur.
- Gereğinden geniş izin hiçbir uyarı vermez; geniş okuma izni gizliliği, geniş yazma izni bütünlüğü bozar ve yönetici yetkisiyle çalışan dosyalarda bir yetki yükseltme yolu açar.
- Savunma, izinleri düzenli olarak okumak, geniş izni geçici çözüm olarak bile vermemek, sır taşıyan dosyaları yalnız sahibine açık tutmak ve kalıtımın üst düzeydeki bir hatayı binlerce dosyaya yaydığını unutmamaktır.
Üç soru
ls -lçıktısında-rw-r--r--görüyorsun. Bu dosyaya kim ne yapabilir ve bir veritabanı parolası taşıyan bir dosya için neden uygun değildir?- Herkesin yazabildiği bir yedekleme betiğinin, kimse değiştirmemiş olsa bile, neden bir güvenlik sorunu olduğunu açıkla.
- Bora'nın bulduğu "Herkes: tam erişim" izni neden yıllarca fark edilmeden durabildi?
Yanıtlar
- İlk karakter bunun bir dosya olduğunu söyler. Sahip okuyup yazabilir; grup ve diğerleri yalnız okuyabilir. Bir veritabanı parolası taşıyan dosya için uygun değildir, çünkü sunucuda hesabı olan herkes ve ele geçirilebilecek herhangi bir hizmet hesabı parolayı okuyabilir. Bu tür bir dosya yalnız onu kullanan hizmet hesabının okuyabileceği izinlerle durmalıdır.
- Çünkü betik her gece yönetici yetkisiyle çalışır ve herkesin yazabildiği bir dosyayı değiştiren biri, bir sonraki çalışmada yöneticinin yetkisiyle istediği komutu çalıştırtabilir. Kimsenin değiştirmemiş olması riski ortadan kaldırmaz; izin, düşük yetkili bir hesaptan yönetici yetkisine çıkmanın bir yolunu açık bırakır.
- Çünkü gereğinden geniş bir izin hiçbir uyarı vermez: klasörü açan herkes dosyalarını görüyordu ve bu doğal görünüyordu. Sorun, kimin erişebildiğine bakan kimse olmamasıydı. İzinlerin düzenli olarak okunması ve geçici olarak verilen geniş izinlerin geri alınması bu tür sessiz açıkları önler.
Sonraki derse köprü
Bu derste dosyalara kimin ne yapabileceğini okuduk ve izinlerin, dosyaya erişmeye çalışan sürecin hesabına bakılarak uygulandığını gördük. Peki bilgisayarında şu anda hangi süreçler çalışıyor, hangi hesapların adına ve ne kadar kaynak kullanarak? Sıradaki ders çalışan süreçleri görmeyi ele alıyor: süreç listesini okumayı, kaynak kullanımını ve tanımadığın bir süreci nasıl araştıracağını.
Anlamadığın bir yer mi var?
Mentor yalnız bu dersin metnine dayanarak cevap verir. Metinde geçmeyen bir şey sorarsan uydurmaz, geçmediğini söyler.