WordPress güvenlik taraması nasıl yapılır?
WordPress güvenlik taraması yapmayı neden önemsemelisiniz?
Kullanılabilirliği gittikçe artan ve kişiye özel çözümler sunan WordPress artık internetin yüzde 39’unu oluşturuyor. Ancak, en çok kullanılan açık kaynaklı içerik yönetim sistemi (CMS) olan WordPress, güvenlik saldırıları için de bir hedef.
WordPress güvenlik taraması neden bu kadar önemlidir?
WordPress açık kaynaklı bir CMS olduğu için, tasarımını oluşturan her bir kod satırı incelemeye ve kullanıma açıktır. WordPress’in yayınladığı tüm güncellemelere tekrar bakacak olursanız, neredeyse her birinin bir güvenlik yaması içerdiğini görürsünüz. Buradan yöneticilerin, geliştiricilerin ve işletme sahiplerinin anlaması gereken şey, bu sitelerin güvenli ve en önemlisi çevrimiçi kalabilmeleri için düzenli bakıma ihtiyaç duyduklarıdır.
Bununla birlikte, düzenli şekilde yapılan bir WordPress güvenlik taraması, bir web sitesini hasar aldıktan sonra onarmaya çalışmaktan daha az zahmetlidir. Aslında, sitenizin güvenliğinin ihlal edildiğini fark ettiyseniz, çoğu zaman siteyi sıfırdan tekrar oluşturmak, hangi yedeğin (varsa) kötü amaçlı yazılım içerip içermediğini belirlemek için sunucunun tamamını denetlemekten daha kolaydır. Neyse ki, bu süreci daha kolay ve daha hızlı hale getirebilecek ve hatta hizmet tekliflerinize dahil edilebilecek araçlar ve prosedürler var.
Bir WordPress güvenlik taraması, hizmet tekliflerinize nasıl uyabilir?
Müşteriler için site oluşturan çoğu geliştirici, web sitesini korumayı veya güvenliğini sağlamayı teklif etmiyor.
İşletme sahipleri, WordPress site güvenliğini düzenli olarak kontrol etmeleri gerektiği hakkında bilgilendirilmedikleri için, sitelerinin sağlığı konusunda genellikle karanlıkta kalırlar. Bunun sonucunda web sitesi ihmal edilir ve yapılan o kadar yatırım zarar görebilir.
WordPress güvenlik taraması nasıl yapılır: Kontrol listesi
Tamam, müşterinizi internette güvende tutmanın neden önemli olduğunu konuştuk. Ayrıca, bir felaket senaryosunun nasıl herkes için bir kazan-kazan durumuna dönüştürülebileceğini tartıştık. Ancak şimdi de bu yeni hizmetleri ürün hattınıza nasıl uygulayacağınızı merak ediyor olmalısınız. Şimdi aşağı yukarı bir saatinizi harcayarak nasıl gelir elde edebileceğinize dair bir kontrol listesini incelemek üzeresiniz!
- Çekirdek dosyaları, eklentileri ve temaları güncelleyin.
- Kullanılmayan eklentileri ve temaları kaldırın.
- Bir SSL sertifikası yükleyin.
- Güçlü parolalar kullanın.
- Bir güvenlik eklentisi yükleyin.
- Formlarda CAPTCHA kullanın.
- Oturum açma girişimlerini sınırlayın
- Dosya düzenlemeyi kapatın.
- Güvenlik anahtarlarını değiştirin.
- Çekirdek dosyaları .htaccess ile güvende tutun.
- XML-RPC’yi devre dışı bırakın.
- Dosya izinlerini denetleyin.
- PHP hata raporlamasını devre dışı bırakın.
- Bir yedekleme planınız olsun.
1. Çekirdek dosyaları, eklentileri ve temaları güncelleyin
Daha önce WordPress güncellemelerinin neredeyse her zaman güvenlik yamaları içerdiğini söylemiştim. Bu, her zaman müşterilerinizin sitelerinin güvenliğini sağlamalarının ilk adımı olmalıdır ve bu adımlar çok basittir: wp-admin panosuna giriş yapın, fareyle kenar çubuğundaki gösterge tablosu düğmesinin üzerine gelin ve ardından açılır menüden Güncellemeler ögesine tıklayın. Güncellemek istediğiniz öğeleri her birini listeleyerek seçin. Aşağıdaki kod satırını wp-config.php dosyasına ekleyerek çekirdek dosyaları, eklentileri ve temaları otomatik olarak güncelleyebilir ve bu işlemi daha da kolaylaştırabilirsiniz:
// Enable automatic updates for all
define( 'WP_AUTO_UPDATE_CORE', true );
add_filter( 'auto_update_plugin', '__return_true' );
add_filter( 'auto_update_theme', '__return_true' );
Otomatik güncellemeler, bir temanın veya eklentinin çalışma şeklini büyük ölçüde değiştirebilir. Bazılarını ara sıra bozabilir ama bu, sitede güvenlik açıkları bırakmaktan daha avantajlıdır.
2. Kullanılmayan eklentileri ve temaları kaldırın
WordPress’in en büyük özelliklerinden biri, eklentileri indirme ve çalıştırma yeteneğidir, böylece web sitenizin işlevselliğini potansiyel olarak iyileştirir. Bununla birlikte, sitenize gereğinden fazla eklenti yüklemek sizi güvenlik açıklarına daha fazla maruz bırakabilir.
Eklentilerin ve temaların kodlarının kalitesi farklılık gösterebilir çünkü bazıları işletmeler tarafından ve bazıları ise bu işin meraklıları tarafından oluşturulur ve ikisi de mükemmel değildir.
WordPress sitenize eklenen her eklenti ile her kurulumda yeni vektörler açıldığı için sitenin saldırıya uğrama olasılığı o kadar yükselir. Kullanmadığınız eklentileri devre dışı bırakmak yeterli değildir. Savunmasız kodu sunucudan kaldırmak için bunları gerçekten silmeniz gerekir. Kullanılmayan öğeleri kaldırmak, performans için eşit derecede önemlidir ve herhangi bir WordPress güvenlik taramasının parçası olmalıdır. Daha az aktif eklentinizin olması, sitenizin daha güvenli ve daha hızlı çalışması anlamına gelir.
3. Bir SSL sertifikası yükleyin
Her web sitesinin bir SSL sertifikasına sahip olması gerektiği gerçeği şimdiye kadar yeterince açık olmalı. Basitçe söylemek gerekirse hizmet tekliflerinize SSL kurulumları eklemek, istemcinizi güçlendirir, trafiğini güvence altına alır, kullanıcıları kimlik avı saldırılarına karşı korur ve Google sıralamalarını yükseltebilir.
Bu sertifikaları yüklemek inanılmaz derecede hızlı ve kolaydır. Kurulan sertifika ile Genel Ayarlar’a gidip protokolü HTTP’den HTTPS’ye değiştirerek WordPress’teki WordPress Adresini ve Site Adresini değiştirebilirsiniz. Değişiklikleri Kaydet’e tıkladıktan sonra kurulumu tamamlamış olursunuz.
4. Güçlü parolalar kullanın
2020’de kullanılan en yaygın şifreler 123456’dan “şifre”ye kadar uzanıyordu ki bunlar acı verici bir şekilde açık, güvensiz ve hesaba yetkisiz bir kullanıcı tarafından erişilebileceğini garanti ediyor. Web güvenlik şirketlerine göre, güçlü bir şifre en az sekiz rakam, noktalama ve büyük ile küçük harflerin bir karışımını içerir.
WordPress güvenlik taraması birkaç bariz şeyi kapsamalıdır. Aynı parolayı asla iki kez kullanmamalısınız. Özellikle adından da anlaşılacağı gibi sözlük saldırısına eğilimli olduklarından, şifrenizin bir sözlükte veya özel bir isimde bulunabilecek sözcükleri içermemesi de önemlidir.
5. Güvenlik taraması için bir güvenlik eklentisi yükleyin
Güvenlik eklentileri gri bir alana düşer ve sitenizin güvenliğini sağlamaya yardımcı olabildikleri gibi, sizi kolayca yıkıma götürebilirler. Hangi güvenlik eklentilerinin en iyi şekilde çalıştığını bilmek önemlidir.
Bunlar, halihazırda uygulanmış bir güvenlik duvarınız yoksa sitenizi sürekli yaşanan suçlardan koruyacak güvenlik duvarı özelliklerini de sunar. Ancak bu güvenlik eklentileri bazen web sitesi performansına mal olabilir.
Geliştirici olarak, eklenti özelliklerini sunucuda halihazırda çalışan sistemlerle karşılaştırarak ve ayrıca bellek veya işlem gücü gibi mevcut donanım kaynaklarına dikkat ederek bir güvenlik eklentisi kullanıp kullanmayacağınızı belirlemeniz önemlidir.
6. Formlarda CAPTCHA kullanın
Bilgisayar korsanlarının, siteleri tahrif etmek ve kötü amaçlı yazılımları yaymak için giriş bilgilerinizi ele geçirmeleri illa gerekli değildir. WordPress sitenizde captcha içermeyen bir iletişim formu varsa, eninde sonunda sunucunuzun kaldırabileceği kadar spam ve kötü amaçlı e-posta göndermek için kullanılacağından emin olabilirsiniz. Ek olarak, Captcha araçları yönetici hesaplarınızın kaba kuvvet saldırılarını da önler. Biz Google’ın ReCAPTCHA’sını tavsiye ediyoruz, ancak kendi yapacağınız WordPress güvenlik taraması için dilediğiniz eklentiyi kullanmakta serbestsiniz.
7. Oturum açma girişimlerini sınırlayın
Kaba kuvvet saldırısından bahsetmişken, size botlar ve bilgisayar korsanlarına karşı daha fazla koruma sunayım. Limit Login Attempts eklentisi, bir kullanıcıya sadece sınırlı sayıda başarısız giriş yapma hakkı vererek admin sayfanızı koruma altına alır. Bir kullanıcınızın şifresini unutmaya meyilli olması ihtimaline karşın bir beyaz liste de oluşturabilirsiniz.
8. Dosya düzenlemeyi kapatın
WordPress güvenlik taraması gerçekleştirirken, WordPress’in temanızı ve eklenti dosyalarınızı doğrudan yönetici panelinden düzenlemenize izin verdiğini fark edeceksiniz. Bu, istenmeyen sonuçlara sebep olabilecek hayati bir güvenlik açığını ortaya çıkarır. Bilgisayar korsanlarının veya diğer kullanıcıların kasıtlı olarak ya da başka bir şekilde siteyi tahrif etmesini önlemek için en iyisi dosya düzenlemeyi kapatmaktır.
Neyse ki, çözüm wp-config.php dosyanızda başka bir değişikliği içeriyor. Aşağıdakini dosyada kendi satırına eklemeniz yeterli:
// Disable file editting
define('DISALLOW_FILE_EDIT', true);
9. Güvenlik anahtarlarını değiştirin
Wp-config.php dosyanızda saklanan güvenlik anahtarı, tanımlama bilgilerinizde depolanan oturum açma oturumunu şifreler. Bu anahtarların değiştirilmesi, tüm oturumları geçersiz kılar, tüm kullanıcıları kontrol panelinden çıkarır, ancak aynı zamanda bilgisayar korsanlarının açık oturumları ele geçirmesini engeller.
Bu anahtarları değiştirmek, kopyalayıp yapıştırmak kadar kolaydır.
Öncelikle, yeni gizli anahtarlarınızı almak için WordPress güvenlik anahtarı oluşturucusu API’sini kullanın ve ardından bunları kopyalayın. Kopyaladığınız yeni blokla değiştirebileceğiniz, benzer görünen bir kod bloğu bulacaksınız. Bu kod, aşağıdaki gibi görünecek:
define('AUTH_KEY', 'HeW#zltmGurr@u{B97hDiOr;3@<1>-^bbtua-:bC&K4`]*r 6V<-s-GtTq?lLL|h');
define('SECURE_AUTH_KEY', 'B >t.QYHTKXRv/)ewR 5$iswZrLM}kAE#15?:2lu]zPd!KuB78?4fopw3QsHtx#4');
define('LOGGED_IN_KEY', 'gI:T2,v7|E[.Q&[yGK|$a+s1;&$8-[?|6dE+FX|9|Ex|N[EPiQ0YzoXas=.7`4;&');
define('NONCE_KEY', 'Z_-$xVrv0+VqtoVl#8|s/zeOlm^h# zHh(3me1X/S(l[(h;-+KI&cyDuLbm
10. Çekirdek dosyaları .htaccess ile güvende tutun
.htaccess dosyasını kullanmak, muhtemelen bir WordPress güvenlik taraması için en güçlü araçlardan biridir. Çekirdek dosyalara tarayıcıdan erişimi engelleyerek başlayacağız çünkü bunlar meşru bir ziyaretçi için bir şey ifade etmez ve genellikle sadece güvenlik açıklarını bulup kullanmak için tarayıcıdan erişilirler. Apache Web Server ve .htaccess dosyasının nasıl çalıştığı ile ilgileniyorsanız htaccess-guide.com adresine bakmanızı öneririm.
Ancak hızlı bir çözüm olarak, aşağıdaki kod bloğunu BEGIN/END WordPress etiketlerinin önüne veya arkasına ekleyebilirsiniz:
# Block the include-only files. RewriteEngine On RewriteBase / RewriteRule ^wp-admin/includes/ - [F,L] RewriteRule !^wp-includes/ - [S=3] RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L] RewriteRule ^wp-includes/theme-compat/ - [F,L]
11. XML-RPC’yi devre dışı bırakın
Çoğu kullanıcı, blog gönderileri oluşturmanıza ve bazı eklentilerle etkileşimde bulunmanıza olanak tanıyan XML-RPC’nin arkasındaki işlevselliği kullanmaz. Siteye yeni içerik gönderen otomatik bir yayınınız varsa bu tür bir işlevsellik iyidir, ancak son derece karmaşıktır ve nadiren kullanılır.
Çoğu durumda, bilgisayar korsanlarının kullanıcı parolalarını kaba kuvvet kullanarak bulmalarını engellemek için devre dışı bırakabilirsiniz. Devre dışı bırakmak için .htaccess dosyanıza başka bir kod bloğu eklemeniz gerekir:
#disable xmlrpc
order allow,deny
deny from all
12. Güvenlik taraması için dosya izinlerini denetleyin
WordPress’e göre, geliştiriciler ve yöneticiler her ne pahasına olursa olsun 777 dosya izninden kaçınmalıdır. Dosyaları bu tarz bir izinle tutmak, makinedeki herkesin 777 iznine sahip herhangi bir dosyayı okumasına, yazmasına ve çalıştırmasına olanak tanır.
Bunun yerine WordPress klasörler için 775 izni ve dosyalar için 644 izni kullanmanızı önerir.
WordPress dosyaları sürekli güncellediğinden, değiştirdiğinden ve yeni eklemeler yaptığından, güvenli bir ortam sağlamak için kötü izinleri arayarak, WordPress güvenlik taramanızın bir parçası olarak web sitesi dosyalarını düzenli olarak denetleyin. Hızlı bir denetleme gerçekleştirmek istiyorsanız dosya izinleri için WordPress yönergelerine uymayan geçerli dosya dizinindeki tüm dosyaları görüntülemek için aşağıdaki komutu SSH’den çalıştırabilirsiniz:
find . -type f ! -perm 0644; find . -type d ! -perm 0755
13. PHP hata raporlamasını devre dışı bırakın
PHP hata raporlamasını devre dışı bırakmak, bilgisayar korsanlarının web siteniz ve üzerinde bulunduğu ortam hakkında önemli bilgiler edinmesini engeller. Bilgisayar korsanlığında yaygın olan bir teknik, işletim sistemini, sunucudaki web sitesi yolunu ve hatta hangi uygulamaların çalıştığını belirlemek için bir dosyayı görüntülemektir.
Örnek olarak, web sitesinde bu hatayı gösteren bir dosyaya eriştiğinizi varsayalım:
Warning: Cannot modify header information – headers already sent by (output started at /home/public_html/wp-content/plugins/twitter-profile-field/twitter-profile-field.php:28) in /home/public_html/wp-includes/option.php on line 271.
Bu hata bana direkt olarak sunucunun cPanel ile Linux kullandığını ve bu cPanel hesabının ana domain olduğunu ve web sitesinin twitter-profile-field eklentisini kullandığını söylüyor. Artık güvenlik açıklarını nerede aramaya başlayacağımı ve bunları nerede bulabileceğimi biliyorum. Bu sorunun çözümü de oldukça kolaydır. Site için bir php.ini oluşturun veya değiştirin ve display_errors yönergesinin kapalı olduğundan emin olun. Bunu aşağıdaki satırı ekleyerek yapabilirsiniz:
display_errors = Off
Ayarlarınız yürürlüğe girdikten sonra, normalde bir sayfada görüntülenecek herhangi bir hata giderilecektir.
14. Bir yedekleme planınız olsun
Son olarak, WordPress güvenlik taraması ile ilgili en önemli ancak ihmal edilen görev olduğunu düşündüğüm bir şey var. Yedekleme planı derken ciddiyim. En kötü senaryo gerçeğe dönüşürse ve web siteniz kötü amaçlı yazılımlara maruz kalırsa web sitenizi nasıl geri getireceğinize dair bir planınız olmalıdır.
Çoğu durumda, sitelerini düzenli olarak yedeklemeyi reddeden müşterilerim pişmanlık duyuyor. Temiz bir yedeklemeniz olmazsa, saldırıya uğramış siteniz her şeyi baştan yapmak zorunda kalmadan bir daha asla temizlenemeyebilir.