WORDPRESS GÜVENLİĞİ

Web sitesi güvenliği üzerine özelleşmiş bir şirket olan Securi tarafından yayınlanan bir hack raporuna göre WordPress Dünya’da en çok hacklenen içerik yönetimi sistemidir. Yazımızdaki WordPress güvenlik önlemleri yönergelerini takip eder ve birkaç püf noktasını uygularsanız kolaylıkla sitenizin güvenliği korumasını geliştirebilirsiniz.

Adım 1 — WordPress kurulumunu güncel tutmak
Adım 2 — Daha az yaygın giriş bilgileri kullanın
Adım 3 — 2 adımlı kimlik doğrulamasının aktifleştirilmesi
Adım 4 — PHP hata raporlamayı devre dışı bırakmak
Adım 5 — Nulled (orjinal olmayan) WordPress temalarını kullanmamak
Adım 6 — Malware taraması yapmak
Adım 7 — Web sitesini daha WordPress güvenlik önlemli hosting sağlayıcısına taşımak
Adım 8 — Mümkün olduğunca sık yedek almak
Adım 9 — Dosya düzenlemeyi devre dışı bırakmak
Adım 10 — Kullanılmayan tema ve eklentileri kaldırmak
Adım 11 — Daha iyi WordPress güvenlik önlemi için “.htaccess” kullanmak

Adım 1 — WordPress kurulumunu güncel tutmak
WordPress’i her zaman güncel tutmak ilk ve en önemli WordPress güvenlik önerisidir. Eğer temiz ve virüssüz bir web sitesine sahip olmak istiyorsanız, WordPress’i güncel tutmak zorunluluktur. Her yeni sürüm yeni güvenlik güncellemeleri getirmiyor. Bu nedenle büyük, ana güncellemeler manuel yapılmalıdır.

Adım 2 — Daha az yaygın giriş bilgileri kullanın
WordPress yönetici kullanıcı adınızı admin olarak mı kullanıyorsunuz? Kullanıcı adınızı başka bir şeye değiştirmeniz önerilir. Eğer bu yöntemi tercih etmek istemiyorsanız, yeni bir yönetici hesabı oluşturup eskisini silebilirsiniz. Eğer bu şekilde yapmak isterseniz:
WordPress yönetici panelinize giriş yapın.
Kullanıcılar kısmına girin ve Yeni ekle’ye tıklayın.
Yeni kullanıcı oluşturun ve ona Yönetici rolünü atayın.
WordPress yönetici panelinize yeni kullanıcı adınız ile tekrar giriş yapın.
Kullanıcılar kısmını tekrar ziyaret edin ve admin kullanıcısını silin.
Konu WordPress güvenlik önlemi olunca güçlü bir şifre büyük rol oynar. Rakamlar, büyük/küçük harfler ve özel karakterler içeren bir şifreyi brute force saldırısı ile kırmak çok daha zordur. Lastpass ve 1Password gibi araçlar karmaşık şifreler oluşturmanıza ve yönetmenize yardımcı olur.

Adım 3 — 2 adımlı kimlik doğrulamasının aktifleştirilmesi
2 adımlı kimlik doğrulaması giriş sayfanızda ek bir WordPress güvenlik tabakası oluşturur. Adından da anlaşılabileceği gibi giriş yapmanız için bir adımı daha tamamlamanız gerekir.
Karmaşık görünse de WordPress bloğunuzda 2 adımlı kimlik doğrulamasını aktifleştirmek süper kolaydır. Tek yapmanız gereken 2 adımlı kimlik doğrulaması uygulamasını kurmak ve WordPress’i yapılandırmaktır.

Adım 4 — PHP hata raporlamayı devre dışı bırakmak
Eğer web sitenizi geliştirme aşamasındaysanız PHP hata raporlama her şeyin doğru çalıştığından emin olmak için faydalı olabilir. Ancak, hataları herkese göstermek ciddi bir güvenlik açığıdır.
Bunu mümkün olduğunca kısa sürede düzeltmelisiniz. Korkmayın, WordPress hata raporlarını gizlemek için programcı olmanız gerekmiyor. Çoğu hosting sağlayıcısı kontrol panelinde bunun için bir seçenek bulunur. Hostinger’da kontrol panelinizin PHP Yapılandırması kısmında bunu ayarlayabilirsiniz.
Eğer kontrol panelinizde böyle bir seçenek bulunmuyorsa, “wp-config.php” dosyanıza aşağıdaki satırları eklemelisiniz.

<?php error_reporting(0);
@ini_set(‘display_errors’, 0); ?>

Adım 5 — Nulled (orjinal olmayan) WordPress temalarını kullanmamak
İnternette binlerce nulled eklenti ve temalar dolaşıyor. Kullanıcılar çeşitli warez ve torrent sitelerinden bunları bedava indirebiliyor. Bilmedikleri ise bunların malware ve black hat SEO bağlantıları içerdiğidir.
Nulled eklenti ve temaları kullanmayı bırakın.

Adım 6 — Malware taraması yapmak
Zaman zaman hackerlar temalarda ve eklentilerde WordPress’e malware bulaştırmak için açık bırakıyorlar. Bu nedenle bloğunuzu sık sık taramak çok önemlidir.
Bu amaçlı güzel kodlanmış birçok kod bulunur. WordFence bu eklentiler arasından öne çıkıyor. Manuel veya otomatik tarama seçeneklerinin yanısıra daha farklı ayarları da bulunuyor.
Hatta değiştirilmiş / enfekte olmuş dosyaları birkaç tıklama ile geri getirebilirsiniz. Ücretsiz ve açık kaynaklıdır. Bu gerçekler eklentiyi hemen şimdi kurmanız için yeterli olmalıdır.

Diğer popüler WordPress eklentileri:
BulletProof Security – WordFence’den farklı olarak, BulletProof dosyalarınızı taramaz ancak size güvenlik duvarı, veri tabanı güvenliği ve daha fazlasını sağlar. Hakkındaki en iyi şeylerden biri de yalnızca birkça tıklama içerisinde yapılandırılıp kurulabilmesidir.

Sucuri Security – bu eklenti sizi DOS saldırılarından korur. Kara liste tutar, web sitenizi malware’lere karşı korur ve güvenlik duvarınızı yönetir. Eğer bir şey tespit ederse, size email ile bildirir. Google, Norton, McAfee gibi kara liste motorları bu eklentide yer alır.

Adım 7 — Web sitesini “daha çok güvenlik önlemleri olan” WordPress hosting sağlayıcısına taşımak
WordPress sitelerinin %40’ının hosting hesaplarındaki açıklardan kaynaklandığını gösteriyor. Bu sayı sizi mevcut hosting sağlayıcı seçiminizi tekrar değerlendirmenize ve WordPress sitenizi taşımayı düşünmeye zorlamalıdır. Yeni bir hosting sağlayıcısı ararken aklınızda bulunmanız gereken bazı kriterler:
Eğer paylaşılan hosting ise, hesabınızın diğer kullanıcılardan tamamen izole edildiğinden ve aynı sunucudaki diğer bir web sitesinin sizin sitenize virüs bulaştırma olasılığının sıfır olduğundan emin olmalısınız.
Otomatik yedekleme özelliği olmalıdır.
Sunucu taraflı güvenlik duvarı ve virüs tarama aracı olmalıdır.

Adım 8 — Mümkün olduğunca sık yedek almak
Sahiplerinin çok büyük harcamalar yaparak WordPress güvenlik sistemini güçlendirmelerine rağmen büyük siteler bile her gün hackleniyor.
Bu rehberdeki en iyi uygulamaları ve diğer önerileri uyguluyor olsanız da WordPress web sitenizi belirli aralıklarla yedeklemek çok önemlidir.
Yedek olmak için birkaç yol bulunur. Örneğin, manuel bir şekilde WordPress dosyalarını indirebilir ve veri tabanını dışarı aktarabilirsiniz. Hosting sağlayıcınızın yedek araçlarını da kullanabilirsiniz.
Bir başka yol ise WordPress yedek eklentileri kullanmaktır:
VaultPress
BackUpWordPress
BackupGuard

Adım 9 — Dosya düzenlemeyi devre dışı bırakmak
WordPress PHP dosyalarının düzenlenmesine olanak sağlayan bir dahili dosya editörüne sahiptir. Bu özellik kimi zamanlar faydalı olabileceği gibi zarara da sebep olabilir.
Eğer saldırgan yönetici panelinize erişim sağlarsa, ilk bakacağı şey dosya editörü olacaktır. Kimi WordPress kullanıcıları bu özelliği tamamen devre dışı bırakmayı tercih ediyor.
Bu özellik wp-config.php dosyasını düzenleyip aşağıdaki satırı ekleyerek devre dışı bırakılabilir.

define( ‘DISALLOW_FILE_EDIT’, true );

WordPress’de dosya düzenlemeyi devre dışı bırakmak için yapmanız gereken yalnızca budur.

ÖNEMLİ! Eğer bu özelliği tekrar aktifleştirmek isterseniz, FTP istemcinizin veya hosting sağlayıcınızın dosya yöneticisini kullanarak bu satırı wp-config.php dosyanızdan kaldırın.

 

Adım 10 — Kullanılmayan tema ve eklentileri kaldırmak
WordPress sitenizde temizlik yapın ve kullanılmayan tüm eklenti ve temaları silin. Saldırganlar genellikle devre dışı bırakılmıl ve güncel olmayan tema, eklentileri (hatta resmi WordPress eklentileri) ararlar. Kullanmayı bıraktığınız (ve muhtemelen güncellemeyi unuttuğunuz) tema ve eklentileri silerek riski azaltmış ve WordPress sitenizi daha güvenli kılmış olursunuz.

Adım 11 — Daha iyi WordPress güvenlik önlemi için “.htaccess” kullanmak
WordPress bağlantılarının çalışması için “.htaccess” dosyası gereklidir. Bu dosyada doğru kurallar olmadığında çok fazla 404 hatası alırsınız.
WordPress güvenlik önlemlerinden birini “.htaccess” dosyasını kullanmak olduğunu çoğu kullanıcı bilmiyor. Örneğin, “.htaccess” ile belirli dosyalara erişimi veya bu dosyalarda PHP kodlarının çalıştırılmasını engelleyebilirsiniz.
Aşağıdaki örnekler “.htaccess” dosyasını kullanarak WordPress güvenliğini nasıl geliştirebileceğinizi gösteriyor.

ÖNEMLİ! Değişiklik yapmadan önce mevcut “.htaccess” dosyanızı yedeklemeniz şiddetle önerilir. FTP istemcisi veya Dosya Yöneticisini bu işlem için kullanabilirsiniz.

WordPress yönetici paneline erişimi engellemek
Aşağıdaki kod yalnızca belirtilen IP adreslerinden WordPress yönetici paneline erişime izin verecektir.

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 olan kısmı kendi IP adresiniz ile değiştirmeniz gerektiğini not ediniz. Kendi IP adresinizi öğrenmek için bu web sitesini http://ip.domainsitesi.com/ kullanabilirsiniz.
Eğer WordPress sitenizi yönetmek için birden fazla bağlantı kullanıyorsanız, tüm IP adreslerini eklediğinizden emin olunuz. (İhtiyacınız olduğu kadar satır ekleyebilirsiniz.) Eğer dinamik IP adresine sahipseniz bu kodu kullanmanız önerilmez.

Belirli dosyalarda PHP çalıştırılmasını engellemek
Saldırganlar WordPress uploads klasörüne arka kapı (backdoor) kodları yüklemeyi seviyorlar. Varsayılan olarak bu klasör medya dosyalarını yüklemek için kullanılıyor.
Bu nedenle, herhangi bir PHP dosyası içermemelidir. “/wp-content/uploads/” klasöründe aşağıdaki satırları içeren “.htaccess” dosyası oluşturarak burada PHP çalışmasını kolaylıkla engelleyebilirsiniz.

<Files *.php>
deny from all
</Files>

“wp-config.php” dosyasını korumak
“wp-config.php” dosyası WordPress ayarlarını ve MySQL veri tabanı detaylarını içerir. Bu nedenle en önemli WordPress dosyasıdır. Bu da onu WordPress saldırganının ilk hedefi yapar. Ancak, bu dosyayı aşağıdaki “.htaccess” kuralları ile kolaylıkla koruyabilirsiniz.

 <files wp-config.php>
order allow,deny
deny from all
</files>

WordPress veri tabanı sitenin çalışması için gerekli önemli bilgiyi saklar. Bundan dolayı SQL injection saldırısı yapmak isteyen hacker ve spammer’ların hedefi haline geliyor.
WordPress kurarken birçok kişi varsayılan veri tabanı tablo ön ekini (wp_) değiştirmeye uğraşmıyor.
WordFence’e göre, her beş WordPress saldırısından biri SQL injection ile yapılıyor. Varsayılan ön ek saldırgan tarafından bilindiği için, öncelikle bunu deneyecektir. Bu adımda kısaca WordPress sitenizi nasıl bu tür saldırılardan koruyabileceğinizi açıklayacağız.

Mevcut WordPress sitesinin tablo ön ekini değiştirmek

ÖNEMLİ! Güvenlik her zaman önce gelir. Devam etmeden önce MySQL veri tabanınızı yedeklediğinizden emin olunuz

Bölüm 1 – wp-config.php dosyasında ön eki değiştirmek
FTP istemcisi veya Dosya Yöneticisi’ni kullanarak “wp-config.php” dosyanızı bulun ve “$table_prefix” değerini arayın.

* You can have multiple installations in one database if you give each
* a unique prefix. Only numbers, letters and underscores please!
*/
$table_prefix = ‘wp_’;

Rakamlar, harfler veya alt çizgiler ekleyebilirsiniz. Sonrasında, değişiklikleri kaydedin ve sonraki adıma devam edin. Bu rehberde “wp_1secure1_ tablo” ön ekini kullanacağız.
“wp-config.php” dosyanızdayken, veri tabanı adını da bulun. Böylece hangi veri tabanını düzenlemeniz gerektiğini de öğrenmiş olursunuz. define(‘DB_NAME’ kısmına bakın.

 

Bölüm 2 – Tüm veri tabanı tablolarını güncellemek
Şimdi WordPress veri tabanınızdaki tüm tabloları güncellemelisiniz. Bu phpMyAdmin kullanılarak yapılabilir.

1. Bölümde bulduğunuz veritabanının phpMyAdmin’ine girin.
Varsayılan WordPress kurulumu 12 tablodan oluşur ve her biri güncellenmelidir. Ancak phpMyAdmin’in SQL kısmı kullanılarak bu işlem daha hızlı yapılabilir.
Her tablonun adını elle değiştirmek çok zaman alabilir. Bu nedenle işleri hızlandırmak için SQL sorguları kullanacağız. Aşağıdaki sorguları çalıştırarak veri tabanındaki 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ı ve eklentileri kendi tablolarını oluşturmuş olabilir. Bu durumda veri tabanınızda 12’den fazla tabloya sahip olabilirsiniz. Bu diğer tabloları sorgu listesine manuel ekleyin ve sorguyu çalıştırın.

Bölüm 3 – Seçenekler ve kullanıcı meta tablolarını kontrol etmek
Kurduğunuz eklentilerin sayısına göre veri tabanınızdaki bazı değerlerin manuel güncellenmesi gerekir. Bu da options ve usermeta tablolarında ayrı SQL sorguları çalıştırılarak yapılabilir.

options tablosu için:

SELECT * FROM `wp_1secure1_options` WHERE `option_name` LIKE ‘%wp_%’

usermeta tablosu için:

SELECT * FROM `wp_1secure1_usermeta` WHERE `meta_key` LIKE ‘%wp_%’

SQL sorgu sonuçlarını aldığınızda, tüm wp_ değerlerini basitçe yeni seçtiğiniz ön ek ile değiştirin. usermeta tablosunda meta_key kısmını, options tablosunda option_name değerini değiştirmeniz gerekecektir.

 

Yeni WordPress kurulumlarını güvenli kılmak
Eğer yeni bir WordPress sitesi kurmayı planlıyorsanız, bu işlemi tekrar yapmanız gerekmez. Kurulum esnasında tablo ön ekinizi değiştirmeniz mümkündür.
Tebrikler! WordPress veri tabanı korumanızı SQL injection saldırılarına karşı başarılı bir şekilde arttırdınız.

Sonuç
Her ne kadar WordPress Dünya’daki en çok hacklenen içerik yönetimi sistemi olsa da, WordPress güvenlik sağlaması hiç de zor değildir.

 

Yazar: Mehmet