- Puanlar
- 31895
- Başarılar
- 8
- New
- #1
WordPress Güvenliği Nasıl Sağlanır?
Aşağıdaki bölümde Wordpress güvenlik kontrolleri ve almanız gereken güvenlik önlemleri belirtilmiştir. Bu önlemleri alarak, sisteminizi güvenli bir hale getirebilir ve sıkılaştırma yapabilirsiniz.
WordPress Genel Güvenlik Kontrolleri
- Erişim Sınırlama: Wordpress sitenize erişimi olan hesapların sayısını minimumda tutmak ve erişecek kişilerin yetkilerini doğru bir şekilde ayarlayarak güvenliğinizi sağlamlaştırabilirsiniz. Bir sistemde birden fazla “Yönetici” yetkisi zaaflarınızın artmasına sebep olacağını unutmamalısınız.
- Eklenti ve Temalar: Wordpress siteniz üzerinde kullanılmayan tüm eklentileri ve temaları kaldırın. Bunlar en az ayrıcalık ilkesi ile gizliliği, kullanılabilirliği ve bütünlüğü korumaya yardımcı olur. Bu sayede kullanmadığınız tema veyahut eklentilerde ortaya çıkabilecek zafiyetlerden etkilenmezsiniz.
- İzolasyon: Sisteminiz tehlikeye girmesi durumunda oluşabilecek hasar miktarını en aza indirecek şekilde yapılandırılmalısınız. Mümkünse tek bir barındırma hesabında çok sayıda farklı web sitesine sahip olmaktan kaçının. Bir hosting üzerinde birden fazla internet sitesi yayını yapılıyorsa, diğer sitelerin zafiyetleri üzerinden tüm sistemin etkileneceğini belirtmek isteriz.
- Güvenli Yedekleme: Güvenli yerlerde bütünlüğü doğrulanmış yedeklemeler barındırın. Web sitenizi zarar görmüşse geri yükleyebildiğinizden emin olmak için ara sıra yedeklemelerin bütünlüğünü doğrulamanız gerekir. Web sitenizin güvenliğini tehlikeye atabilecek siber saldırıların sonrasında bir acil durum kurtarma planınız olmalıdır.
- Güncellemeleri Unutmayın: Eklentiler ve temalar dahil olmak üzere WordPress kurulumunuzla güncel kalmak için elinizden gelenin en iyisini yapın. Sitenizin üzerinde kurulmuş olan temalar ve eklentilerin güncellemelerini mutlaka yapmak zorundasınız. Aynı zamanda Wordpress sürüm güncellemelerini de çok geçmeden yapmanızı tavsiye ederiz.
- Güvenlik Güncelleştirmeleri: Güvenlik açıkları tüm yazılımları etkileyen bir durumdur. Herhangi bir sistem üzerinde bir açıklık tespit edilebilir ve kötüye kullanılabilir. Bu tüm yazılım ve donanımları etkileyebileceği gibi WordPress içerik yönetim sistemini de etkileyebilir. Güncel kalmak için, WPVulnDB.com tarafından sağlanan güvenlik açığı veritabanına abone olmanızı tavsiye ederiz. Ayrıca WordPress’in güvenlik güncellemeleri çıktığında yönetim panelinizden anında haberdar olabilir ve bir tıklama ile sisteminizin güvenlik güncellemesini yaparak ortaya çıkan zafiyetlere karşı koruma sağlayabilirsiniz.
- Güvenilir Kaynaklar Kullanın: Güvenilir olmayan kaynaklardan eklenti / tema almayın, indirmeyin veya kullanmayın! Eklenti kurmak istiyorsanız mutlaka Wordpress.org üzerinden eklentilerinizi sisteminize yükleyin. Üçüncü parti internet sitelerinin dağıttığı eklentiler, güvenlik açıklarına neden olabilir.
Blogger için Ayarlar
- Blogger Hesabınızın Güvenliğini Sağlayın: Blogger platformunda güvenlik, Google hesabınızla bağlantılıdır. Bu nedenle, Google hesabınızda güçlü güvenlik önlemleri almak önemlidir. İki Adımlı Doğrulama (2FA) kullanarak, ek güvenlik katmanları ekleyebilirsiniz.
- Güvenli Parolalar Kullanın: Google hesabınızın şifresini güçlü ve tahmin edilmesi zor yapın. Şifre yöneticisi kullanarak şifrelerinizi güvenli bir şekilde saklayabilirsiniz.
- Güvenilir Temalar ve Eklentiler: Blogger, dışarıdan eklenti veya tema yüklemenize izin vermez, ancak blogunuzun HTML şablonunu özelleştirirken güvenilir kaynaklardan temalar kullandığınızdan emin olun.
- Yedekleme Yapın: Blogger'da içerikleriniz otomatik olarak yedeklenir, ancak yine de düzenli yedekleme almak önemlidir. Blogger kontrol panelinde blogunuzu dışa aktararak içeriğinizi yedekleyebilirsiniz.
- HTTPS Bağlantısı Kullanın: Blogger'da HTTPS bağlantısı kullanmak, blogunuzu daha güvenli hale getirir. Ayarlarda HTTPS'yi etkinleştirdiğinizden emin olun.
Eklentiler ve Temalardan Uzak Durun: Özellikle de ücretli tema veya eklentileri ücretsiz olarak dağıtan illegal siteler üzerinde büyük zafiyetler, virüsler veyahut kötü niyetli hackerlar olduğunun altını çizmek isteriz. Ücretsiz dağıtım yapan bu gibi illegal siteler temalarınızın veyahut eklentilerin içerisine zararlı kodlar koyarak sisteminizi hackleyebildiğini unutmayın!
Wordpress Kurulum Sonrası Adımlar
Wordpress kurulumunu tamamladıktan sonra aşağıdaki yönergelerimizi izleyerek kurulum sonrası sıkılaştırmaları gerçekleştirebilirsiniz.
Wp-config.php Sıkılaştırma
Wordpress altyapısının en önemli dosyası wp-config.php dosyasıdır. Bu dosya içeriğinde yapacağınız bazı ayarlamalar ile sistem güvenliğini artırabilirsiniz. Öncelikle wp-config.php dosyasının güvenliğini doğrulamamız gerekiyor.
Apache sunucular üzerinde wp-config.php dosyasının güvenliğini sağlamak için .htaccess dosyası içeriğine aşağıdaki kodu giriniz. Bu kod sayesinde wp-config.php dosyasının içeriği dışarıdan çağrılarak okunamaz ve dışarıdan erişime kapatılmış olacaktır.
<files wp-config.php>
order allow,deny
deny from all
</files>
Aynı zamanda farklı eklentiler kullanarak wp-config.php dosyasını html klasörünün dışına taşımak güvenlik noktasında artı değer sağlayacaktır. Bu dosya WordPress günlüklerinin en önemli dosyasıdır. Wp-config.php içerisinde veritabanına bağlantı için gerekli bilgiler bulunmaktadır.
Wp-config.php Dosyasını Şifrelemek
Diğer bir wp-config.php dosyasına erişimi sınırlandırmanın yolu wp-config.php dosyasının içeriğini şifrelemektir. Şifreleme için ionCube, Zend Guard veya en basiti ve ücretsiz olan phpr.org sitesindeki aracı kullanabilirsiniz. Bu sayede wp-config.php dosyasına erişebilen kişiler yalnızca kriptolanmış datayı görebilirler ve database bağlantı bilgileriniz gizli kalacaktır.
Wp-config.php Dosyasının Konumunu Değiştirmek
Wp-config.php dosyası çok önemli olduğu için sadece şifrelemeye güvenemeyiz. Şifreleme yöntemleri muhakkak ki profesyonel saldırganlar tarafından bir süre sonra kırılabilir. Eğer wp-config.php dosyamızın lokasyonunu değiştirirsek erişim konusunda bir önemli adım daha atmış olacağız.
Wp-config.php dosyasının bulunduğu dizini veya dosyanın direk ismini değiştirebiliriz. Bunu yapmak için de sitemizin ana dizinindeki wp-load.php dosyasını açarak wp-config.php yazan yerleri kendi klasörümüze uygun şekilde değiştirmemiz gerekiyor.
Not: Her güncellemeden sonra bu ayarlar eski haline döneceği için kalıcı hale getiren eklentileri kullanabilirsiniz.
Wp-load.php Dosyasına Erişimi Engellemek
Güvenli Wordpress’in bir diğer adımı da wp-load.php dosyasına erişimi engellemektir. .htaccess dosyasını kullanarak wp-config.php dosyasına dışarıdan erişimi engellediğimzi gibi wp-load.php dosyasına olası yetkisiz erişimler için kısıtlama getirebiliriz.
<files wp-load.php>
order allow,deny
deny from all
</files>
Wordpress Plugins Dizinini Korumak
WordPress sisteminizde kullandığınız eklentiler üzerinde de zafiyetler ortaya çıkabilir. Saldırganlar da bu eklentilerin zafiyetlerini kullanarak sisteminize yetkisiz erişim sağlayabilir. Bu nedenle Wordpress’in Plugins isimli eklenti klasörüne de güvenlik tedbirleri almak zorundayız. Normal şartlar altında bu dizine erişimde içerisindeki klasörlerin listelenmemesi gerekiyor. Ancak bazı sürümlerde veya kullanıcı hatası sebebi ile bu dizin açık olabilir ve klasörler listelenebilir. Bu sayede de saldırganlar sistemde bulunan eklentiler hakkında bilgi sahibi olabilir. Dışarından gelen isteklerde eklentilerinizi görmelerini engellemek istiyorsanız bu klasör içerisine index.html isimli bir boş dosya oluşturarak dizinin listelenmesini engelleyebilirsiniz.
Not: Güncel WordPress sürümlerinde varsayılan olarak boş bir index.php dosyası bulunur.
Wordpress .htaccess Dosyasına Erişimi Engellemek
WordPress için Apache sunucularda .htaccess dosyası çok önemlidir. Bu dosya genelde WordPress’in standart yönlendirme içeriğini barındırır. Diğer bir yandan yukarıda belirttiğimiz gibi yetkisiz erişimleri engellemek için de kullanabilirsiniz. Aşağıdaki kodu da .htaccess dosyamıza eklersek, .htaccess dosyamızın güvenliğini de sağlamış oluruz.
<files .htaccess>
order allow,deny
deny from all
</files>
Wordpress Hata Ayıklama Modunu Kapatmak
Wordpress hata mesajlarını kapatarak olası zafiyetlerin ortaya çıkmasını engelleyebilirsiniz. Wp-config.php dosyası içeriğinde aşağıdaki kodu ekleyerek hata ayıklama modunu kapatabilirsiniz. Debug modu olası Wordpress hatalarının görülmesi için kullanılır ve genelde geliştiriciler bu modu aktif ederek sistemdeki hataları incelemek için kullanırlar. Kod üzerindeki “false” değerli modu kapatır veya “true” şeklinde değiştirilerek hata modunu tekrar aktif hale getirebilirsiniz.
define( 'WP_DEBUG', false );
Wordpress’i SSL Yayınına Zorlamak
Wordpress sitenizin SSL üzerinden yayın yapmasını tavsiye ederiz. SSL üzerinden yayın yapabilmek için bir SSL sertifikasına sahip olmalısınız. SSL sertifikaları ücretli satılabildiği gibi ücretsiz sürümleri de mevcuttur. Bu noktada Let’s encript veya Cloudflare kullanarka ücretsiz bir SSL sertifikasına sahip olabilirsiniz. Sitenizin SSL üzerinden yayın yapması hem Google tarafında pozitif etki yaratır hem de saldırganlara karşı önemli bir adım atmış olursunuz. Sitenizin SSL üzerinden yayın yapma işlemlerini ayarladıktan sonra wp-config.php dosyası içeriğine aşağıdaki kodu ekleyerek SSL’i zorunlu kılabilirsiniz.
define('FORCE_SSL_ADMIN', true);
Wordpress Otomatik Güncellemeleri Açmak
Diğer yazılımlarda da olduğu gibi Wordpress üzerinde de zafiyetler ortaya çıkmakta ve Wordpress ekibi tarafından sürekli olarak tespit edilen bu zafiyetler kapatılmaktadır. Zafiyetlerin kapatılabilmesi için Wordpress ekibi bir güncelleme yayınlar. Bu güncellemeleri manuel olarak yapabildiğiniz gibi aşağıdaki kodu wp-config.php dosyanıza ekleyerek otomatik olarak yapabilirsiniz.
define('WP_AUTO_UPDATE_CORE', true);
Wordpress Temp Klasörünü Belirlemek
Wordpress’in güncellemelerinde olduğu gibi eklenti ve temaların güncellemelerinde de bir TEMP klasörü üzerinde işlemler gerçekleştirilir. Bu klasörün yazılabilir olması gereklidir. Klasörünüzü wp-config.php üzerinde aşağıdaki kodu ekleyerek güncellemelerin doğru bir şekilde tamamlanmasını sağlayabilirsiniz. Bu kod upload dizinini göstermelidir ve dosya yolu tam olarak belirtilmelidir. Aşağıdaki kod Centos işletim sisteminde varsayılan Wordpress Upload klasör yoludur.
define('WP_TEMP_DIR','/var/www/html/wp-content/uploads/');
Eklenti ve tema güncellemelerinde bazı durumlarda Wordpress dosyaları doğru bir şekilde çekemeyebilir veya hata verebilir. Aşağıdaki kodu wp-config.php dosyanıza ekleyerek hata veren güncellemelerin doğru bir şekilde yapılmasını sağlayabilirsiniz.
Zamanlanmış Görevleri Kapatmak
Wordpress’in özelliklerinden biri de zamanlanmış görevlerdir. Ancak zamanlanmış görevler bazı durumlarda sisteminize aşırı yüklenmelere sebep olabilir. Diğer bir yandan saldırganlar sisteminize sızdığı zaman kalıcı olabilmek adına, Wordpress’in CRON işlevini kullanabilirler. Aşağıdaki kodu wp-config.php dosyanıza ekleyerek Wordpress’in zamanlanmış görevlerini durdurabilirsiniz.
define('DISABLE_WP_CRON', true);
Dosya Düzenleme Editörünü Kapatmak
Wordpress üzerindeki temaların dosyalarını yönetim paneli üzerindeki kod editörü ile düzenleyebilirsiniz. Ancak bu özellik beraberinde bir zafiyet doğurabilir. Özellikle de siber saldırganların sisteminizdeki bir zafiyet üzerinden temanızın dosyalarına zararlı kod enjekte ettiklerine şahit olabiliyoruz. Aşağıdaki kodu wp-config.php dosyanıza ekleyerek Wordpress’in tema dosyalarını düzenleme özelliğini kapatabilirsiniz. Bu sayede güvenliğinizi bir adım daha ön plana çıkartacaksınız.
define('DISALLOW_FILE_EDIT', true);
Eşsiz Doğrulama Anahtarlarını Değiştirmek
WordPress’in eşsiz doğrulama anahtarları kullanıcının çerezlerinde saklanan bilgilerin
şifrelemesini geliştiren rastgele değişkenler kümesidir. Toplamda kurulum sonrası ile dört
güvenlik anahtarı oluşturulur.
AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY ve NONCE_KEY
Bu güvenlik anahtarı ile Wordpress üzerindeki yetkileri kriptolamak için kullanılır. Web sitenizin güvenliğine katkı sağlanır ve kırılabilmesi zorlaştırılır. Buradaki anahtarlar, çerezlerin şifrelenmesinden, ajax işlemlerinde kullanılacak “Nonce” olarak belirtilen işlem güvenliği anahtarlarına kadar etki etmektedir. Standart kurulumda aşağıdaki şekilde karşımıza gelir.
define('AUTH_KEY', 'eşsiz karakter kümenizi buraya yerleştirin');
define('SECURE_AUTH_KEY', 'eşsiz karakter kümenizi buraya yerleştirin');
define('LOGGED_IN_KEY', 'eşsiz karakter kümenizi buraya yerleştirin');
define('NONCE_KEY', 'eşsiz karakter kümenizi buraya yerleştirin');
define('AUTH_SALT', 'eşsiz karakter kümenizi buraya yerleştirin');
define('SECURE_AUTH_SALT', 'eşsiz karakter kümenizi buraya yerleştirin');
define('LOGGED_IN_SALT', 'eşsiz karakter kümenizi buraya yerleştirin');
define('NONCE_SALT', 'eşsiz karakter kümenizi buraya yerleştirin');
Wordpress’in wp-config.php dosyası içeriğindeki bu anahtarları aşağıdaki gibi karmaşıklaştırarak güvenliğinizi üst düzeye çıkarabilirsiniz.
define('AUTH_KEY', 'ty/46|p5CJZ}b_N-I<LeB]iwdkbLai');
define('SECURE_AUTH_KEY', '%vO$%}:n%6B$Tm/Iddd,e9pdx#O');
define('LOGGED_IN_KEY', '|Gdl2mPeYaJa^nyD/yg?1gcj)3@@B');
define('NONCE_KEY', 'K+e}.P|(%4g^NO@Se6%+&&S#L');
define('AUTH_SALT', 'UaLw)-T_*1m:<Vo1ZU6ML}JDJ:Z(a]3');
define('SECURE_AUTH_SALT', 'u5OTP/1[bqEbE6/ e}W5Hmt+dd3');
define('LOGGED_IN_SALT', 'Vv0@V3[q8UeHz@z<#dsde3df33%&');
define('NONCE_SALT', '4D3S%:Y;3N*>t8~1>~aVQd7y8[, ->D[sw3I');
Wordpress Dosya ve Dizin Ayarlarını Yapmak
Wordpress’in varsayılan izin şeması aşağıdaki şekilde olmalıdır.
Klasörler - 750
Dosyalar – 640
Klasörleriniz için 750 izni, dosyalarınız için ise 640 izni vererek güvenli hale getirebilirsiniz. Bu düzenleme için FileZilla veya benzeri bir FTP aracı kullanabileceğiniz gibi hosting firmanız ile iletişime geçmek zorunda kalabilirsiniz. Sitenizin performansını ve kullanılabilirliğini olumsuz yönde etkileyebileceği için izin değişiklikleri yapmadan önce hosting firmanız ile görüşmenizi tavsiye ederiz. Diğer bir yandan hiçbir dosya veya dizinin 777 yetkisine sahip olmadığından emin olunuz! Bir dosya veya dizin 777 şeklinde ayarlanmışsa zafiyet oluşturur!
SSH üzerinden dizinler için aşağıdaki komutu girebilirsiniz.
/ path / to / your / wordpress / install / -tipi d -exec chmod 750 {} \;
SSH üzerinden dosyalar için aşağıdaki komutu girebilirsiniz.
/ path / to / your / wordpress / install / -type f -exec chmod 640 {} \;
Yükleme Klasörünü Güvenli Hale Getirmek
Wordpress’in resim ve diğer dosyaları yükleme klasörü olan Upload dizinini olası çalıştırılabilir dosyaların yüklenmesine karşın (Shell, bash script gibi…) güvenli hale getirmelisiniz. Saldırganlar sisteminizde tespit ettikleri bir upload zafiyetini kullanarak Uploads dizinine Shell erişimi elde edecek zararlı dosyalar yükleyebilirler. Bu durumu engellemek için /wp-content/uploads/ dizini içerisine .htaccess dosyası oluşturmalı ve aşağıdaki kodu /wp-content/uploads/.htaccess dosyasına eklemelisiniz. Bu sayede saldırganların sisteminizin yükleme klasörüne zararlı dosyalar indirip, çalıştırmasını engellemiş olacaksınız.
# Kill PHP Execution
<Files ~ "\.ph(?:p[345]?|t|tml)$">
deny from all
</Files>
Kullanıcı Hesap Politikası
Wordpress kurulumu sırasında bir administrator hesabı eklemeniz istenir. Wordpress kurulumunu varsayılan olarak tamamladıysanız, sisteminizde bir yönetici hesabı oluşturmuş olacaksınız. Ancak bruteforce ataklarına karşı bu hesabın kullanıcı adını değiştirmenizi tavsiye ederiz. Aynı zamanda birden fazla yönetici hesabı bulundurmak, zafiyetlerinizi artırabilecek etkenler arasında gelir. Mümkün olduğunca tek bir yönetici hesabı kullanarak sisteminizdeki diğer kullanıcılar için editör, yazar veya kullanıcı gibi hesap yetkileri tanımlamanızı tavsiye ederiz. Hesap oluştururken genel olarak kullanıcılar isimlerini kullanıcı adı olarak belirleyebilirler. Bu da tahmin edilebilir olmasını sağlar ve sistemde zafiyet oluşturur. Kullanıcılarınızın veya yöneticilerinizin bu tarz bir kullanıcı adı belirlemesini engellemenizi tavsiye ederiz.
Parolalar ve Kullanıcı Bilgileri
Wordpress üzerinde oluşturduğunuz kullanıcılar için Wordpress varsayılan olarak karmaşık bir parola politikası uygular. Ancak bazı kullanıcılar “12345678” gibi güvenilmez ve tahmin edilebilir parolalar oluşturabilir. Sisteminizdeki bu tarz kullanıcıları uyararak karmaşık bir parola oluşturmanızı tavsiye ederiz. Aksi takdirde siber saldırganların bu parolaları tahmin ederek sisteminize giriş yapma olasılıkları çok yüksektir. Diğer bir yandan oluşturmuş olduğunuz parolaların aylık veya üç aylık peryotlarla değiştirilmesini tavsiye ederiz.
Wordpress Arama Fonksiyonunu Güvenli Hale Getirmek
Wordpress’in ?s= parametresi arama fonksiyonunu çalıştırır. Ancak Wordpress’in arama özelliği siber saldırganlar tarafından kötüye kullanılabilir. Birçok siber saldırgan sisteminizde sürekli arama gerçekleştirerek (saniyede binlerce sorgu) Mysql yükünüzü artırabilir ve sunucunuzun aşırı yüklenerek (RAM ve CPU kullanımını şişirir) cevap vermesini engelleyebilir ve servis dışı bırakabilir. Wordpress’in arama parametrelerine sınır getirerek bu durumu engelleyebilirsiniz.
Aşağıdaki kod parçacığını temanızın Functions.php dosyasında uygun bir yere ekleyerek arama sorgularını limitleyebilirsiniz. Örnek kodda bu limit kişi başına 50 sorgu olarak optimize edilmiştir. Sisteminize ve yapınıza göre bu rakamı artırabilir veya azaltabilirsiniz.
// Get user IP in WordPress
function get_the_user_ip() {
if ( ! empty( $_SERVER['HTTP_CLIENT_IP'] ) ) {
//check ip from share internet
$ip = $_SERVER['HTTP_CLIENT_IP'];
}else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return apply_filters( 'wpb_get_ip', $ip );
}
function search_visitor_ip_block($query) {
// KULLANICI BAŞINA LİMİT TANIMLAMASI
$visitorIPLimit = 50;
// ARAMA MOTORLARINI TEMİZ LİSTEYE EKLEMEK
if(preg_match('/google|yandex|yndx|spider|bot|slurp|msn|bing|adsbot|AdIdxBot|
search|face|baidu|duck|sogou|youdao|ccbot|alexa|microsoft/i',gethostbyaddr(get_the_user_ip()))){
// bot dedect
return $query;
}else {
$visitorIPCount = get_option( 'visitor_ip_count'.get_the_user_ip() );
//ZAMAN KONTROLÜ
$is_block = get_transient( 'visitor_ip_block'.get_the_user_ip() );
$will_deleted = get_option('visitor_ip_block'.get_the_user_ip().'-deleteafter30min');
//SONRASINDA BLOKE KONTROLÜ YAPMAK
if($is_block == 'blocked') :
wp_die('Çok fazla arama yaptığınız için bloke edildiniz ve 30 dakika beklemelisiniz.');
else :
//SÜRE DOLMAMIŞSA PROSEDÜR DEVAM ETSİN
if ( $query->is_search ) :
if(($visitorIPCount >= $visitorIPLimit) && $will_deleted == 'yes'):
delete_option('visitor_ip_count'.get_the_user_ip());
delete_option('visitor_ip_block'.get_the_user_ip().'-deleteafter30min');
//LİMİT KONTROLÜ DEVAM ETSİN
elseif( $visitorIPCount < $visitorIPLimit ):
$visitorIPCount += 1 ;
update_option( 'visitor_ip_count'.get_the_user_ip(), $visitorIPCount );
return $query;
else :
//30 DAKİKA ENGELLEME İÇİN TANIMLAMA
set_transient('visitor_ip_block'.get_the_user_ip(),'blocked',30);
update_option('visitor_ip_block'.get_the_user_ip().'-deleteafter30min','yes');
//SORGUYU SONLANDIRALIM
wp_die('Çok fazla arama yaptığınız için bloke edildiniz.');
endif;
endif;
endif;
}
}
//hook filters to search
add_filter('pre_get_posts','search_visitor_ip_block');
Wordpress Pingback Saldırılarına Karşı Önlem Almak
Wordpress’in Pingback özelliği saldırganlar tarafından kötüye kullanılarak sisteminizde aşırı bir yük oluşturulabilir ve servis dışı kalma saldırılarında (DDOS) kullanılabilir. Bu duruma engel olmak için kullanmıyorsanız Wordpress’in Pingback özelliğini kapatmanızı tavsiye ederiz. Aşağıdaki kodu temanızın functions.php dosyasında uygun bir yere ekleyerek Pingback fonksiyonunu kapatabilirsiniz.
// Pingback kapatmak
function remove_x_pingback($headers) {
unset($headers['X-Pingback']);
return $headers;
}
Wordpress’in XML-RPC Erişimini Kapatmak
Wordpress’in XML-RPC dosyası geçmişte birçok kez istismar edilmiştir. Bu dosyanın en önemli iki zafiyeti saldırganlar tarafından kullanılmaktadır. Birincisi sitenize yetkisiz erişim elde etmek için brute force adını verdiğimiz kaba kuvvet saldırılarında kullanılmasıdır. Saldırganlar bu dosyayı kullanarak kullanıcı adı ve şifre denemeleri yaparak sisteminize erişim elde edebilirler. İkincisi ise XML-RPC dosyası kullanılarak sisteminize servis dışı bırakma (DDOS) saldırıları yapabilmeleridir.
Bu saldırılara karşı sisteminizi korumak için temanızın function.php dosyasına aşağıdaki kodu eklemenizi tavsiye ederiz. Bu sayede XML-RPC fonksiyonu devre dışı kalacaktır.
// XML RPC Kapat
add_filter('wp_headers', 'remove_x_pingback');
add_filter('xmlrpc_enabled', '__return_false');
Aynı şekilde XML-RPC dosyanızı .htaccess üzerinden de erişime kapatabilirsiniz. Ana dizininizde bulunan .htaccess dosyanıza aşağıdaki kodu ekleyerek dosyaya erişimi kapatabilirsiniz. Kodda bulunan ip adresine sabit ip adresinizi eklerseniz yalnızca sizin bu dosyaya erişiminiz olacaktır.
# Block WordPress xmlrpc.php
<Files xmlrpc.php>
order deny,allow
deny from all
allow from 123.123.123.123
</Files>
Wordpres REST API Özelliğini Kapatmak
WordPress 4.4 ile beraber gelen REST API özelliğini kullanmıyorsanız kapatmanızı tavsiye ederiz. Bu api özelliği siber saldırganlar tarafından kötü niyetli olarak kullanılabilir ve sisteminizin aşırı yüklenmesini sağlayarak servis dışı kalmasına sebep olabilir. Wordpress Rest-API özelliğini kapatmak için temanızın functions.php dosyasına aşağıdaki kodu girmeniz yeterli olacaktır.
// Filters for WP-API version 1.x
add_filter( 'json_enabled', '__return_false' );
add_filter( 'json_jsonp_enabled', '__return_false' );
// Filters for WP-API version 2.x
add_filter( 'rest_enabled', '__return_false' );
add_filter( 'rest_jsonp_enabled', '__return_false' );
// Remove REST API info from head and headers
remove_action( 'xmlrpc_rsd_apis', 'rest_output_rsd' );
remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
remove_action( 'template_redirect', 'rest_output_link_header', 11 );
Wordpress Sürüm Bilgisini Kapatmak
Wordpress varsayılan olarak temanızın <head> kodları arasına sürüm numarasını basmaktadır. Wordpress sürüm numarasının bilinmesi de saldırganların daha başarılı ve hedef odaklı saldırılar yapmasına neden olabilir.
Wordpress’in sürüm bilgisini kapatmak için aşağıdaki kodu temanızın functions.php dosyasına ekleyerek engelleyebilirsiniz.
remove_action('wp_head', 'wp_generator');
Aynı şekilde bilgi ifşasına sebep olacak aşağıdaki özellikleri de kapatarak saldırganların bilgi almasını engelleyebilirsiniz. Kodu yine temanızın functions.php dosyasına eklemeniz gereklidir.
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'feed_links', 2);
remove_action('wp_head', 'feed_links_extra', 3);
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0 );
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('admin_print_scripts', 'print_emoji_detection_script');
remove_action('wp_print_styles', 'print_emoji_styles');
remove_action('admin_print_styles', 'print_emoji_styles');
remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
Wordpress Veritabanı Güvenlik Önlemleri
WordPress veritabanı internet sitenizin çalışabilmesi için gerekli tüm bilgileri tutar ve depolama sağlar. Elbette ki saldırganlarda SQL saldırıları gerçekleştirmek için otomatik kod çalıştıran uygulamalarla zafiyet arayarak veritabanınıza erişmeye veya verileri değiştirmeye çalışacaklardır. WordPress kurulumu sırasında veritabanı eki varsayılan olarak wp_ şeklinde gelir ve çoğu zaman varsayılan wp_ ekini değiştirmeden kurulumu tamamlarız. Bu noktada saldırganlar için maalesef ki bir zafiyet bırakmış olacaksınız.
Varsayılan kurulumda veri tabanı ön ekini (_wp_) değiştirmediyseniz, kurulum tamamlandıktan sonra aşağıdaki kodları kullanarak veritabanınızın ön ekini değiştirebilirsiniz.
Not: Bu işlem sırasında sisteminizi kullanılamaz bir hale getirebilirsiniz. İşleme başlamadan önce veritabanınızın bir yedeğini almanızı tavsiye ederiz.
Aşağıdaki sorguları hosting kontrol panelinizde phpmyadmin SQL bölümünü kullanarak tamamlayınız. Bu işlemler tamamlandığı zaman wp-config.php dosyası içerisinden de veritabanı ön ekini değiştirmeniz gerekmektedir.
Not: Aşağıdaki sorguda veritabanı ön eki wpsecure123_ olarak yeniden tanımlanmıştır. Bu değeri kendinize göre özelleştirmeniz tavsiye edilir.
RENAME table `wp_commentmeta` TO `wpsecure123_commentmeta`;
RENAME table `wp_comments` TO `wpsecure123_comments`;
RENAME table `wp_links` TO `wpsecure123_links`;
RENAME table `wp_options` TO `wpsecure123_options`;
RENAME table `wp_postmeta` TO `wpsecure123_postmeta`;
RENAME table `wp_posts` TO `wpsecure123_posts`;
RENAME table `wp_terms` TO `wpsecure123_terms`;
RENAME table `wp_termmeta` TO `wpsecure123_termmeta`;
RENAME table `wp_term_relationships` TO `wpsecure123_term_relationships`;
RENAME table `wp_term_taxonomy` TO `wpsecure123_term_taxonomy`;
RENAME table `wp_usermeta` TO `wpsecure123_usermeta`;
RENAME table `wp_users` TO `wpsecure123_users`;
Not: Teknik bilginiz yoksa, üçüncü parti Wordpress eklentileri ile de basit ve kolay bir şekilde veritabanı ön ekini değiştirebilirsiniz.
Wp-Admin Klasörüne Erişimi Sınırlamak
Wordpress’in yönetim paneline erişmek için bgasecurity.com/wp-admin şeklinde giriş yapmaktayız. Standart kurulumla wp-admin klasörüne erişim açık durumdadır. Ancak bu saldırganlar tarafından da bilindiği gibi brute force gibi ataklarla parolalarınızın kırılmasına ve yetkisiz erişimler alınmasına sebep olabilir. Bu gibi saldırılara karşı korunmak için Wp-admin klasörüne erişimi üç türlü gerçekleştirebiliriz.
1) Sabit IP Adresi ile .htaccess Üzerinden Kısıtlama
Eğer sabit bir ip adresine sahipseniz erişimi aşağıdaki şekilde sınırlandırabilirsiniz.
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName “Access Control”
AuthType Basic
order deny,allow
deny from all
#izin verilecek ip adresi
allow from 123.123.123.123
Bu kod bloğunda 123.123.123.123 ip adresine erişim izni verilmiştir ve diğer ip adreslerinden gelen bağlantı istekleri kabul edilmeyecektir.
2) Wp-Admin İçin İkincil Şifre Koymak
Wp-admin klasörü altına bir .htaccess dosyası ekleyerek ikincil bir parola sürecini dahil edebilirsiniz. Wp-admin klasörüne erişmek istenildiği zaman öncelikle Apache üzerinden tanımlanan .htpassword erişimi sağlanır.
AuthType Basic
# this text is displayed in the login dialog
AuthName “Wp-Admin Koruması!”
# Bu dosya yolunu siz belirleyin ve .htpasswd dosyanızı tanımlayın.
AuthUserFile /path/to/.htpasswd
# Allows any user in the .htpasswd file to access the directory
require valid-user
Not: htpasswd dosyasına user ve password tanımlamak için Htpasswd Generator kullanmanız gerekmektedir.
3) Wp-Admin Yolunu Değiştirmek
Wp-admin klasör yolunu değiştirmek için Wordpress Wp-admin eklentilerinden olan Lockdown WP Admin eklentisini veya benzeri bir eklentiyi sisteminize kurabilirsiniz.
Diğer WordPress Güvenlik Ayarları
Saldırganlar Wordpress üzerindeki klasörleri, eklentileri ve tema dosyalarını görebilmek ve bu sayede hedefli bir saldırı yapabilmek için bilgi toplamaya özen gösterirler. Bu noktada bilgi toplamalarına da engel olmak zorundayız.
Aşağıdaki kodları .htaccess dosyanıza ekleyerek dizin listelemeyi, sunucu imzasını kapatabilir ve dosya yükleme limitini sınırlayabilirsiniz:
# dizin listelemeyi iptal etmek
Options All -Indexes
# sunucu imzasını kaldırmak
ServerSignature Off
# dosya yükleme boyutunu 10mb ile sınırlandırmak
LimitRequestBody 10240000
İki Adımlı Kimlik Doğrulama
Wordpress yönetim paneli girişini iki adımlı kimlik doğrulama uygulamaları kurarak daha güvenli bir hale getirebilirsiniz.
- Authy
- Duo
- Rublon
- Two-Factor
WordPress Yedekleme
Sağlam bir yedekleme stratejisi, tüm WordPress kurulumunuzun düzenli bir şekilde yedeklenmesini içermelidir. Wordpress database ve FTP yedeği alarak olası sorunlarda geri yükleme yapabilirsiniz.
Yedekleme yöntemleri:
- Wordpress yedekleme eklentileri
- SSH üzerinden manuel yedekleme
- Hosting kontrol paneli araçları
Ücretsiz Çevrimiçi Tarayıcılar
Saldırganlar saldırmadan önce bu araçlarla siteleri tarar. Siz de düzenli olarak tarama yapabilirsiniz:
- Virustotal
- Sitecheck
- Unmaskparasites
- Redleg AW-Snap
- Wordfence
- Sucuri Security
- VaultPress
- Norton Web Yöneticisi Aracı
- Google Arama Konsolu
Kesinti Tespiti ve Çalışma Süresi İzleme
Web siteniz saldırılar veya hosting sorunları nedeniyle çökebilir. Kesintileri tespit etmek için ücretsiz olarak hizmet veren araçlar:
- UptimeRobot
- Pingdom
Güvenlik Eklentileri
Wordpress için ücretsiz güvenlik eklentileri sayesinde sisteminizi daha güvenli hale getirebilirsiniz:
- All In One WP Security & Firewall
- Sucuri Security
- iThemes Security
- Wordfence Security
- WP fail2ban
- SecuPress
- BulletProof Security
- VaultPress