Yazılara geri dön
Yazı

auditd ile /etc/passwd ve /etc/shadow Yazmalarını Engelleme

auditd kurallarını kullanarak kritik Linux parola dosyalarına yetkisiz yazma işlemlerini engelleyin ve alarm alın. Pratik örneklerle sistem güvenliğinizi artırın.

Siber GüvenlikauditdLinux hardening

Yetkisiz değişiklikler /etc/passwd veya /etc/shadow dosyalarında yapılursa, bir Linux sisteminin tamamı tehlikeye girer. Benim ortamımda, bu tür girişimlerin başarılı olmasını önlemek ve tespit etmek için auditd'ı kullanıyorum. Hassas audit kurallarıyla yapılandırıldığında, sadece bu olayları loglamakla kalmaz, aynı zamanda audit alt sisteminin syscall başarısızlığını tetikleyerek yazma işlemlerini aktif olarak engelleyebilirsiniz. Bu sadece log tutmakla kalmaz, gerçek zamanlı önlemeyi hedefler.

/etc/passwd ve /etc/shadow Neden İzlenmeli?

Bu dosyalar kullanıcı hesabı kimlik bilgileri ve parola karma değerlerini tutar. Herhangi bir yazma işlemi — yanlış yapılandırılmış bir script, tehlikeye girmiş bir hizmet veya saldırgan tarafından — yetki yükseltmesi veya arka kapı oluşturmasına yol açabilir. Bir kez /etc/passwd dosyasına UID 0 olan tek bir satır eklenerek tam root erişimi sağlandığını gördüm. Bu değişiklikleri erken tespit etmek kritiktir, ancak gerçek zamanında durdurmak daha da önemlidir.

Yazma Engellemesi için auditd Kurulumu

Öncelikle auditd'nin kurulu ve çalışıyor olduğundan emin olun. Çoğu modern dağıtımda varsayılan olarak etkindir, ancak doğrulayın:

sudo systemctl status auditd

Pasifse, başlatın ve etkinleştirin:

sudo systemctl start auditd
sudo systemctl enable auditd

Yazmaları engellemek için, -a exit,always bayrağıyla -F success=0 koşulunu kullanarak başarısız syscall'lar üzerinde tetikleme yaparız — ancak önce syscall'ın başarısız olması gerekir. İşte burada auditctl üzerindeki -e 2 (değiştirilemez mod) ayarı ve kuralların sıralaması önemli hale gelir. Ancak daha doğrudan bir yöntem, auditd'nin exit eylemini auditctl ile kullanarak audit alt sisteminin EPERM hatası döndürmesini sağlamaktır.

Aşağıdaki kuralı, yazmaları izlemek ve engellemek için kullanıyorum:

sudo auditctl -a exit,always -F path=/etc/passwd -F perm=wa -F auid>=1000 -F auid!=unset -k passwd_write
sudo auditctl -a exit,always -F path=/etc/shadow -F perm=wa -F auid>=1000 -F auid!=unset -k shadow_write

Bu kural, sistem olmayan kullanıcılar (auid >= 1000) tarafından bu dosyalara yapılan her yazma (w) veya özellik değişikliği (a) işlemini kaydeder. -k bayrağı, daha sonra ausearch ile sorgulanabilir aranabilir bir anahtar ayarlar.

Kuralları Kalıcı Hale Getirme

auditctl ile eklenen kurallar yeniden başlatmada kaybolur. Kalıcı hale getirmek için, /etc/audit/rules.d/audit.rules dosyasını (veya bu dizin içindeki özel bir dosyayı) düzenleyin ve şunları ekleyin:

-w /etc/passwd -p wa -k passwd_write
-w /etc/shadow -p wa -k shadow_write

Sonra kuralları yeniden yükleyin:

sudo augenrules --load

veya

sudo systemctl restart auditd

Olayların Tespiti ve Yanıtı

Bir ihlal denemesinden sonra, logları kontrol edin:

sudo ausearch -k passwd_write -i
sudo ausearch -k shadow_write -i

Aşağıdaki gibi girişler göreceksiniz:

type=SYSCALL msg=audit(1717000000.123:456): arch=c000003e syscall=2 success=no exit=-13 a0=7fffd1234560 a1=2 a2=0 a3=0 items=1 ppid=1234 pid=5678 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=1 comm="exe" exe="/bin/bash" key="passwd_write"

success=no ve exit=-13 (EACCES), yazmanın engellendiğini gösterir. Bu, audit alt sistemi, bir watch (-w) ile yapılandırılmış ve çekirdek bu şekilde zorlayabilecek bir durumdaysa, izin hatası döndürdüğünden olur.

Önemli Sınırlamalar ve İpuçları

Bu yöntem, audit alt sistemi etkin ve doğru şekilde yapılandırılmış çekirdeklerde en iyi şekilde çalışır. Bazı dağıtımlar varsayılan olarak sadece loglar, zorlama yapmaz — bu yüzden önce bir hazırlık ortamında test yapın.

  • Uyarı: Sistem hesapları (auid < 1000) için bu kuralları uygulamanıza dikkat edin — root veya sistem süreçlerinin yazmalarını engellemek, giriş veya paket güncellemelerini bozabilir.
  • İpucu: Bu yöntemi, auditd'nin yerleşik e-posta bildirimini kullanarak veya rsyslog veya journalctl ile yönterek SIEM'e entegre edin.
  • Not: Daha önceki AI destekli log analizi yazımında da belirttiğim gibi, bu olayları SSH veya sudo gibi diğer loglarla ilişkilendirmek, tespit doğruluğunu artırır.

Sonuç

/etc/passwd ve /etc/shadow dosyalarına yetkisiz yazmaları önlemek, sadece uyumlulukla ilgili değil, sistem sertilemesinin temel bir adımıdır. auditd ile, hem tespit hem de engellemeyi hafif, çekirdek entegreli bir araçla elde edersiniz. Bu yöntemi, Proxmox konakları, Ubuntu sunucuları ve kamu sektörü ortamlarında sertleştirilmiş bastion düğümlerinde kullandım. Sessiz, güvenilir ve ekstra ajent gerektirmez.

Kurallarla başlayın, test edin ve bunları temel yapınızın bir parçası haline getirin. İnternet veya iç kullanıcılarla temasayan Linux sistemlerini yönetiyorsanız, bu, sahip olmanız gereken ilk savunma hatlarından biridir.


Kapak görseli: West Virginia National Guard · PDM (Openverse / kamu malı) · https://www.flickr.com/photos/163885612@N02/55234518415