Ders 03 / 11
Kurulum ve Yapılandırma
Temiz kurulumun kendisinin ölçülmesi: 20 yapılandırma kaleminin 17'sinin varsayılanda riskli kalması, başlangıç sertleştirmesinin 8'ini kapatması, 4'ünün yalnız yeniden kurulumla kapanması ve 1'inin hiç kapanmaması; ağa bağlanmadan önce sertleştirme yapıldığında penceredeki açık kalemin 17'den 9'a, sürekli kalemler de kapatıldığında 5'e inmesi.
İçindekiler
Önceki ders üç işletim sistemi ailesini aynı istek kümesi üzerinde karşılaştırdı ve son bölümde bir uyarı bıraktı: tablodaki sonuçlar ailenin varsayılan yapılandırmasına aittir. Varsayılan bir seçim değildir; kurulumu yapan kişi hiçbir şey seçmediğinde geriye kalan durumdur.
Bu ders o durumu ölçer. Temiz bir kurulum bittiğinde kaç kalem riskli kalıyor, bunların kaçı hemen kapatılabiliyor, kaçı ancak makine yeniden kurulursa kapanıyor ve kaçı hiç kapanmıyor.
Kurulum Bir An Değil, Bir Karar Kümesi
Kurulum genellikle tek bir olay gibi anılır: makine kuruldu. Ölçüm açısından bakıldığında kurulum bir karar kümesidir ve kararların hepsi aynı anda geri alınabilir değildir.
Bazı kalemler yalnız kurulum sırasında belirlenir. Bir birimi sonradan şifrelemek verinin taşınması demektir; bölüm düzenini sonradan değiştirmek dosya sistemini yeniden kurmak demektir; makine kimliğini üreten anahtar ilk açılışta üretilir ve o an zayıf bir kaynak kullanıldıysa sonradan düzeltmek kimliğin değişmesi demektir. Bu kalemler için “sonradan yaparız” bir seçenek değil, yeniden kurulum demektir.
Bazı kalemler kurulumdan hemen sonraki başlangıç sertleştirmesinde (baseline hardening) kapatılır: varsayılan hesaplar, varsayılan parolalar, açık bırakılmış hizmetler. Bazıları makine kullanımdayken de kapatılabilir. Bir tanesi hiç kapanmaz.
Bu dört zamanın ayrı ayrı sayılması, “kurulum sertleştirildi” cümlesini bir sayıya çevirir.
Yirmi Kalem, Dört Zaman
Örnek, kurgu bölgesel ölçüm ağında yeni kurulan bir şube sunucusudur. Sunucu da kalem listesi de kurgudur; aşağıdaki tablo bir modeldir, gerçek bir dağıtım, kurulum aracı ya da satıcı yoktur.
DI12: yapılandırma kalemi kümesi 20’dir ve her kalem bir kapatma zamanı taşır. DI13:
kapatma zamanı dört değerlidir — kurulum yalnız kurulum anında, ilk başlangıç sertleştirmesinde,
sonra makine kullanımdayken, hic hiçbir zaman. DI14: temiz kurulumun bıraktığı durum riskli
ya da güvenlidir. DI15: acar, kalem açık kaldığında erişilen kalem sayısıdır; kalemler aynı
varlıklara dokunabildiği için toplanmaz, en yükseği yazılır. DI16: pencere, makine ağa
bağlıyken henüz kapatılmamış riskli kalemlerin kümesidir.
// bt/kurulum.mjs — temiz kurulumun biraktigi yapilandirma kalemleri (model): gercek bir // dagitim, kurulum araci ya da satici yok. Rastgelelik yok. // zaman: kalemin ne zaman kapatilabilecegi — kurulum (yalnizca kurulum anında; sonradan // degistirmek yeniden kurulum ister), ilk (kurulumdan hemen sonraki baslangic // sertlestirmesinde), sonra (istenen zaman), hic (kapatilamaz, yalnizca yonetilir). // vars: temiz kurulumun biraktigi durum riskli mi. acar: kalem acik kalirsa erisilen kalem. export const KALEM = ` disk-sifrelemesi kurulum riskli 11 ayrik-veri-bolumu kurulum riskli 6 acilis-imza-kaydi kurulum riskli 9 makine-anahtari-uretimi kurulum riskli 3 kurulum-kaynagi-dogrulamasi kurulum guvenli 14 bellenim-yonetici-parolasi ilk riskli 12 varsayilan-yonetici-hesabi ilk riskli 8 varsayilan-parola ilk riskli 8 uzak-yonetim-hizmeti ilk riskli 7 gereksiz-hizmet-kumesi ilk riskli 5 guvenlik-duvari-varsayilani ilk riskli 6 otomatik-oturum-acma ilk riskli 4 konuk-hesabi ilk guvenli 3 gunluk-toplama ilk riskli 4 saat-esitleme ilk guvenli 2 ekran-kilidi-suresi sonra riskli 2 yazilim-kaynagi-kisitlamasi sonra riskli 5 yedek-programi sonra riskli 9 surucu-imza-zorunlulugu sonra riskli 6 donanim-hata-kanali hic riskli 1` .trim().split("\n").map((r) => { const [ad, zaman, vars, acar] = r.trim().split(/\s+/); return { ad, zaman, riskli: vars === "riskli", acar: Number(acar) }; }); export const ZAMAN = ["kurulum", "ilk", "sonra", "hic"]; export const riskli = KALEM.filter((k) => k.riskli); export const sayZaman = (z, hepsi = KALEM) => hepsi.filter((k) => k.zaman === z).length; // Bir sirada, pencerede acik kalan riskli kalemler: kapatilmis asamalar disarida kalir. export function pencere(kapanan) { const acik = riskli.filter((k) => !kapanan.includes(k.zaman)); return { adet: acik.length, enKotu: Math.max(...acik.map((k) => k.acar)), kotuAd: acik.reduce((a, b) => (b.acar > a.acar ? b : a)).ad }; }
// bt/kurulumolc.mjs — temiz kurulumda kac kalem acik, kaci ne zaman kapaniyor, sira ne degistiriyor. import { KALEM, ZAMAN, riskli, sayZaman, pencere } from "./kurulum.mjs"; const yaz = (g, ...s) => console.log(s.map((v, i) => (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join("")); console.log(`${KALEM.length} yapilandirma kalemi; temiz kurulumun biraktigi riskli kalem: ` + `${riskli.length}; kapatma zamani: ${ZAMAN.join(", ")}`); const A = [-30, 11, 12, 8]; console.log("\n1. kalem basina kapatma zamani (acar: kalem acik kalirsa erisilen kalem)"); yaz(A, "kalem", "zaman", "varsayilan", "acar"); for (const k of KALEM) yaz(A, k.ad, k.zaman, k.riskli ? "riskli" : "guvenli", k.acar); const B = [-30, 11, 12, 8]; console.log("\n2. kapatma zamanina gore dagilim"); yaz(B, "zaman", "kalem", "riskli", "en kotu"); for (const z of ZAMAN) { const r = riskli.filter((k) => k.zaman === z); yaz(B, z, sayZaman(z), r.length, r.length ? Math.max(...r.map((k) => k.acar)) : 0); } yaz(B, "toplam", KALEM.length, riskli.length, Math.max(...riskli.map((k) => k.acar))); const C = [-33, -29, 12, 9]; console.log("\n3. iki kurulum sirasi (pencere: aga bagliyken acik kalan riskli kalem)"); yaz(C, "sira", "penceredeki en kotu kalem", "acik kalem", "acar"); for (const [ad, kapanan] of [["kur -> aga bagla -> sertlestir", []], ["kur -> sertlestir -> aga bagla", ["ilk"]], [" + surekli kalemler de kapali", ["ilk", "sonra"]]]) { const s = pencere(kapanan); yaz(C, ad, s.kotuAd, s.adet, s.enKotu); } const D = [-36, 12]; console.log("\n4. sertlestirme bittikten sonra ne kaliyor"); yaz(D, "olcu", "kalem"); yaz(D, "ilk sertlestirmede kapanan", riskli.filter((k) => k.zaman === "ilk").length); yaz(D, "sonradan kapatilabilen", riskli.filter((k) => k.zaman === "sonra").length); yaz(D, "yalniz yeniden kurulumla kapanan", riskli.filter((k) => k.zaman === "kurulum").length); yaz(D, "hic kapanmayan", riskli.filter((k) => k.zaman === "hic").length); yaz(D, "kurulum kalemlerinin actigi en kotu", Math.max(...riskli.filter((k) => k.zaman === "kurulum").map((k) => k.acar)));
20 yapilandirma kalemi; temiz kurulumun biraktigi riskli kalem: 17; kapatma zamani: kurulum, ilk, sonra, hic 1. kalem basina kapatma zamani (acar: kalem acik kalirsa erisilen kalem) kalem zaman varsayilan acar disk-sifrelemesi kurulum riskli 11 ayrik-veri-bolumu kurulum riskli 6 acilis-imza-kaydi kurulum riskli 9 makine-anahtari-uretimi kurulum riskli 3 kurulum-kaynagi-dogrulamasi kurulum guvenli 14 bellenim-yonetici-parolasi ilk riskli 12 varsayilan-yonetici-hesabi ilk riskli 8 varsayilan-parola ilk riskli 8 uzak-yonetim-hizmeti ilk riskli 7 gereksiz-hizmet-kumesi ilk riskli 5 guvenlik-duvari-varsayilani ilk riskli 6 otomatik-oturum-acma ilk riskli 4 konuk-hesabi ilk guvenli 3 gunluk-toplama ilk riskli 4 saat-esitleme ilk guvenli 2 ekran-kilidi-suresi sonra riskli 2 yazilim-kaynagi-kisitlamasi sonra riskli 5 yedek-programi sonra riskli 9 surucu-imza-zorunlulugu sonra riskli 6 donanim-hata-kanali hic riskli 1 2. kapatma zamanina gore dagilim zaman kalem riskli en kotu kurulum 5 4 11 ilk 10 8 12 sonra 4 4 9 hic 1 1 1 toplam 20 17 12 3. iki kurulum sirasi (pencere: aga bagliyken acik kalan riskli kalem) sira penceredeki en kotu kalem acik kalem acar kur -> aga bagla -> sertlestir bellenim-yonetici-parolasi 17 12 kur -> sertlestir -> aga bagla disk-sifrelemesi 9 11 + surekli kalemler de kapali disk-sifrelemesi 5 11 4. sertlestirme bittikten sonra ne kaliyor olcu kalem ilk sertlestirmede kapanan 8 sonradan kapatilabilen 4 yalniz yeniden kurulumla kapanan 4 hic kapanmayan 1 kurulum kalemlerinin actigi en kotu 11
Sayılar ölçüm sınıfındadır; girdileri DI12–DI16’dır.
Temiz Kurulum Ne Bırakıyor
Başlık satırı ilk sayıyı verir: 20 kalemin 17’si temiz kurulumdan riskli durumda çıkar. Üçü güvenlidir — kurulum kaynağının doğrulanması, konuk hesabının kapalı olması ve saat eşitlemesinin açık olması.
Bu oran, sertleştirmenin neden ayrı bir iş olduğunu açıklar. Kurulum aracı bir güvenlik kararı vermez; çalışan bir sistem bırakır. Çalışan bir sistemin varsayılanları, kurulumun başarılı sayılmasını kolaylaştıracak yönde seçilir: hizmetler açık, hesaplar hazır, uzaktan erişim kullanılabilir. Bu tercihlerin her biri kendi başına savunulabilir; toplamı 17 kalemdir.
Güvenli çıkan üç kalem de rastgele değildir. Kurulum kaynağının doğrulanması kurulum aracının kendi işidir ve doğrulanmazsa kurulan sistemin tamamı sorgulanır — bu yüzden açtığı sayı 14 ile listenin en yükseğidir ve aynı nedenle varsayılan olarak açıktır. Saat eşitlemesi kayıtların karşılaştırılabilir olması için gerekir. Konuk hesabının kapalı gelmesi ise eski bir varsayılanın tersine dönmüş hâlidir: bir kalemin varsayılanı, o kalemin geçmişte ne kadar sorun çıkardığına göre değişir.
İkinci tablo dağılımı verir. On kalem başlangıç sertleştirmesinde kapatılabilir ve bunların 8’i risklidir. Dört kalem yalnız kurulum anında belirlenir. Dört kalem makine kullanımdayken kapanır. Bir kalem hiç kapanmaz.
Satırların en kotu sütunu ayrıca bir sıralama verir. Başlangıç sertleştirmesindeki en kötü kalem
12 varlık açar ve bu, listedeki en yüksek riskli değerdir; kurulum anındaki en kötü kalem 11,
sürekli kalemlerdeki en kötü 9’dur. Yani en çok varlık açan riskli kalem, en ucuz kapatılan
sınıftadır. Bu sıralama sertleştirme sırasını belirler: önce en yüksek acar değerine sahip
kalemler kapatılır, çünkü onları kapatmanın maliyeti ile kazancı arasındaki fark en büyüktür.
Kurulum Anında Kaçırılan Kalem
Dördüncü tablonun üçüncü satırı bu dersin en pahalı sayısını verir: 4 kalem yalnız yeniden kurulumla kapanır ve bunların açtığı en kötü kalem sayısı 11’dir.
Bu dört kalemin ortak yanı, sisteme sonradan eklenemeyecek bir yapıya karşılık gelmeleridir. Disk şifrelemesi bir ayar değil, birimin nasıl yazıldığıdır. Ayrık veri bölümü bir tercih değil, dosya sisteminin nerede başlayıp bittiğidir. Açılış imza kaydı, önceki derste sayılan açılış zincirinin güvenilen anahtar kümesidir ve zincir bir kez o kayıtsız kurulduğunda üstteki hiçbir katman geriye dönüp onu ekleyemez. Makine kimliğini üreten anahtar ilk açılışta üretilir.
Sayının pratik karşılığı şudur: bu dört kalem için denetim listesi kurulumdan sonra çalıştırılamaz. Kurulumdan sonra yapılan bir denetim, kalan 13 riskli kalemi bulur ve dördünü “eksik” olarak yazar — ama o dördünü kapatmanın maliyeti bir ayar değişikliği değil, makinenin yeniden kurulmasıdır. Ölçüm ağındaki kırk şube sunucusu düşünüldüğünde bu, dört ayarın değil kırk makinenin yeniden kurulmasıdır.
Pencere: Sertleştirmeden Önce Ağa Bağlanmak
Üçüncü tablo sıranın bedelini ölçer. Makine kurulup önce ağa bağlanır, sonra sertleştirilirse pencerede 17 riskli kalem açıktır ve en kötü kalem 12 varlık açar. Sertleştirme ağa bağlanmadan önce yapılırsa açık kalem 9’a iner ve en kötü kalem 11’e düşer. Sürekli kapatılabilen kalemler de bağlantıdan önce kapatılırsa açık kalem 5’e iner.
Aradaki fark tek bir yeni denetim eklemeden elde edilir. Kapatılan kalemler her üç sırada da aynıdır; değişen yalnızca ne zaman kapatıldıklarıdır. Bu, önceki derslerdeki eşik ölçümünden farklı bir kazanç türüdür: sınır güçlendirilmemiş, sınırın kurulmadığı süre kısaltılmıştır.
Pencere hiçbir sırada sıfıra inmez. En iyi sırada bile 5 riskli kalem açıktır ve en kötüsü 11 varlık açar; bunlar kurulum anında belirlenen ve hiç kapanmayan kalemlerdir. Pencereyi kapatmanın tek yolu kalemleri kurulum sırasında kapatmaktır — yani sertleştirmeyi kurulumdan sonraki bir adım olmaktan çıkarıp kurulumun kendisine taşımak.
Kurulum Profili ile Denetim Listesi Ayrımı
Üçüncü tablonun okunmasının doğrudan bir karşılığı vardır. Riskli kalemlerin 12’si — kurulum anına ait 4 ile başlangıç sertleştirmesine ait 8 — makine ilk kez açılmadan önce belirlenebilir. Bunlar bir denetim listesi maddesi olarak değil, kurulumun kendisinin bir parçası olarak yazıldığında pencere hiç açılmaz.
Ayrım şudur. Denetim listesi, kurulmuş bir makinede kalemleri tek tek sorar ve eksikleri raporlar; her sorgu bir zaman noktasında yapılır ve o noktaya kadar geçen süre penceredir. Kurulum profili, aynı kalemleri kurulum sırasında uygulanacak kararlar olarak taşır; makine kurulduğunda kalemler zaten kapalıdır ve pencere sıfırdır.
İki yaklaşımın kapsamı da farklıdır. Denetim listesi 20 kalemin hepsini sorabilir ama yalnız 8’ini düzeltebilir — sonradan kapatılabilenler artı sürekli kalemler, yani 4 artı 4. Kurulum profili 12 kalemi kapatır ve geriye sürekli kalemlerle kapatılamayan kalemi bırakır. İkisi birbirinin yerine geçmez: profil pencereyi kapatır, liste zamanla açılan kalemleri yakalar. Bir kurulumda yalnız biri varsa ölçülen sayı eksiktir.
Bu ayrımın maliyeti de sayılabilir. Kurulum profilini yazmak, 12 kalemin her biri için kurulum aracının o kalemi hangi seçenekle ayarladığını bulmayı ister; bu bir kereye özgü bir iştir ve makine sınıfı başına yapılır. Denetim listesi ise her koşumda çalışır ve her yeni makinede aynı eksikleri yeniden bulur — bulmak ile kapatmak arasındaki farkı ölçen sayı, kırk makinede kırk kere tekrar edilen düzeltme sayısıdır.
Aynı Kalem, İki Makine Sınıfı
Tablodaki riskli işareti makine sınıfından bağımsız değildir. Ölçüm ağında iki sınıf vardır ve
aynı kalem ikisinde farklı yere düşer.
Şube sunucusunda uzak-yonetim-hizmeti bir gerekliliktir; kapatılamaz, yalnız daraltılır — bu
durumda kalem ilk sınıfından çıkar ve sürekli yönetilen bir kaleme dönüşür. Saha dizüstü
bilgisayarında ise hizmet hiç gerekmez ve gerçekten kapatılır. Tersine, disk-sifrelemesi dizüstü
bilgisayarda kurulumun en önemli kalemidir çünkü cihaz fiziksel olarak kaybedilebilir; kilitli bir
şube odasındaki sunucuda aynı kalemin açtığı 11 varlık başka bir sınırın da arkasındadır.
Bu yüzden ölçüm makine sınıfı başına yapılır ve iki sayı ayrı tutulur: kalemin kendi açtığı varlık ve o varlıkların başka hangi sınırların arkasında olduğu. Tek bir kurumsal liste iki sınıfa birden uygulandığında, bir sınıfta gereksiz iş, ötekinde eksik kapatma üretir.
Hiç Kapanmayan Kalem
Dördüncü tablonun son satırı bir kalemi ayrı tutar: donanim-hata-kanali. Bu kalem kapatılamaz,
yalnız yönetilir. Donanımda bulunan bir kusur bir yapılandırma seçeneği değildir; karşılığı bellenim
ve işletim sistemi güncellemeleriyle gelen azaltmalardır. Güncellemelerin nasıl programlanacağı
ayrı bir konudur ve bu kursta ölçülmez; burada sayılan şey yalnızca kapatılamaz kalemin var
olduğudur.
Bir kalemin bu sınıfa düşmesi ölçümü değiştirir. Denetim listesinde “kapalı” işareti bekleyen bir satır olarak durursa her denetimde eksik görünür ve sonunda görmezden gelinir. Ayrı bir sınıf olarak yazıldığında ise doğru soruyu sorar: bu kalem kapanmadığına göre, açtığı 1 varlık başka hangi sınırın arkasında duruyor. Sayının küçük olması burada anlamlıdır — kapatılamayan kalem küçük bir yüzey açıyorsa katmanlı savunma iş görür; büyük bir yüzey açıyorsa makinenin görevi değişmelidir.
Özet
- Temiz kurulum bir güvenlik kararı vermez: 20 yapılandırma kaleminin 17’si varsayılanda riskli durumda kalır, yalnız 3’ü güvenlidir.
- Kalemler kapatma zamanına göre dörde ayrılır: 8 riskli kalem başlangıç sertleştirmesinde, 4’ü makine kullanımdayken kapanır, 4’ü yalnız yeniden kurulumla kapanır, 1’i hiç kapanmaz.
- Kurulum anında belirlenen dört kalem sonradan bir ayar değişikliğiyle düzelmez; denetimin bulduğu eksik, ilgili makinelerin yeniden kurulması demektir.
- Sıra tek başına ölçülebilir bir kazanç verir: ağa bağlanmadan önce sertleştirme yapıldığında penceredeki açık kalem 17’den 9’a, sürekli kalemler de kapatıldığında 5’e iner.
- Pencere hiçbir sırada sıfırlanmaz; kalan 5 kalem kurulum anına ait olanlardır. Pencereyi kapatmanın tek yolu sertleştirmeyi kurulumun kendisine taşımaktır.
- Kapatılamayan kalem ayrı bir sınıf olarak yazılır; denetim listesinde sürekli eksik görünen bir satır olarak tutulursa görmezden gelinir.
Sonraki Adım
Kurulum bittiğinde makinede bir izin düzeni kurulmuş olur: hesaplar, gruplar ve nesnelerin kimin neyine açık olduğu. Bu düzen, önceki derste aileler arasındaki farkın kaynağıydı ve bu derste sayılan 17 kalemin birkaçı doğrudan onu ayarlıyordu.
Sonraki ders o düzenin içine iner ve konunun en ayrıntılı ölçümünü yapar: aynı erişim isteği kümesi iki ayrı izin modelinde koşturulur, kaç istekte farklı sonuç çıktığı sayılır ve her modelin hangi isteği ifade edemediği yazılır.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.