Crontab dosyalarına yapılan yetkisiz değişiklikler, genellikle izinsiz erişim veya geri kapı kurma girişimlerinin ilk işaretleridir. Benim ortamımda, bu tür müdahaleleri anlık olarak tespit edip SIEM sistemine iletmek için auditd kullanıyorum. -w /var/spool/cron -p wa -k cron_tamper kuralı, bu dizindeki dosyalara yazılma veya özellik değişikliği olduğunda olay üretir.
Auditd Kuralını Tanımlama
Öncelikle, auditd hizmetinin çalıştığından emin oluyorum. Ardından, crontab dizinini izlemek için aşağıdaki kuralı /etc/audit/rules.d/cron_tamper.rules dosyasına ekliyorum:
-w /var/spool/cron -p wa -k cron_tamper
Kuralı aktif etmek için auditd servisini yeniden başlatıyorum:
systemctl restart auditd
Kuralın yüklü olduğunu doğrulamak için:
auditctl -l | grep cron_tamper
Bu komut, kuralı listeliyorsa doğru şekilde yüklendiğini gösterir.
Olayları Gerçek Zamanlı Görüntüleme
Auditd, olayları /var/log/audit/audit.log dosyasına yazar. Bu logu izlemek için ausearch veya tail -f kullanırım. Anlık görüntüleme için:
ausearch -k cron_tamper -i
-i seçeneği, sayısal UID/GID değerlerini kullanıcı ve grup isimlerine çevirir, okunabilirliği artırır.
SIEM Entegrasyonu için Log İletimi
Benim ortamımda, audit loglarını rsyslog üzerinden bir log toplayıcıya (örnek: Elastic Stack, Splunk veya Graylog) iletiyorum. /etc/rsyslog.d/20-auditd.conf dosyasına şu satırı ekliyorum:
if $programname == 'auditd' then @log-to-playıcı-adresi:514
Bu yapılandırma, auditd tarafından üretilen tüm mesajları UDP 514 portu üzerinden belirtilen SIEM sistemine gönderir. Daha güvenilir bir aktarım için TCP tercih edilebilir; bu durumda @@ kullanılır.
Değişiklikten sonra rsyslog’u yeniden başlatıyorum:
systemctl restart rsyslog
Test: Crontab Değişikliği Simülasyonu
Kuralın çalışıp çalışmadığını test etmek için, bir kullanıcının crontab’ını geçici olarak değiştiriyorum:
echo "* * * * * /tmp/gecis.sh" | crontab -
Bu komut, mevcut kullanıcının crontab’ına bir giriş ekler. Anlık olarak ausearch komutu ile olayın loglandığını görüyorum:
ausearch -k cron_tamper -i | tail -20
Çıktıda, exe="/usr/bin/crontab", key="cron_tamper" ve değişiklik içeren bir olay görüyorum. Bu, kuralın doğru tetiklendiğini bestätir.
Uyarı ve Koruma Önerileri
- Audit loglarının kendisi de değiştirilebilir; bu yüzden /var/log/audit/ dizinine sadece gerekli kullanıcıların erişimi olmalı ve loglar uzak sisteme senkronize edilmelidir.
-p waizni, yazma ve özellik değişikliklerini yakalar; ancak okuma (r) izini eklemek genellikle gereksizdir ve yüksek üretilmeli sistemlerde performans etkisi yaratabilir.- Çok sayıda sistem varsa, audit kurallarını yapılandırma yönetimi araçları (Ansible, Puppet, SaltStack) ile dağıtmak tutarlılığı sağlar.
Bu yöntemle, crontab üzerinden yapılan yetkisiz müdahaleleri gerçek zamanlı olarak tespit edip, olay yanıt sürecini hızlandırabiliyorum. Daha önce sistemd servislerinde bellek sızıntılarını takip ettiğim yazımda (https://furkanikkan.com/urun/memoryusage-ve-watchdogsec-ile-systemd-servisindeki-bellek-sizintilarini-erken-yakala-74) benzer bir izleme prensibi uyguladım; burada da aynı fikir: kritik kaynakları izle, anormaliyeti hızlıca gör.
Cover image: CNE CNA C6F · PDM (Openverse / kamu malı) · https://www.flickr.com/photos/94966166@N02/52401144971
