Postfix, Linux/Unix tabanlı sistemlerde en yaygın MTA'lardan biridir. /var/spool/postfix
altında mail, active, deferred, hold, incoming vb. alt dizinlerle kuyruk yönetilir. Saldırganların bu kuyruk yapısını kötüye kullanması; spam, veri sızıntısı, veya teslimat bozma (delivery sabotage) senaryolarını mümkün kılar. Kuyrukta gerçekleşen manipülasyonlar hem forensic zorluğu yaratır hem de kurum IP/alan itibarına ciddi zarar verebilir.
2. Postfix Kuyruk Yapısı (Hızlı Özet)
-
/var/spool/postfix/incoming
— Yeni teslim için gelen mesajlar. -
/var/spool/postfix/active
— Gönderilmeye hazır (sıradaki) mesajlar. -
/var/spool/postfix/deferred
— Gönderilemeyen, yeniden denenecek mesajlar. -
/var/spool/postfix/hold
— Manuel veya politika nedeniyle bekletilen mesajlar. -
Diğer yardımcı dizinler:
bounce
,trace
,maildrop
vb.
Kuyruk dosyaları genelde posta ID’leriyle adlandırılır; Postfix araçları (postqueue -p
, postcat
, postsuper
) kuyruk yönetimi ve görüntüleme sağlar.
3. Saldırı Vektörleri — Gerçekçi Örnekler
-
Dosya Sistemi Erişimi ile Kuyruğa Dosya Yerlestirme
-
Saldırgan (yerel exploit, cron job ya da zafiyetle elde edilmiş shell) kuyruk dizinine doğrudan dosya yerleştirir. Postfix’in dizin izinleri zayıfsa bu mümkün olabilir.
-
-
Hold → Release Manipülasyonu
-
Mesajlar
postsuper -h
ile hold’a alınır.postsuper -r
ile serbest bırakılarak toplu gönderim tetiklenebilir.
-
-
Kuyruk Dosyalarının Modifikasyonu
-
Mesaj başlıkları veya envelope adresleri değiştirilerek hedef kitle / bounce davranışı manipüle edilir.
-
-
Postfix Queue Flooding Kullanarak Rate Limit Aşma
-
Binlerce küçük mesaj kuyrukta biriktirilir ve birden ortaya çıkacak şekilde zamanlanır.
-
-
Zamanlanmış Cron / At Görevleri ile Postfix Komutları Çalıştırma
-
postsuper -r ALL deferred
gibi komutlar zamanlanarak büyük gönderim tetiklenebilir.
-
4. Tespit / Detection — Neye Bakmalı, Hangi Sinyaller Kritik?
A. Kuyruk Dosyası Faaliyetleri
-
ls -lR /var/spool/postfix
ile beklenmedik yeni dosyalar. -
stat
ile dosya oluşturma zamanları ve UID/GID kontrolü (root dışında oluşturulan dosyalar şüpheli). -
inotify
veyaauditd
ile kuyruk alt dizinlerindeki write/modify olayları.
B. Postfix Komut Kullanımı
-
postqueue -p
sıklığı artışı — normalde sabit aralıklarla çalışır. -
postsuper
kullanım kayıtlarının incelenmesi (/var/log/auth.log
,/var/log/maillog
).
C. Log Korelasyonu
-
/var/log/maillog
veya syslog: aynı sender’den kısa sürede çok sayıda queue/hint/hold/release olayları. -
Mail queue ID’leri ile bağlantılı olağandışı
status
değişimleri.
D. Network / SMTP Davranışları
-
Ani outbound bağlantı artışı (port 25/587) veya mail server’den çıkan gönderim hacmi artışı.
-
Gelen/ayrılan bounce oranı artışı.
E. SIEM / ML
-
SIEM’e kuyruk /postfix komut loglarını gönderin; anomali korelasyon kuralları oluşturun (ör.
postsuper
çalıştırıldıktan sonra 1 saat içinde outbound mail hacmi > X).
5. Örnek Komutlar ve Hızlı İnceleme
-
Kuyruk listesi:
postqueue -p
-
Belirli bir mesajın içeriğini gösterme:
postcat -q
# veya
postcat -q 3F6C4123A
-
Mesajı hold’a alma / serbest bırakma:
postsuper -h
postsuper -r
-
Kuyruktaki tüm mesajların IDs:
postqueue -p | tail -n +2 | awk '{print $1}' | tr -d '*:'
-
Kuyruk dizininde son oluşturulan dosyalar:
find /var/spool/postfix -type f -printf '%T+ %p\n' | sort -r | head -n 50
-
postqueue çıktısını parse edip CSV’ye çevirme (örnek):
postqueue -p | awk 'BEGIN{print "queue_id,state,from,to"} /^([A-F0-9]{9,})/{id=$1} /from=</{from=$2} /to=</{to=$2; print id "," state "," from "," to}'
6. Analiz & Forensik Yaklaşımı
-
İlk Adım: İzolasyon
-
Şüpheli sunucu ağdan izole edilir (broad outbound engelleme veya host-based firewall ile port 25/587 çıkışı kısıtla).
-
-
Kuyruk Snapshot’u Al
-
tar czf /tmp/postfix-queue-snap.tgz /var/spool/postfix
(salt okunur snapshot alın, orijinal silinmeden önce).
-
-
Logların Korunması
-
/var/log/maillog
,/var/log/auth.log
gibi logları kopyala; timestamp doğrula.
-
-
IDS/Kural Analizi
-
Mail IDs ile
postcat
kullanıp başlık, envelope ve gövde incelenir.
-
-
Dosya Sahipliği ve İzin Analizi
-
stat
ile UID/GID, at time shift, ACL kontrolü, SUID/SGID dosyalar.
-
-
Hash ve İmza
-
Kuyruk dosyalarının hash’ini al; daha sonra rollback ve change detection için sakla:
-
find /var/spool/postfix -type f -exec sha256sum {} \; > /tmp/postfix-queue-hashes.txt
-
Malicious Patterns
-
Aynı gövdeyi taşıyan çok sayıda mesaj, rastgele adres listeleri, long encoded payload’lar, base64 overuse gibi pattern’leri tespit et.
-
7. Önleme / Mitigasyon (Pratik Öneriler)
İzinler & Sahiplik
-
Postfix dizinlerinin sahipliğini ve izinlerini kesinleştir:
chown -R postfix:postfix /var/spool/postfix
find /var/spool/postfix -type d -exec chmod 0750 {} \;
find /var/spool/postfix -type f -exec chmod 0640 {} \;
-
Kuyruğa doğrudan erişim mümkün olmasın; postfix işlemi harici kullanıcılar yerine dedicated kullanıcı ile çalışmalı.
Audit & Monitoring
-
auditd
kuralı eklensin:
auditctl -w /var/spool/postfix -p wa -k postfix_queue_change
-
inotify veya File Integrity Monitoring (Tripwire, OSSEC, AIDE) ile real-time değişim alarmı.
Komut Erişim Kontrolü
-
sudo
yapılandırmasını sıkı tut;postsuper
/postqueue
komutlarına kimlerin erişebileceğini sınırlandır.
Rate Limiting & Policy
-
Postfix tarafında
smtpd_client_message_rate_limit
,smtpd_client_recipient_rate_limit
gibi parametreleri kullan:
smtpd_client_message_rate_limit = 100
smtpd_client_recipient_rate_limit = 1000
-
policyd
veyapostfwd
gibi ek policy motorları ile abusive pattern’leri engelle.
Automated Guards
-
SIEM korelasyonuyla
postsuper -r
komutu tetiklendiğinde otomatik alarm. -
SOAR playbook: otomatik izolasyon, kuyruk snapshot alma, SOC bildirimi.
Chroot & Safe Ops
-
Postfix chroot yapılandırmalarını (mümkünse) kontrol et; chroot dışı yazma risklerini minimize et.
Quarantine & Hold Rules
-
Güvenilmeyen kaynaklardan gelen toplu eklemeler otomatik hold’a alınsın; SOC onayı ile release.
8. Örnek SIEM Korelasyon Kuralları (Mantık)
-
Kural A:
postsuper
komutu bir non-admin kullanıcı tarafından çalıştırıldıysa → HIGH alert. -
Kural B: 5 dakika içinde outbound mail count > (baseline * 5) → Investigate queue.
-
Kural C: Çok sayıda
hold
→release
işlemi aynı saat içinde → Trigger SOAR playbook.
9. Otomatik Response Playbook (SOAR)
-
Alarm tetiklendiğinde sunucuyu ağdan izole et (egress 25/587 block).
-
Kuyruk snapshot’u al (
tar
+sha256sum
). -
postqueue -p
çıktısını SIEM’e gönder; postcat ile top 20 mesajı incele. -
Eğer spam campaign doğrulanırsa
postsuper -h
ile toplu hold. -
İlgili gönderen hesapları geçici disable et, parola sıfırlama zorunlu kıl.
-
İletiler ve metadata’yı adli inceleme için sakla (chain-of-custody).
10. İleri Seviye Tavsiyeler
-
Kuyruk dosyalarını periodik olarak hash’leyip değişiklik tespiti.
-
Postfix çalışırken kuyruk dizinleri için SELinux/apparmor profilleri yazın — sadece postfix sürecinin yazmasına izin verin.
-
MTA-level sandboxing: şüpheli kuyruk değişikliklerine karşı host-based inline checks.
-
Outbound mail akışı için “queue watermark” KPI’sı belirleyin; SIEM uyarısı eşiği.
11. Örnek Basit İzleme Scripti (cron ile)
/usr/local/bin/check_postfix_queue.sh
:
#!/bin/bash
THRESH=500
COUNT=$(postqueue -p | tail -n +2 | grep -c '^[A-F0-9]')
if [ "$COUNT" -gt "$THRESH" ]; then
logger -t POSTFIX-ALERT "Queue size $COUNT exceeds threshold $THRESH"
# optionally: send mail to SOC or call webhook
fi
cron:
*/5 * * * * root /usr/local/bin/check_postfix_queue.sh
Postfix kuyruk manipülasyonu, doğrudan MTA katmanında yapılan, tespit edilmesi zor ama etkisi büyük bir saldırı türüdür. Korunmak için: izinleri sıkılaştırın, kuyruk aktivitelerini izleyin (auditd/inotify), postqueue/postsuper kullanımını kısıtlayın, SIEM ile log korelasyonu kurun ve SOAR playbook’ları ile otomatik müdahale hazırlayın. Adli inceleme için snapshot ve hash alma süreçlerini rutine koyun.