Spam kaynağı mail sunucusunda değil web sunucusunda olduğunda, mail logları tek başına yetmez: PHP’nin mail() fonksiyonuyla gönderilen postalar çoğu zaman kimlik doğrulaması olmadan çıkar ve log’da gönderen script görünmez. Bu makale, platformlar arası bu kesişen sorunu — istismar edilmiş bir PHP dosyasını — nasıl bulacağınızı anlatır. Genel akış için teşhis rehberine, Exim’e özgü cwd= yöntemi için cPanel/Exim makalesine bakın.
Önce Sinyali Açın: mail.log ve X-PHP-Originating-Script
PHP, her mail() çağrısını (ve onu tetikleyen script’i) kaydedebilir; ama bu genelde kapalıdır. İki katmanı açın:
# php.ini içinde PHP'nin mail çağrılarını kaydetmesi için:
mail.log = /var/log/php-mail.log
# (mail.add_x_header = On ile de başlıklara script bilgisi eklenir)
Postfix tarafında ise header_checks ile X-PHP-Originating-Script (veya X-PHP-Script) başlığını loglayarak, hangi dosyanın mail ürettiğini kalıcı biçimde kayıt altına alabilirsiniz. Bu iki ayarı önceden kurmak, bir sonraki olayda teşhisi dakikalara indirir.
Son Değişen Dosyalardan Şüpheliyi Daraltma
Arka kapılar (backdoor / mailer script) genelde yeni yüklenmiş ya da yakın zamanda değiştirilmiştir. Arka kapı avının başlangıcı:
# Son 2 günde değişen PHP dosyaları — arka kapı avının başlangıcı
find /var/www -name '*.php' -mtime -2 -printf '%TY-%Tm-%Td %TH:%TM %p\n' | sort
# Şüpheli imzalar: base64/eval ile gizlenmiş kod
grep -RIl --include='*.php' -E 'eval\(|base64_decode\(|gzinflate\(|str_rot13\(' /var/www | head
WordPress / Joomla Eklenti İstismarının İzleri
wp-content/uploadsiçinde .php dosyası (uploads klasöründe normalde PHP olmaz — güçlü şüphe).- Tema/eklenti dizininde ada uymayan, rastgele isimli dosyalar.
- Güncel olmayan eklentiler ve
xmlrpc.phpüzerinden kötüye kullanım.
İletişim Formu Kötüye Kullanımı ile Gerçek Arka Kapı Ayrımı
Her PHP kaynaklı spam bir arka kapı değildir. Meşru bir iletişim/kayıt formunun kötüye kullanılması da benzer görünür ama farklı çözülür: formun kaynağı meşru dosyadır, sorun eksik doğrulama (CAPTCHA/rate limit) veya açık yönlendirmedir. Gerçek arka kapı ise gizlenmiş kod içerir ve doğrudan gönderim yapar. Apache erişim logunda o dosyaya gelen POST isteklerinin IP ve zaman desenine bakarak ikisini ayırın.
Kalıcı Koruma
- Gerekmiyorsa PHP
mail()fonksiyonunu kapatın (disable_functions). - Gönderimi kimlik doğrulamalı SMTP üzerinden zorunlu kılın (uygulama SMTP ile göndersin).
uploadsgibi dizinlerde PHP çalıştırmayı engelleyin (web sunucusu kuralı).- CMS ve eklentileri güncel tutun; bilinmeyen dosyaları düzenli tarayın.
PHP uygulamalarınızı izole, güncel ve taranan bir ortamda çalıştırmak için yönetilen cPanel hosting çözümleri malware tarama ve gönderim limitlerini hazır sunar. Tekrarı önlemek için kalıcı önlemler makalesine bakın.
Kaynak Kapandı mı? Son Kontrol
- ☐ Zararlı/arka kapı PHP dosyası silindi (yalnızca yeniden adlandırma yetmez)
- ☐ İstismar edilen CMS/eklenti güncellendi, açık kapatıldı
- ☐ mail.log ve X-PHP-Script loglaması kalıcı olarak açık
- ☐
uploadsdizininde PHP çalıştırma engellendi - ☐ Kuyruk temizlendi ve IP yeni tespit almıyor — kontrol edin, sonra çıkarmayı değerlendirin