Güvenlik

WordPress Sitem Hacklendi Ne Yapmalıyım? İlk Saat Planı

8 dk okuma

Kısa cevapWordPress sitem hacklendi ne yapmalıyım sorusunun kısa cevabı şu: önce sakin kalıp belirtileri doğrulayın, siteyi ziyaretçilere kapatın, kanıt için mevcut hâlinin yedeğini alın, sonra tüm şifreleri ve güvenlik anahtarlarını değiştirin. Ardından çekirdek dosyalarını resmi kopyayla yenileyin, eklenti ve temaları temizleyin, arka kapıları arayın ve temizlik bittikten sonra Google ile kara liste incelemesi isteyin.

Sitenizin bir sabah başka bir sayfaya yönlendirmesi, Google sonuçlarında Çince ya da ilaç reklamı başlıkları görünmesi ya da hosting firmasından askıya alma e-postası gelmesi korkutucu. Bu rehber, hacklenmiş bir WordPress sitesinde ilk saatte hangi sırayla ne yapmanız gerektiğini anlatır. Sıra önemli, çünkü aktif erişimi kesmeden temizlik yaparsanız saldırgan geri girer, yedek almadan temizlik yaparsanız nasıl girildiğini öğrenme şansını kaybedersiniz.

Sitenin gerçekten hacklendiğini nasıl anlarım?

Önce belirtileri doğrulayın, çünkü her bozulma hack değildir. Başarısız bir güncelleme, uyumsuz eklenti ya da hosting kaynak limiti de benzer hatalar verir. WordPress.org dokümantasyonu, net saldırı göstergeleri olarak şunları sayar: sitenin Google veya Bing tarafından kara listeye alınması, hostingin siteyi kapatması, zararlı yazılım dağıttığı için işaretlenmesi, ziyaretçilerin antivirüs uyarısı bildirmesi, sitenin başka sitelere saldırıda kullanıldığı bilgisi, yetkisiz davranışlar (örneğin kendi oluşturmadığınız yeni kullanıcılar) ve sitenin tarayıcıda gözle görülür şekilde değiştirilmiş olması.

  • Ana sayfa yalnızca mobilde ya da yalnızca Google'dan gelen ziyaretçilere farklı bir siteye yönleniyor.
  • Arama sonuçlarında sitenizin başlıkları ve açıklamaları sizin yazmadığınız metinlerle değişmiş.
  • Yönetici listesinde tanımadığınız bir hesap var. Ayrıntılı kontrol için bilinmeyen yönetici hesabı rehberine bakın.
  • Dosya yöneticisinde yakın tarihli değişmiş, adı tuhaf PHP dosyaları görüyorsunuz.
  • Hosting kaynak kullanımınız sebepsiz yükseldi ya da e-posta gönderiminiz spam nedeniyle kısıtlandı.

Emin olamıyorsanız da aşağıdaki adımların ilk ikisini yapmak zarar vermez. Siteyi kapatmak ve yedek almak, yanlış alarm çıksa bile kaybettirmez.

İlk saatte hangi sırayla ilerlemeliyim?

İlk saatin amacı hasarı durdurmak ve kanıtı korumaktır, temizliği bitirmek değil. Aşağıdaki sıra, WordPress.org dokümantasyonundaki "Document, Scan, Reset, Backup, Find and remove" akışıyla örtüşür.

  1. 1Not alın. Ne gördüğünüzü, ne zaman fark ettiğinizi ve son günlerde hangi eklentiyi, temayı ya da güncellemeyi yüklediğinizi yazın. Bu notlar hem size hem destek alacağınız kişiye yol gösterir.
  2. 2Siteyi ziyaretçilere kapatın. Zararlı içerik yayılmaya devam etmesin. Hosting panelinden siteyi geçici olarak durdurabilir, SSH erişiminiz varsa wp maintenance-mode activate komutunu kullanabilir ya da .htaccess ile yalnızca kendi IP adresine izin verebilirsiniz.
  3. 3Mevcut durumun yedeğini alın. Dosyalar ve veritabanı, olduğu gibi. Temizlik sırasında bir şeyi bozarsanız geri dönebilmeniz ve saldırganın nasıl girdiğini sonradan inceleyebilmeniz için bu kopya gerekli. Bu kopyayı temiz kabul edip geri yüklemeyeceksiniz.
  4. 4Kendi bilgisayarınızı tarayın. WordPress.org rehberi, enfeksiyonun sıklıkla yerel bilgisayardaki bir trojan yüzünden FTP ve yönetici şifrelerinin çalınmasıyla başladığını belirtir. Şifreleri temiz olmayan bir cihazdan değiştirmek anlamsız.
  5. 5Hosting firmasına yazın. Paylaşımlı hostingde aynı sunucudaki diğer siteler de etkilenmiş olabilir. Sunucu günlükleri (erişim ve hata kayıtları) saldırının girişini gösterebilir.

Hangi şifreleri ve anahtarları değiştirmeliyim?

Her erişim noktasının şifresini değiştirin: WordPress yöneticileri (tüm kullanıcılar), hosting paneli, FTP veya SFTP, veritabanı kullanıcısı ve alan adı e-postası. Sıra üç adımdır: (1) Temiz bir cihazdan tüm şifreleri hemen değiştirin ve aşağıdaki komutla oturumları düşürün, bu aktif erişimi keser. (2) Kalıcılık noktalarını (uygulama şifreleri, mu-plugins, zamanlanmış görevler, arka kapılar, yeni yöneticiler) temizleyin. (3) Temizlik bitince şifreleri ve tuzları bir kez daha yenileyin. WordPress.org rehberi de aynı şeyi söyler: ilk değişiklikten sonra site hâlâ enfekteyse yeni şifreler de çalınmış olabilir.

Giriş çerezlerini de geçersiz kılmak için wp-config.php içindeki güvenlik anahtarlarını ve tuzları (salts) yenileyin. Elle yapacaksanız resmi üreteçten (api.wordpress.org/secret-key/1.1/salt/) yeni değerleri alıp eski sekiz satırın yerine yapıştırın. WP-CLI varsa tek komut yeter:

wp config shuffle-salts

WP-CLI dokümantasyonu bu komutun wp-config.php içindeki tuzları yenilediğini ve çerezleri geçersiz kılarak kullanıcıların bir sonraki ziyarette yeniden giriş yapmasını gerektirdiğini belirtir. Veritabanı kullanıcısının şifresini değiştirirseniz wp-config.php içindeki DB_PASSWORD değerini de güncellemeyi unutmayın, yoksa site veritabanına bağlanamaz.

Çekirdek dosyalarını nasıl doğrulayıp yenilerim?

Önce bozulan dosyaları saptamak için WP-CLI ile çekirdek dosyalarını WordPress.org'un resmi sağlama toplamlarıyla karşılaştırın. Komut WordPress'i yüklemeden çalıştığı için eklenti ve temalara yerleşmiş kod bu kontrolü etkileyemez. Ancak wp-content klasörünü kapsamaz.

wp core verify-checksums
wp core verify-checksums --include-root

--include-root seçeneği, kök dizindeki WordPress'e ait olmayan dosyaları da uyarı olarak listeler. Çıkan dosya adlarını not alın: bunlar saldırganın bıraktığı izlerin bir kısmıdır. Sonra çekirdeği temiz kopyayla değiştirin. WordPress.org rehberi, yönetici panelindeki yeniden yükleme seçeneklerini kullanmamanızı söyler, çünkü bu yükleyiciler çoğunlukla yalnızca mevcut dosyaların üzerine yazar, saldırganlar ise yeni dosyalar ekler. Aynı sürümü kullanın, farklı sürüm siteyi bozabilir.

# Sürümü ve dili Gösterge Paneli > Güncellemeler ekranından teyit edin
wp core version

# wp-admin ve wp-includes klasörlerini silin, sonra temiz kopyayı indirin
# wp-content ve wp-config.php'ye dokunmayın
wp core download --force --skip-content --version=SURUM --locale=tr_TR

SURUM yerine kendi sürümünüzü yazın. --skip-content varsayılan tema ve eklentilerin indirilmesini atlar, --force ise mevcut dosyaların üzerine yazar. FTP ile yapıyorsanız resmi WordPress paketini indirip wp-admin ve wp-includes klasörlerini silip yerine koyabilirsiniz. wp-config.php ve wp-content sizin verinizdir, onlara elle bakın.

Kontrol edilecek dosyalar
Çekirdek yenilenince bile .htaccess, wp-config.php, index.php, tema klasöründeki functions.php, header.php, footer.php ve wp-content/uploads içindeki PHP dosyalarına elle bakın. Saldırganlar bu dosyaları sık hedefler, çünkü her sayfa isteğini etkilerler.

Eklenti, tema ve arka kapıları nasıl temizlerim?

Eklenti ve temaları, resmî kaynaktan indirdiğiniz temiz kopyalarla değiştirmek en güvenli yoldur. WordPress.org deposundaki eklentiler için sağlama toplamı kontrolü de yapabilirsiniz:

wp plugin verify-checksums --all
wp plugin install EKLENTI-SLUG --force
wp theme install TEMA-SLUG --force

Eklenti sağlama toplamı kontrolü yalnızca WordPress.org deposundaki eklentileri doğrular. Ücretli ya da üçüncü taraf eklentileri bu yolla doğrulayamazsınız, bunları satıcının resmi paketinden yeniden yüklemelisiniz. Kullanmadığınız eklenti ve temaları tamamen silin, devre dışı bırakmak yetmez. Korsan (nulled) bir eklenti ya da tema yüklediyseniz büyük olasılıkla saldırının kaynağı budur, geri yüklemeyin.

Dosya sistemi temizlendikten sonra arka kapıları arayın. Çalışan siteye geri dönüş kapısı bırakmak saldırganların standart davranışıdır. Bakılacak yerler:

  • wp-content/uploads içinde .php uzantılı herhangi bir dosya. Orada hiç PHP olmamalı.
  • wp-content/mu-plugins klasörü. Buradaki dosyalar eklenti listesinde normal eklenti gibi kapatılamaz, yalnızca Eklentiler ekranındaki "Must-Use" sekmesinde görünür.
  • wp-content kökündeki drop-in dosyaları (advanced-cache.php, object-cache.php, db.php). Önbellek eklentiniz kullanmıyorsa şüpheli sayın.
  • Son günlerde değişen dosyalar. Bu konunun ayrıntısı için WordPress zararlı kod taraması rehberine bakın.
  • Zamanlanmış görevler: wp cron event list ile tanımadığınız bir olay var mı kontrol edin.
  • Veritabanında wp_options ve yazı içeriklerinde enjekte edilmiş <script> ve <iframe> etiketleri.

Saldırganın eklediği yönetici hesapları

Saldırganlar çoğunlukla kendilerine yönetici hesabı açar. wp user list --role=administrator komutuyla ya da Kullanıcılar ekranından listeleyin ve tanımadıklarınızı not alın. Silmeden önce yapılacaklar, kalıcılık araçları (uygulama şifreleri gibi) ve içerik sahipliği için bilinmeyen yönetici hesabı rehberimizde adım adım anlattık.

Temizlik sonrası dosya sayısı çok fazla ya da iz çok derinse, eldeki en güvenilir seçenek hack tarihinden önce alınmış temiz bir yedeği geri yüklemek ve sonra güncellemek olabilir. Yedekleme düzeniniz yoksa WordPress yedek geri yükleme rehberini inceleyebilirsiniz. Geri yüklenen yedeğin de zafiyeti taşıdığını unutmayın: açığı kapatmadan geri yüklerseniz saldırgan yeniden girer.

Google uyarısını ve kara listeyi nasıl kaldırırım?

Site temizlendikten sonra Google Search Console'daki Güvenlik sorunları raporunu açın. Google'ın dokümantasyonuna göre bu rapor, sitenin hacklendiğini ya da ziyaretçilere zarar verebilecek davranışlar içerdiğini gösterir ve arama sonuçlarında uyarı etiketine ya da tarayıcıda uyarı sayfasına yol açabilir. Raporda listelenen sorunları giderdikten sonra rapordan inceleme talebi gönderin. Google inceleme ilerlemesini e-postayla bildirir.

Search Console hesabınız yoksa şimdi doğrulayın, çünkü ayrıntılı rapor ve inceleme talebi için Search Console gerekir. Bing için Bing Webmaster Tools, tarayıcı uyarıları için Google Safe Browsing site durumu sayfası ve Sucuri SiteCheck gibi uzaktan tarayıcılar kara liste durumunu hızlıca gösterir. Sucuri, uzaktan tarayıcının yalnızca tarayıcı düzeyinde görünen içeriğe baktığını, sunucu tarafındaki arka kapıları yakalayamayacağını kendi sayfasında belirtir. Yani temiz çıkan bir SiteCheck sonucu siteyi temiz kanıtlamaz. Araçların sınırları için hangi güvenlik tarama aracı yazımıza bakın.

Siteniz SSL hatası da veriyorsa bunun hack ile ilgisi olmayabilir, SSL sertifikası süresi dolduğunda ne yapılacağını ayrı olarak kontrol edin.

Bir daha hacklenmemek için neyi sertleştirmeliyim?

Saldırganın nasıl girdiğini bulamadıysanız aynı yoldan yeniden girebilir. Giriş yolu çoğunlukla güncellenmemiş bir eklenti, zayıf bir şifre ya da çalınmış bir hesaptır. Temizlik sonrası şunları uygulayın:

  • WordPress çekirdeğini, eklentileri ve temaları güncelleyin, kullanmadıklarınızı silin. Güvenli bir düzen için WordPress güncelleme rehberine göz atın.
  • Yönetici hesapları için iki adımlı doğrulama açın ve her kullanıcıya tek kullanımlık, uzun şifre verin. Genel liste için WordPress güvenlik kontrol listesini kullanın.
  • wp-config.php içine define( 'DISALLOW_FILE_EDIT', true ); ekleyin. WordPress dokümantasyonuna göre bu, panelden tema ve eklenti dosyası düzenlemeyi kapatır, ancak dosya yükleme saldırılarını tek başına durdurmaz.
  • Dosya izinlerini WordPress önerisine getirin: klasörler 755, dosyalar 644. Kök dizin ve wp-admin ile wp-includes yalnızca kendi kullanıcı hesabınız tarafından yazılabilir olmalı.
  • Veritabanı kullanıcısına yalnızca gereken yetkileri verin. WordPress belgeleri SELECT, INSERT, UPDATE ve DELETE yetkilerinin yeterli olduğunu söyler, ancak büyük sürüm güncellemeleri için geçici olarak daha fazlası gerekebilir.
  • Düzenli yedek alın ve en az bir kopyayı sunucu dışında tutun. Düzenli yedek, bir sonraki olayda saatleri kurtarır.

Sık sorulan sorular

Hacklenen siteyi kendim temizleyebilir miyim?

Küçük bir enfeksiyonda, doğru adımları sırayla izlerseniz evet. Ancak saldırganın giriş yolunu bulamadıysanız ya da site müşterilerine ait veri tutuyorsa bir güvenlik uzmanıyla çalışmak daha güvenlidir. Yedeğinizi her zaman önce alın.

Temiz yedeği geri yüklemek yeterli mi?

Tek başına değil. Yedek, hack tarihinden önceki bir tarihe aitse siteyi eski haline getirir ama saldırganın kullandığı açık hâlâ duruyorsa tekrar girer. Geri yükleme sonrası hemen güncelleme yapın, şifreleri ve anahtarları yenileyin.

Şifre değiştirmek yeterli olur mu?

Hayır. Şifre yalnızca hesap erişimini kapatır. Dosyalardaki arka kapılar, saldırganın eklediği yönetici hesapları ve zamanlanmış görevler şifre değişse de çalışır. Şifre ve tuz değişimi temizlikten önce ve sonra olmak üzere iki kez yapılmalı.

Google uyarısı ne kadar sürede kalkar?

Google, inceleme sonucunu Search Console e-postasıyla bildirir. Google resmi bir süre vermiyor. Uyarının kalkması için önce gerçekten temiz olmanız gerekir, aksi hâlde talep reddedilir.

Bir sonraki olayı daha erken yakalayın

Watch Your WP, WordPress çekirdek dosyalarını resmi sağlama toplamlarıyla karşılaştırır, yeni yönetici hesabı ve rol yükseltmeyi panelde işaretler, kara liste durumuna bakar. Tarama her gün otomatik çalışır ve ücretsizdir. Eklenti ve tema klasöründeki zararlı kodu kendi imzalarımızla arayan tarama henüz yok, yakında.

Kaynaklar

Ücretsiz araç: sitenizi kontrol edin
Sitenizin SSL süresini, WordPress sürümünü, güvenlik başlıklarını ve yanıt süresini kayıt olmadan saniyeler içinde görün: ücretsiz WordPress site kontrolü.
Paylaş
Erdinç

Erdinç

Watch Your WP'yi geliştiriyor. WordPress bakım, güvenlik ve site yönetimi deneyiminden yazıyor.

LinkedIn