İçeriğe geç
academia.sh

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.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat