Kısa cevap: Temizlik ikinci adımdır. Birinci adım kanıtı korumak ve girişi kapatmaktır. Sıra şöyledir: siteyi izole edin, bozuk hâlin bir kopyasını ayrı bir yere alın, günlükleri indirin, bütün erişim bilgilerini değiştirin, çekirdek dosyaları ve eklentileri temiz sürümlerle DEĞİŞTİRİN, sonra gizlenmiş kalıcılık yollarını temizleyin. Bu sırayı atlayıp doğrudan görünen zararı silmek, aynı açıktan tekrar girilmesine yol açar ve ikinci temizlik birincinin iki katı sürer.
Neden önce kanıt, sonra temizlik
Bir güvenlik olayında ilk refleks silmektir. Oysa sildiğiniz şey aynı zamanda tek kanıtınızdır. Hangi dosyanın ne zaman değiştiğini, hangi hesabın nereden giriş yaptığını ve saldırının hangi kapıdan geldiğini ancak olayın anlık fotoğrafı elinizde kalırsa bulabilirsiniz. Kapı bulunmazsa temizlik bir bakım işine dönüşür: belirti gider, sebep kalır.
İkinci sebep karşılaştırmadır. Temizlikten sonra “şimdi her şey yerinde mi” sorusunu cevaplamanın tek yolu, temiz hâli bozuk hâlle karşılaştırmaktır. Kopya yoksa karşılaştırma da yoktur; eksik kalan bir arka kapıyı fark etmeniz için sitenin yeniden bozulmasını beklemek gerekir.
Üçüncü sebep girişin kapanmasıdır. Siteyi temizleyip erişim bilgilerini değiştirmezseniz, saldırgan hâlâ içeridedir. Çalınmış bir yönetici parolası ya da açık kalmış bir oturum, temizlik bittikten yarım saat sonra her şeyi geri koyabilir. Bu yüzden parola değişikliği temizlikten SONRA değil, ÖNCE yapılır.
Kalıcılık yolları: saldırgan nereye saklanır
Kalıcılık (persistence), saldırganın bir kez girdikten sonra tekrar girebilmek için bıraktığı izdir. Görünen zarar bunun yalnızca üstüdür. Aşağıdaki tablo pratikte en sık karşılaşılan yerleri toplar.
| Nereye saklanır | Belirtisi | Nasıl temizlenir |
|---|---|---|
| Yetkisiz yönetici hesapları | Kullanıcı listesinde tanımadığınız ad, tuhaf bir e-posta adresi | Hesabı silin, kalan yöneticilerin hepsinin parolasını değiştirin |
| Zamanlanmış görevler (cron) | Temizlenen dosyaların bir süre sonra geri gelmesi | Görev listesini tek tek okuyun, tanımadığınız kaydı kaldırın |
| Yapılandırma dosyasına eklenen yönlendirme kuralları | Arama sonucundan gelen ziyaretçinin başka siteye düşmesi | Kuralları temiz bir sürümle değiştirin, gizli dosyaları da tarayın |
| Yükleme klasörüne bırakılmış çalıştırılabilir dosyalar | Görsel klasöründe betik uzantılı dosyalar, tuhaf adlar | Silin ve o klasörde betik çalıştırmayı sunucu düzeyinde kapatın |
| Tema ve eklenti dosyalarına gömülmüş uzaktan kod çağrıları | Tek satırda biten, okunmaz hâle getirilmiş uzun kod blokları | Eklenti ve temayı kaynağından yeniden kurun, düzeltmeye çalışmayın |
| Veritabanındaki ayar ve içerik kayıtlarına eklenen betik | Dosyalar temiz olduğu hâlde sayfada beliren açılır pencere | Ayar tablolarını ve içerik alanlarını arayıp eklenen kodu çıkarın |
| Pasif edilmiş ama dosyası duran eklenti ve temalar | Belirti yok; dosya doğrudan adresle çağrılabilir durumdadır | Pasif etmek yetmez; kullanılmayan her eklenti ve temayı SİLİN |
| Eski kurulum ve yedek dosyaları | Web kökünde arşivler, kurulum betikleri, yedek adlı dizinler | Web kökünden kaldırın; yedek web ile erişilebilir yerde durmaz |
Tablonun en çok atlanan satırı sondan ikincisidir. Bir eklentiyi pasif etmek, dosyalarını sunucudan kaldırmaz; dosya duruyorsa doğrudan adresiyle çağrılabilir ve içindeki açık hâlâ kullanılabilir. Bu yüzden kullanılmayan eklenti ve temaların pasif edilmesi değil, silinmesi gerekir.
Adım adım: olaydan temiz siteye
- İzole edin. Siteyi bakım moduna alın ya da geçici olarak kapatın. Bu, hem ziyaretçinin zarar görmesini durdurur hem de temizlik sırasında sitenin üzerine yeni içerik eklenmesini engeller.
- Mevcut bozuk hâlin bir kopyasını ayrı bir yere alın. Dosyalar ve veritabanı. Bu kopya kanıt ve karşılaştırma içindir; temizlikten sonra neyin değiştiğini ancak bununla görebilirsiniz. Kopyayı çalışan sunucudan ayrı tutun ve üzerine yazılmasını engelleyin.
- Günlükleri indirin. Erişim ve hata günlükleri, dosya aktarım oturumları ve yönetici giriş kayıtları. Günlükler genelde belirli bir süre sonra döndürülüp silinir; bu yüzden indirmek beklenmez, hemen yapılır.
- Bütün erişim bilgilerini değiştirin ve açık oturumları kapatın. Yönetim paneli, veritabanı kullanıcısı, dosya aktarım hesapları, hosting paneli, alan adı paneli ve e-posta. Parola değiştirmek açık oturumları kendiliğinden düşürmez; oturumları ayrıca kapatmak gerekir.
- Çekirdek dosyaları ve eklentileri temiz sürümlerle DEĞİŞTİRİN. Bulaşmış dosyaları tek tek temizlemeye çalışmak yerine kaynağından yeniden kurun. Tek bir satırı kaçırmak bütün işi boşa çıkarır; değiştirmek ise tam sonuç verir.
- Kendi yazdığınız dosyaları ve veritabanını değişiklik tarihine göre tarayın. Özel kodun temiz bir karşılığı olmadığı için burada karşılaştırma yapmak gerekir: olay tarihinden sonra değişmiş dosyaları listeleyin ve eklenen kodu bulun.
- Gizlenmiş kalıcılık yollarını temizleyin. Yetkisiz yönetici hesapları, zamanlanmış görevler, yapılandırma dosyasına eklenen yönlendirme kuralları, yükleme klasörüne bırakılmış çalıştırılabilir dosyalar ve tema dosyalarına gömülmüş uzaktan kod çağrıları. Bu adım atlanırsa site bir hafta içinde geri bozulur.
- Siteyi yeniden açın ve inceleme talebi gönderin. Önleme önlemlerini aldıktan sonra bakım modunu kaldırın, sonra Search Console üzerinden güvenlik uyarısının kaldırılması için inceleme isteyin ve sonraki günlerde günlükleri izlemeye devam edin.
Search Console tarafı ve olay notu
Temizlik bittikten sonra arama tarafındaki uyarıyı kaldırmak için Search Console'daki Güvenlik Sorunları bölümünden inceleme talebi gönderilir. Kritik ayrıntı şudur: mülk doğrulanmış değilse bunu yapamazsınız. Yani mülkün olaydan ÖNCE kurulmuş olması gerekir; olay sırasında doğrulama yapmaya çalışmak, siteye dosya yükleyebilmeyi ya da DNS kaydı ekleyebilmeyi gerektirir ve o anda ikisi de zor olabilir. Search Console mülkünü kurmak bu yüzden bir güvenlik hazırlığıdır.
Olay sırasında tutulan not, hem incelemeye hem de sonraki değerlendirmeye temel olur. Aşağıdaki kalıpta köşeli parantez içindeki kısımlar sizin dolduracağınız YER TUTUCULARDIR.
OLAY NOTU / [site adi] # ne zaman fark edildi : [tarih ve saat] nasil fark edildi: [tarayici uyarisi / musteri bildirimi / arama sonucu] gunluklerdeki en eski suphe: [tarih ve saat] # ne goruldu belirti : [yonlendirme / eklenen sayfa / tahrif / spam e-posta] etkilenen yerler: [dosyalar / veritabani / posta kutulari] # ne yapildi izolasyon : [bakim modu / gecici kapatma], saat [...] kanit kopyasi : [nerede duruyor] gunlukler : [indirildi mi, nerede] degistirilen erisim bilgileri: [panel / veritabani / dosya aktarimi / hosting / alan adi / e-posta] temiz surumle degistirilenler: [cekirdek / eklentiler / tema] bulunan kalicilik yollari: [hesap / cron / yonlendirme kurali / yuklenen dosya] # sonrasi onleme onlemleri: [guncelleme / silinen eklentiler / iki adimli dogrulama / yetki daraltma] inceleme talebi : [tarih] kisisel veri etkilenmis olabilir mi: [evet / hayir / belirsiz] - hukuk tarafina soruldu: [tarih]
Kişisel veri boyutu atlanacak bir ayrıntı değil
Müşteri verisi barındıran bir sitede yaşanan bir güvenlik olayı yalnızca teknik bir arıza değildir. Sipariş kayıtları, iletişim formu gönderimleri, üye bilgileri ya da posta kutuları etkilenmiş olabilir; bu durumda olayın kayıt altına alınması ve bir ihlal olup olmadığının değerlendirilmesi gerekir. Değerlendirme teknik ekibin tek başına vereceği bir karar değildir.
Burada kasıtlı olarak bir süre ya da yükümlülük yazmıyoruz: bildirim gerekip gerekmediği, kime ve hangi biçimde yapılacağı hukuk tarafının değerlendirmesine bağlıdır ve olayın niteliğine göre değişir. Teknik tarafın işi şudur: neyin etkilendiğini, hangi veri kategorilerinin söz konusu olduğunu ve zaman çizelgesini yazılı hâle getirmek, sonra bunu hukuk tarafıyla konuşmak. Yazılı bir not olmadan bu değerlendirme yapılamaz.
Önleme: ikinci olayı engellemek
- Güncellemeleri geciktirmeyin. Yayınlanmış bir açık, yayınlandığı anda taranmaya başlar. Haftalarca bekleyen bir güncelleme, kapısı açık bırakılmış bir ev anlamına gelir.
- Kullanılmayan eklenti ve temaları SİLİN. Pasif etmek yetmez; dosya sunucuda duruyorsa doğrudan çağrılabilir. Bu, en sık atlanan ve en kolay kapatılan açıktır.
- Yönetim paneline iki adımlı doğrulama koyun. Çalınmış ya da tahmin edilmiş bir parola tek başına yeterli olmaz. Yönetici sayısı az olduğu için bu önlemin maliyeti de düşüktür.
- Yükleme klasöründe betik çalıştırmayı kapatın. O klasöre yüklenen bir dosya en kötü hâlde bir dosya olarak kalır, çalışan bir program olarak değil. Tek bir sunucu ayarı, en yaygın giriş yolunu kapatır.
- Her kullanıcıya en az yetki verin. İçerik yazan kişinin eklenti kurma yetkisi olmamalı. Yetki dağıtımı, bir hesabın ele geçmesi hâlinde zararın tavanını belirler.
- Dosya değişikliği izlemeyi açın. Beklenmeyen bir dosya değiştiğinde haber alırsanız olayı günler değil dakikalar içinde fark edersiniz. Bu, temizlik maliyetini doğrudan düşürür.
- Yedeğin sunucu dışında ve sürümlü olmasını sağlayın. Aynı sunucudaki yedek, bir olayda saldırganın da erişebildiği yedektir. Sürümlü saklama, bozulmanın fark edilmesinden önceki temiz bir noktaya dönme imkânı verir.
Yaygın hatalar
- Kanıtı ve günlükleri korumadan temizliğe başlamak. Giriş yolu bulunamaz, temizlik belirtiyi alır sebebi bırakır. Günlükler bir süre sonra döndürülüp silindiğinde geri getirilemez.
- Yalnızca görünen zararı silip arka kapıyı bırakmak. Tahrif edilen sayfa düzelir, site bir hafta sonra aynen bozulur. Bu döngü, kalıcılık yolları taranmadığı sürece sürer.
- Şifreleri değiştirmeden siteyi açmak. Saldırgan hâlâ içeridedir ve temizliğinizi geri alır. Parola değişikliği temizlikten sonra değil, başında yapılır.
- Yedekten geri dönüp aynı açığı da geri getirmek. Yedek, olaydan önceki hâli taşır – giriş yolunu da. Geri dönüşten sonra güncellemeleri ve önlemleri mutlaka uygulayın, yoksa aynı senaryo tekrarlanır.
- Aynı sunucudaki diğer siteleri kontrol etmemek. Paylaşımlı sunucuda bulaşma yanal yayılır: bir sitedeki açık, aynı hesaptaki diğer siteleri de götürür. Temizlik hesabın tamamında yapılır.
- “Google uyarısı kalktı” diye denetimi bırakmak. Uyarının kalkması temizliğin tam olduğunu kanıtlamaz; yalnızca o anda tarananlarda bulgu olmadığını gösterir. Sonraki haftalar boyunca günlükleri ve dosya değişikliklerini izlemeye devam edin.
Ne zaman uzmana bırakmalı
Tek bir eklentiden gelen basit bir bulaşma, yedeği ve günlükleri yerinde olan bir sitede tek oturumda temizlenir. Şu durumlarda işin niteliği değişir: sitede müşteri verisi varsa, aynı hesapta birden fazla site barınıyorsa, bulaşma posta kutularına ya da giden e-postaya yayılmışsa (alan adınız kara listeye düşebilir), olay birden fazla kez tekrarlamışsa ya da güvenilir bir yedek yoksa. Son durumda temizlik, karşılaştırılacak temiz bir referans olmadan yapılacağı için en pahalı senaryodur.
Mevcut durumun ölçülmüş bir fotoğrafını ve kapanmamış açıkların listesini istiyorsanız teknik denetim çalışmamız dosya bütünlüğünü, yetkileri, güncellemeleri ve kalıcılık yollarını tek tek kontrol ediyor. Sorularınızı iletişim sayfasından yazabilirsiniz.
Devamını okumak için
Bu yazının en çok ihtiyaç duyduğu hazırlık yedektir: site yedekleme ve kurtarma yazısı kopyanın nerede durması ve nasıl denenmesi gerektiğini anlatıyor. Temizlikten sonra şifresiz kaynaklar ve bozuk sertifika kalmasın diye SSL kurulumu ve karışık içerik yazısına bakın. Uyarı kalktığı hâlde sayfalar aramada görünmüyorsa sitem Google'da çıkmıyor yazısı sebepleri sırayla eliyor. Müşteri verisi tarafı için KVKK uyumlu müşteri verisi yazısı neyin nerede tutulduğunu ele alıyor. Tüm başlıklar blog sayfamızda, çalışma alanlarımız ana sayfamızda.