Merhaba arkadaşlar, 05.03.2020 ‘de WordPress üzerine hazırlanmış bir etkinliğe katıldım. Bu etkinlikte en çok dikkatimi çeken başlıklardan biri “WordPress sitem hacklenirse ne yapmalıyım?” konusu olmuştu. Bu konuyla alakalı daha sonra sizler için bir yazı hazırlayacağım ama önce WordPress sitemizi hackten nasıl korumalıyız ona değinelim. Haydi başlayalım!
Aşağıdaki maddeleri uygulayabilmeniz için WordPress admin panelinize ve Hosting hesabınıza erişiminiz olmalı. Burası önemli.
Adım 1 – WordPress’i Güncel Tutun
İlk ve en önemli ipucudur. Eğer temiz ve zararlı yazılım içermeyen bir internet sitesi istiyorsanız WordPress’i güncel tutmalısınız. Basit bir tavsiye gibi görünsede, tüm WordPress kurulumlarının sadece %22’si en son sürümü kullanmaktadır.
WordPress 3.7 sürümünde otomatik güncelleme özelliğini ekledi, ancak sadece küçük çaplı güvenlik güncellemeleri için çalışıyor. Dolayısıyla başlıca core güncellemeleri manuel olarak yapılmalı.
Adım 2 – Daha Az Yaygın Olan Giriş Bilgileri Kullanma
WordPress kullanıcı adınızı asla admin olarak kullanmayın. Eğer kullanıcı adınızı admin olarak kullanıyorsanız yönetici kullanıcı adınızı başka bir şeyle değiştirin veya farklı bir yönetici hesabı oluşturarak eskisini silmeniz gerekmekte. Eğer farklı bir yönetici hesabı açmak istiyorsanız aşağıdaki adımları uygulayın:
- WordPress Admin paneline girin
- Menü’den Kullanıcılar‘a tıklayın ve ardından Yeni Ekle sekmesini açın.
- Yeni bir kullanıcı oluşturun ve yönetici rolü ekleyin.
- WordPress’e yeni kullanıcı adınızla giriş yapın.
- Kullanıcılar bölümüne geri dönün ve Admin kullanıcısını silin.
Karmaşık bir şifre WordPress güvenliği konusunda büyük rol oynamaktadır. Rakamlar, büyük ve küçük harfler, özel karakterler içeren bir şifreyi brute force yöntemiyle ele geçirmek çok daha zor. Ayrıca eğer WordPress kontrol panelinize güvensiz bir ağa (ör: kahve dükkanları, halka açık kütüphaneler vb.) bağlıyken giriş yapmak zorunda kalırsanız giriş bilgilerinizi koruyacak güvenli bir VPN kullanmayı unutmayın.
Adım 3 – İki Adım Doğrulama Etkinleştirme
İki-adım doğrulama, giriş sayfanızda muazzam bir güvenlik katmanı oluşturur. İsminden de anlaşılacağı üzere giriş yapabilmek için uygulanması gereken bir adım daha ekler. Bu özelliği muhtemelen e-posta, internet bankacılığı veya hassas bilgi içeren bir başka hesabınızda zaten kullanıyorsunuzdur. Peki niçin WordPress’de kullanmayasınız?
Kulağa biraz karmaşık gelse de WordPress iki adım doğrulamayı etkinleştirmek oldukça kolaydır. Tüm yapmanız gereken 2 adım doğrulama uygulamasını yüklemek ve WordPress’inizi ayarlamak.
Adım 4 – PHP Hata Raporlamayı Devre Dışı Bırakın
Eğer web sitesi geliştiriyor ve herşeyin düzgün çalıştığına emin olmak istiyorsanız PHP hata raporlama yardımcı olabilir. Ancak hataları tüm herkese göstermek ciddi bir güvenlik ihlalidir.
Bunu olabildiğince çabuk düzeltmelisiniz. Korkmanıza gerek yok, WordPress’de PHP hata raporlamayı kapatabilmek için kod bilgisine ihtiyacınız yoktur. Çoğu hosting sağlayıcı hata raporlama özelliğini kontrol paneli içerisinden kapatma seçeneği sunuyor. Eğer bu özellik yoksa, wp-config.php dosyası içerisine aşağıdaki satırları ekleyin. wp-config.php dosyasını düzenlemek için FTP istemcisi veya Dosya Yöneticisi kullanabilirsiniz:
error_reporting(0);
@ini_set(‘display_errors’, 0);
İşte bu kadar. Hata raporlama artık kapalı.
Adım 5 – Nulled WordPress Temaları Kullanmayın
Arkadaşlar internette dağıtılan tema ve eklentileri kullanmayın. “Bedava peynir sadece fare kapanındadır” sözünü aklınızdan çıkarmayın. Aynı şeyi nulled WordPress tema ve eklentileri için de söyleyebiliriz.
İnternette dolaşan binlerce nulled eklenti ve tema bulunuyor. Kullanıcılar bunları çeşitli Warez veya torrent sitelerinden ücretsiz şekilde indirebiliyor. Bilmedikleri şey ise bunların çoğu zararlı yazılımlar ve siyah şapka SEO bağlantılarıyla doludur.
Nulled eklenti ve temalar kullanmayın. Bu etik olmadığı gibi aynı zamanda WordPress güvenliği açısından muazzam derecede zararlıdır. Sonucunda internet sitenizi düzeltmesi için bir geliştiriciye çok daha fazla para ödeyebilirsiniz.
Adım 6 – WordPress Zararlı Yazılım Taraması
Hackerlar, WordPress’e zararlı yazılım bulaştırmak için eklenti veya temalardaki açıkları sıklıkla kullanırlar. Bu sebeple blog sitenizi sıklıkla taramak hayati önem arzediyor. Bu amaç doğrultusunda oldukça fazla iyi tasarlanmış eklentiler mevcut. WordFence bu noktada öne çıkanlardan birisi. Manuel ve otomatik tarama seçenekleriyle birlikte çeşitli farklı ayarlar sunuyor. Hatta değiştirilmiş / zararlı dosyaları birkaç tıklamayla kurtarma şansınız mevcut. Ücretsiz ve açık kaynak kodludur. Bu sebepler bile kendi başlarına eklentiyi hemen şimdi kurmanız için yeterli olmalıdır.
Diğer popüler WordPress güvenlik eklentileri:
- BulletProof Security – WordFence’in aksine, BulletProof dosyalarınızı taramaz ancak bir güvenlik duvarı, veritabanı ve daha fazlasını sunar. Bu eklentinin en güzel yanlarından birisi birkaç tıklamayla kurularak ayarlanabilir olmasıdır.
- Sucuri Security – bu eklenti sizi DOS saldırılarına karşı korur, kara liste oluşturur ve internet sitenizde zararlı yazılımlara karşı tarama yaparak güvenlik duvarınızı yönetir. Eğer birşey tespit ederse, eposta ile bilgilendirme sağlar. Google, Norton, McAfee – tüm bu karaliste motorları bu eklentide bulunuyor.
Denemekten çekinmeyin 🙂
Adım 7 – WordPress Sitenizi Daha Güvenli Bir Hosting’e Taşıyın
Garip bir tavsiye gibi görünebilir ancak istatistiklere göre WordPress sitelerinin %40’ı hosting hesaplarındaki açıklar kullanılarak ele geçiriliyor. Bu rakamın kendisi size mevcut hosting seçiminizi sorgulatmalı ve WordPress sitenizi daha güvenli bir hosting hizmetine taşıtmalıdır. Yeni bir hosting ararken aklınızda bulunması gereken birkaç kural şunlardır:
- Eğer paylaşımlı hosting ise, hesabınızın diğer kullanıcılardan izole olduğuna emin olun ve bir sitenin sunucudaki diğerlerine zarar verme olasılığını sıfıra indirin.
- Otomatik yedekleme özelliğinin olmasına dikkat edin.
- Sunucu bazlı güvenlik duvarı ve virüs tarama aracı olduğuna emin olun.
Adım 8 – Yedek oluşturma
Sahiplerinin binlerce dolar harcayarak güvenliğini arttırmaya çalıştığı en büyük internet siteleri bile her gün hacklenmektedir.
Eğer en iyi yöntemleri kullanıyor ve bu rehberdeki ipuçlarını uyguluyorsanız, WordPress sitenizi sıklıkla yedeklemek hayati önem teşkil ediyor.
Yedek oluşturmanın çeşitli yolları vardır. Örneğin WordPress dosyalarını manuel olarak indirebilir, veritabanını yükleyebilir veya hosting firmanızın yedekleme aracını kullanabilirsiniz. Bir başka yöntemi ise WordPress eklentilerini kullanmaktadır. En popüler WordPress yedekleme eklentileri şöyledir:
Hatta WordPress yedekleme işlemini otomatik olarak yapabilir ve sitenizi Dropbox içinde yedekleyebilirsiniz.
Adım 9 – Dosya Düzenlemeyi Kapatın
Bildiğiniz gibi, WordPress’in dahili dosya düzenleme aracı sayesinde PHP dosyalarını değiştirebiliyorsunuz. Bu özellik kullanışlı olsa da bazı zararları olabilir. Eğer bir saldırgan WordPress admin panelinizi ele geçirirse bakınacağı ilk şey dosya editörüdür. Bazı WordPress kullanıcıları bu özelliği tamamen devre dışı bırakmayı tercih ediyor. wp-config.php dosyasını düzenleyerek aşağıdaki satırı eklediğinizde bu özelliği kapatabilirsiniz:
define( 'DISALLOW_FILE_EDIT', true );
WordPress’de dosya düzenlemeyi kapatmak için yapmanız gereken bu kadar.
ÖNEMLİ: Eğer bu özelliği tekrar aktifleştirmek isterseniz, FTP istemcisi veya hosting firmanızın Dosya Yöneticisini kullanarak bu kodu wp-config.php dosyasından kaldırın.
Adım 10 – Kullanmadığınız Tema ve Eklentileri Kaldırın
WordPress sitenizde temizlik yapın ve kullanılmayan tüm eklenti ve temaları kaldırın. Saldırganlar çoğu zaman devre dışı ve eski temalarla eklentileri tarar (resmi WordPress eklentileri dahil) ve bunları kullanarak admin paneline erişim sağlamayı veya sunucunuza zararlı dosyalar yüklemeyi denerler. Kullanmayı bıraktığınız eklenti ve temaları silerek WordPress güvenliğini biraz daha arttırmış olursunuz.
Adım 11 – Daha İyi WordPress Güvenliği İçin .htaccess Kullanma
.htaccess dosyası WordPress bağlantılarının düzgün şekilde çalışması için gereklidir. .htaccess dosyasında doğru kurallar olmadığında çok fazla 404 hatası alırsınız.
Çoğu kullanıcı .htaccess dosyasının WordPress güvenliğini arttırmak için kullanılabileceğini bilmez. Örneğin .htaccess dosyasıyla belirli klasörler üstünde PHP çalıştırmayı devre dışı bırakabilir ve erişimi engelleyebilirsiniz. Aşağıdaki örnekler .htaccess dosyasını kullanarak WordPress güvenliğini nasıl arttırabileceğinizi gösteriyor.
ÖNEMLİ Herhangi bir değişiklik yapmadan önce eski .htaccess dosyasının yedeğini almanız şiddetle tavsiye edilir. Bunun için FTP istemcisi veya Dosya Yöneticisi kullanabilirsiniz.
WordPress Admin Bölümüne erişimi kapatma
Aşağıdaki kodu kullanarak WordPress yönetici bölümüne sadece belirli IP’lerden giriş izni verebilirsiniz.
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "WordPress Admin Access Control"
AuthType Basic
<LIMIT GET>
order deny,allow
deny from all
allow from xx.xx.xx.xxx
allow from xx.xx.xx.xxx
</LIMIT>
xx.xx.xx.xxx kısmını kendi IP adresinizle değiştirmeniz gerektiğini unutmayın. Bu internet sitesini kullanarak IP adresinizi öğrenebilirsiniz. Eğer WordPress sitenizi yönetmek için birden fazla bağlantı kullanıyorsanız diğer IP adreslerininde buraya dahil edildiğine emin olun (istediğiniz kadar ekleyebilirsiniz). Eğer dinamik IP adresine sahipseniz bu kodu kullanmanız tavsiye edilmez.
Belirli Klasörlerde PHP çalıştırmayı devre dışı bırakma
Saldırganlar WordPress upload klasörüne arka kapı scriptleri yüklemeyi severler. Varsayılan olarak bu klasör sadece medya dosyaları yüklemek içindir. Dolayısıyla herhangi bir PHP dosyası içermemesi gerekir. Aşağıdaki kurallarla /wp-content/uploads/ içinde yeni bir .htaccess dosyası oluşturarak PHP çalıştırma işlemini devre dışı bırakabilirsiniz:
<Files *.php>
deny from all
</Files>
wp-config.php Dosyasını Koruma
wp-config.php dosyası WordPress ayarlarını ve MySQL veritabanı bilgilerini içerir. Bu sebeple en önemli WordPress dosyasıdır. Bu yüzden her WordPress hacker’ının başlıca hedefidir. Ancak bu dosyası aşağıdaki .htaccess kurallarını kullanarak kolayca koruyabilirsiniz:
<files wp-config.php>
order allow,deny
deny from all
</files>
Adım 12 – Varsayılan WordPress veritabanı ekini değiştirerek SQL saldırılarını önleme
WordPress veritabanı internet sitenizin çalışabilmesi için gerekli tüm bilgileri tutar ve depolar. Sonuç olarak saldırganlar ve SQL saldırıları gerçekleştirmek için otomatik kod çalıştıran spammerlar için ağız sulandıran bir hedeftir. WordPress kurulumu esnasında çoğu kişi varsayılan wp_ ekini değiştirmeye tenezzül etmez. WordFence‘e göre her 5 WordPress sitesinden 1 tanesi SQL saldırıları sebebiyle hackleniyor. Varsayılan ayar **wp** olduğundan saldırganlar öncelikle bu değeri hedef alıyor. Bu adımda WordPress sitenizi bu tür saldırılara karşı nasıl daha güvenli hale getireceğiniz üzerinde duracağız.
Varolan bir WordPress sitesinin tablo ekini değiştirme
ÖNEMLİ! Önce güvenlik. Başlamadan önce WordPress MySQL veritabanınızın yedeğini almayı unutmayın.
Bölüm 1 – wp-config.php içindeki eki değiştirme
wp-config.php dosyasını bulmak için FTP istemcisi veya Dosya Yöneticisi kullanın ve $table_prefix değerini arayın.
Rakamlar, harfler veya alttan çizgiler ekleyebilirsiniz. Ardından değişiklikleri kaydedin ve sıradaki adıma geçin. Biz bu rehberde yeni tablo eki olarak wp_1secure1_ kullanacağız.
wp-config.php dosyasındayken veritabanı adını da bulabilirsiniz ve böylece hangi veritabanını düzenlemeniz gerektiğini öğrenebilirsiniz. define(‘DB_NAME’ bölümünü arayın.
Bölüm 2 – Tüm veritabanı tablolarını güncelleme
Şimdi WordPress veritabanınızdaki tüm girdileri güncellemeniz gerekiyor. Bunu phpMyAdmin kullanarak gerçekleştirebilirsiniz.
Bölüm 1’de yerini bulduğunuz veritabanını seçin ve açın.
Normal bir WordPress kurulumunda 12 tablo vardır ve her birinin güncellenmesi gerekir. Ancak phpMyAdmin’deki SQL bölümü kullanılarak bu işlem hızlı bir şekilde yapılabilir.
Her bir tabloyu manuel olarak değiştirmek oldukça fazla zaman alabilir bu yüzden SQL kullanarak işleri biraz hızlandıracağız. Aşağıdaki syntax’ı kullanarak veritabanınızdaki tüm tabloları güncelleyin.
RENAME table `wp_commentmeta` TO `wp_1secure1_commentmeta`;
RENAME table `wp_comments` TO `wp_1secure1_comments`;
RENAME table `wp_links` TO `wp_1secure1_links`;
RENAME table `wp_options` TO `wp_1secure1_options`;
RENAME table `wp_postmeta` TO `wp_1secure1_postmeta`;
RENAME table `wp_posts` TO `wp_1secure1_posts`;
RENAME table `wp_terms` TO `wp_1secure1_terms`;
RENAME table `wp_termmeta` TO `wp_1secure1_termmeta`;
RENAME table `wp_term_relationships` TO `wp_1secure1_term_relationships`;
RENAME table `wp_term_taxonomy` TO `wp_1secure1_term_taxonomy`;
RENAME table `wp_usermeta` TO `wp_1secure1_usermeta`;
RENAME table `wp_users` TO `wp_1secure1_users`;
Bazı WordPress temaları veya eklentileri veritabanınında ekstra tablolar oluşturabilir, veritabanınızdaki bazı değerler manuel olarak güncellenmesi gerekebilir. Bunu yapabilmek için options ve usermeta tablolarında ayrı bir SQL sorgusu yapabilirsiniz.
options tablosu için aşağıdakini kullanın:
SELECT * FROM `wp_1secure1_options` WHERE `option_name` LIKE '%wp_%'
usermeta tablosu içinse aşağıdakini:
SELECT * FROM `wp_1secure1_usermeta` WHERE `meta_key` LIKE '%wp_%'
SQL sorgu sonuçlarını aldığınızda tüm wp_ değerlerini yeni ayarlanmış olan ek ile güncelleyin ve işinizi tamamlayın. usermeta tablosu içinde meta_key alanını düzenlemeniz gerekiyor, options tablosunda ise option_name değeri değiştirilmelidir.
WordPress kurulum güvenliğini arttırma
Eğer yeni WordPress siteleri kurmayı planlıyorsanız, bu işlemi tekrar yapmanız gerekmez. Sadece WordPress tablo ekini kurulum esnasında değiştirin:
Tebrikler! SQL saldırılarına karşı WordPress veritabanı güvenliğinizi arttırdınız.
İşte hepsi bu kadar! WordPress sitenizin güvenliğini arttırmak hiç de zor değil. Biraz zaman ayırarak yukarıdaki adımları uyguladığınızda oldukça faydasını göreceksiniz. Bir sonraki yazılarda görüşmek üzere!