- Kayıt
- 6 Şubat 2015
- Mesajlar
- 549
- Tepkiler
- 436
- Meslek
- Nükleer ve Atom Mühendisi
- Üniv
- MEPhI, KTÜ
WordPress 70 milyon kullanıcıya sahip dünyanın en popüler CMS'dir. Ama wordpress ne kadar güvenlidir? Wordpress de güvenlik nasıl sağlanır? Wordpress güvenlik önlemleri nedir?
Bu yazıda wordpress altyapısına sahip web siteleri için bazı önlem alma tekniklerini göstereceğim. Bir başka yazıda htaccess ile site hızlandırma hakkında bilgi vermiştik.
1- Olarak .htaccess dosyasını oluşturalım (ana dizinimiz de yok ise)
İlk olarak aşağıdaki kod ile başlıyoruz. Kalıcı bağlantı ayarlarını yapmaktadır.
2. wp-config.php dosyasının korunması
.htaccess dosyamızın içerisine aşağıdaki kodu ekliyoruz. Bu ko wp-config.php dosyasına dışarıdan müdahaleyi engelleyecek.
3- Yönetici hesabını sınırlandırma (Opsiyonel)
4- Kötü kullanıcıları engelleme
Eğer aynı ip lerden sürekli yönetici hesabına erişme, şifre denemesi yapma, sunucuyu zorlama, kaynak dosyalara ulaşma vs gibi işlemlerde bulunan var ise ip sini banlayabilirsiniz.
Yine birden fazla ise aynı koda ekleme yaparak devam ediyoruz.
5- Dizinlerin listelenmesini kapama
Bazı temalar ve eklentilerde açık olabiliyor veya farketmeden silmiş olabiliyoruz. Eğer dizininizde listelenen klasör var ise bunları kapatınız.
Şöyle ki orada hangi dosyalar mevcut göre biliyorum. Mesela class-wp-theme.php gibi
veya diğerleri google dan class-wp-theme.php diye arattığım zaman mesela dosyanın içeriğini buluyorum. Bu dosyanın içini gösteriyor. Yani php dosyasının içinde neler var görebiliyorum. Orada hangi değişkenleri kullanmış göre biliyorum. Sonra basit bir şekilde yukarıdan en basit yöntem olan post ile istediğimi gönderip kendime kapı aça bilirim.
Aşağıdaki kodu .htaccess dosyamıza ekliyoruz. Bazı sunucularda çalışmayabiliyor. Eğer hala dizinler kapanmaz ise o dizine boş index.php atınız.
6- Önemli gördüğünüz dosyalarınızı koruyabilirsiniz (opsiyonel)
7- .htaccess dosyasının korunması
Kulağa çılgınca gelebilir .htaccess ile sistemimizi korurken bazen açıklar .htaccess'den de kaynaklı olabiliyor. Onuda korumaya almamız gerekiyor.
Aşağıdaki koduda ekleyebilirsiniz.
8- Hotlink koruması
Sitenizdeki resimleri başka siteler sizin sunucunuz üzerinden kendi sitelerinde kullanabilirler. Buda gereksiz yere sizin bant genişliğinize yansır. Bunu engellemek için aşağıdaki kodu kullababilirsiniz.
domain'i değiştirmeyi unutmayınız.
9- Wordpess Admin Klasörünü Şifreleme
İlk olara .htpasswds dosyamızı oluşturmamız gerekmektedir. Bu siteden oluşturabilirsiniz: htaccesstools.com/htpasswd-generator sitesine girdikten sonra kullanıcı adı ve şifre oluşturup create .htpasswds tıklayınız. Daha sonra çıkan kodları .htpasswds dosyası oluşturarak içine kopyalayıp bu dosyayı /public_html/ içine atabilirsiniz.
Örnek yaptığım bir şifreleme:
Diğer Bir Yöntem
home/user/.htpasswds/public_html/wp-admin/passwd/
wp admin içerisinde passwd klasörü oluşturup içerisine yeni bir .htaccess dosyası oluşturuyoruz. Ardından içerisine aşağıdaki kodları ekliyoruz.
10- Bazı Wordpress alt klasörlerinde PHP yürütmeyi kapatma
Bazen kötü kişiler /wp-content/uploads/ veya /wp-includes/ klasörlerinden php dosya çalıştırarak kapı açabilirler. Bu klasörlerde php yürütmeyi kapatabiliriz. Nasıl yapacağız? FTP den bu klasörlere ulaşarak yeni bir .htaccess dosyası oluşturuyoruz. Bu dosya içerisine aşağıdaki kodları ekliyoruz.
11- wp-include ve içerik dosyalarının korumanın bir başka yolu
12- error.log dosyasının gizlenmesi
sunucumuzun verdiği hataları herkes tarafından görülmesi pek yararımıza olmayabilir.
Bu yazıda wordpress altyapısına sahip web siteleri için bazı önlem alma tekniklerini göstereceğim. Bir başka yazıda htaccess ile site hızlandırma hakkında bilgi vermiştik.
1- Olarak .htaccess dosyasını oluşturalım (ana dizinimiz de yok ise)
İlk olarak aşağıdaki kod ile başlıyoruz. Kalıcı bağlantı ayarlarını yapmaktadır.
Kod:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
2. wp-config.php dosyasının korunması
.htaccess dosyamızın içerisine aşağıdaki kodu ekliyoruz. Bu ko wp-config.php dosyasına dışarıdan müdahaleyi engelleyecek.
Kod:
<Files wp-config.php>
order allow,deny
deny from all
</Files>
3- Yönetici hesabını sınırlandırma (Opsiyonel)
Kod:
order deny,allow
allow from 201.091.21.32 (bu kısıma kendi ip adresinizi yazınız)
deny from all
4- Kötü kullanıcıları engelleme
Eğer aynı ip lerden sürekli yönetici hesabına erişme, şifre denemesi yapma, sunucuyu zorlama, kaynak dosyalara ulaşma vs gibi işlemlerde bulunan var ise ip sini banlayabilirsiniz.
Kod:
<Limit GET POST>
order allow,deny
deny from 201.091.21.32 ( Bu kısıma kötü kişinin ip si)
allow from all
</Limit>
Kod:
<Limit GET POST>
order allow,deny
deny from 201.091.21.32
deny from 204.090.21.2
allow from all
</Limit>
Bazı temalar ve eklentilerde açık olabiliyor veya farketmeden silmiş olabiliyoruz. Eğer dizininizde listelenen klasör var ise bunları kapatınız.
Şöyle ki orada hangi dosyalar mevcut göre biliyorum. Mesela class-wp-theme.php gibi
veya diğerleri google dan class-wp-theme.php diye arattığım zaman mesela dosyanın içeriğini buluyorum. Bu dosyanın içini gösteriyor. Yani php dosyasının içinde neler var görebiliyorum. Orada hangi değişkenleri kullanmış göre biliyorum. Sonra basit bir şekilde yukarıdan en basit yöntem olan post ile istediğimi gönderip kendime kapı aça bilirim.
Aşağıdaki kodu .htaccess dosyamıza ekliyoruz. Bazı sunucularda çalışmayabiliyor. Eğer hala dizinler kapanmaz ise o dizine boş index.php atınız.
Kod:
Options All -Indexes
Kod:
<files .htaccess="dosyanın adı buraya">
order allow,deny
deny from all
</files>
Kulağa çılgınca gelebilir .htaccess ile sistemimizi korurken bazen açıklar .htaccess'den de kaynaklı olabiliyor. Onuda korumaya almamız gerekiyor.
Kod:
<Files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</Files>
Kod:
<FilesMatch "(\.htaccess)">
Order deny,allow
Deny from all
</FilesMatch>
8- Hotlink koruması
Sitenizdeki resimleri başka siteler sizin sunucunuz üzerinden kendi sitelerinde kullanabilirler. Buda gereksiz yere sizin bant genişliğinize yansır. Bunu engellemek için aşağıdaki kodu kullababilirsiniz.
Kod:
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)muhendisbeyinler.net/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)google.com/.*$ [NC]
Yine buraya izin verdiğizi siteleri ekleyebilirsiniz. Yukarıda kendi sitemize ve googlea izin verdik. Burayı silmeyi unutmayınız :)
RewriteRule \.(gif|jpg|jpeg|bmp|zip|rar|mp3|flv|swf|xml|mp4|png|css|pdf)$ - [F]
9- Wordpess Admin Klasörünü Şifreleme
İlk olara .htpasswds dosyamızı oluşturmamız gerekmektedir. Bu siteden oluşturabilirsiniz: htaccesstools.com/htpasswd-generator sitesine girdikten sonra kullanıcı adı ve şifre oluşturup create .htpasswds tıklayınız. Daha sonra çıkan kodları .htpasswds dosyası oluşturarak içine kopyalayıp bu dosyayı /public_html/ içine atabilirsiniz.
Örnek yaptığım bir şifreleme:
Kod:
admin:$apr1$2ELzmWNL$TZMFaGlFTV.pvBAmhiXbu1
home/user/.htpasswds/public_html/wp-admin/passwd/
wp admin içerisinde passwd klasörü oluşturup içerisine yeni bir .htaccess dosyası oluşturuyoruz. Ardından içerisine aşağıdaki kodları ekliyoruz.
Kod:
AuthName "Admins Only"
AuthUserFile /home/sizindizininiz/public_html/
AuthGroupFile /dev/null
AuthType basic
require user putyourusernamehere
<Files admin-ajax.php>
Order allow,deny
Allow from all
Satisfy any
</Files>
Bazen kötü kişiler /wp-content/uploads/ veya /wp-includes/ klasörlerinden php dosya çalıştırarak kapı açabilirler. Bu klasörlerde php yürütmeyi kapatabiliriz. Nasıl yapacağız? FTP den bu klasörlere ulaşarak yeni bir .htaccess dosyası oluşturuyoruz. Bu dosya içerisine aşağıdaki kodları ekliyoruz.
Kod:
<Files *.php>
deny from all
</Files>
Kod:
<IfModule mod_rewrite.c>
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]
</IfModule>
sunucumuzun verdiği hataları herkes tarafından görülmesi pek yararımıza olmayabilir.
Kod:
<FilesMatch "(\error.log)">
Order deny,allow
Deny from all
</FilesMatch>