AppArmor ile uygulamaları kısıtlamak
Bir servisin yalnızca ihtiyaç duyduğu dosya ve yeteneklere erişmesini sağlayan AppArmor profilleri yazar, şikâyet kipinde dener ve zorlamaya geçirirsin.
Seviye 301 · 16 ders · 18 pratik lab
Dersler
Zorunlu erişim denetimi
- İzinler yetmediğinde: zorunlu erişim denetimi fikri
- aa-status ile profilleri ve kipleri görmek
- Bir profilin yapısı: yollar, izinler, yetenekler
- Şikâyet ve zorlama kipleri arasında geçiş
- Kısa görev: zorlama kipinde olmayan profilleri bul
Profil yazmak
- aa-genprof ile yeni profil oluşturmak
- Reddedilenleri okumak ve aa-logprof ile profili geliştirmek
- Soyutlamalar ve ortak parçalar
- Ağ ve yetenek kuralları: yalnızca gereken soket
- Kısa görev: küçük bir betik için sıfırdan profil yaz
Servisler ve konteynerler
- Nginx için profil: yükleme dizinini kısıtlamak
- Docker konteynerlerinde AppArmor profili
- Profil yüzünden çalışmayan servisi teşhis etmek
- Kısa görev: bir konteynerin /proc altına yazmasını engelle
Bitirme
- Profilleri üretime aşamalı yaymak
- Bitirme görevi: açığı olan bir web uygulamasını AppArmor ile sınırla
Pratik lablar
- Zorlama modunda olmayan profilleri bul: aa-status çıktısından şikâyet modundaki profilleri çıkar ve hangi servislere ait olduklarını yaz.
- Bir servisin hangi profille çalıştığını göster: Servisin sürecini ps ve /proc/<pid>/attr/current ile incele, bağlı profili ve modunu yaz.
- Profili olmayan ağa açık süreçleri listele: Dinleyen süreçleri AppArmor durumuyla eşleştir ve korumasız çalışan iki servisi bul.
- Zorlamaya alınmış ama yüklenmemiş profili yakala: Diskteki profil ile çekirdekteki durumun neden farklı olduğunu bul, profili yükle ve zorlamada olduğunu göster.
- Küçük bir yedekleme betiği için profil yaz: aa-genprof ile betiği çalıştırarak profil oluştur, zorlamaya al ve betiğin yalnızca yedek klasörüne yazabildiğini göster.
- Profil dosyasını okuyup izinleri açıkla: Hazır bir profildeki yol kurallarını ve r, w, ix, k bayraklarını tek tek açıklayan kısa bir tablo hazırla.
- Reddedilen erişimleri okuyup profili daralt: Günlükteki DENIED kayıtlarını incele, yalnızca gereken izinleri aa-logprof ile ekle ve gereksiz geniş kuralı kaldır.
- Rapor servisinin ağ ve yetenek izinlerini kıs: Profildeki geniş network ve capability satırlarını servisin gerçekten kullandıklarıyla değiştir ve servisi test et.
- Profilin bıraktığı joker karakter açığını kapat: Fazla geniş bir yol kuralının /etc/shadow okumaya izin verdiğini göster, kuralı daralt ve erişimin reddedildiğini kanıtla.
- Nginx yükleme klasöründe betik çalıştırmayı engelle: Nginx profiline yükleme klasörü için çalıştırma yasağı ekle ve yüklenen betiğin çalışamadığını göster.
- Profil yüzünden açılmayan servisi düzelt: Güncellemeden sonra çöken servisin hangi erişim reddine takıldığını bul ve en dar izni ekleyerek çalıştır.
- Bir konteyneri özel AppArmor profiliyle çalıştır: Konteyner için /proc ve /sys yazmayı yasaklayan profil yükle, konteyneri onunla başlat ve yasağı test et.
- Bozuk profili zorlamaya almadan önce şikâyet modunda doğrula: Yeni profili bir gün boyunca şikâyet modunda biriken kayıtlarla karşılaştır, eksik izinleri ekle ve kesintisiz zorlamaya geç.
- Ele geçirilmiş web uygulamasının kabuk açmasını engelle: Uygulama profilini /bin/sh ve curl çalıştırmayı reddedecek şekilde düzenle ve açığı tetikleyerek engelin çalıştığını göster.
- Yükleme hatası veren profildeki bozuk kuralı bul ve düzelt: apparmor_parser çıktısını ve soyutlama dosyalarını izleyerek hatalı satırı bul, profili düzeltip yeniden yükle ve servisin zorlama kipinde çalıştığını göster.
- Şikâyet kipindeki profili zorlama kipine al: Şikâyet kipinde bırakılmış bir servis profilini aa-enforce ile zorlama kipine geçir ve engellenen bir erişimi günlükte göster.
- Bir profilin verdiği ağ ve yetenek haklarını listele: Rapor servisinin profilinde network ve capability satırlarını bul ve her birinin neye izin verdiğini yaz.
- Kullanılmayan hakları günlük kanıtıyla profilden çıkar: Servisi bir süre şikâyet kipinde izle, günlükte hiç kullanılmayan dosya, ağ ve yetenek kurallarını belirle, profilden çıkar ve zorlama kipinde işlevini doğrula.
Kurs hakkında
Bir servisin yalnızca ihtiyaç duyduğu dosya ve yeteneklere erişmesini sağlayan AppArmor profilleri yazar, şikâyet kipinde dener ve zorlamaya geçirirsin.
Ne öğreneceksin
- Zorunlu erişim denetimi
- Profil yazmak
- Servisler ve konteynerler
- Bitirme
Ön koşullar
Aynı yolun 101 ve 201 düzeyindeki konularına hâkim olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde ve ona bağlı özel bir lab ağında geçer. Kurulum gerekmez.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 301 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.