Bu makalede WordPress güvenliğini göreceğiz, güvenli bir WordPress sitesi için neler yapabiliriz, neleri yapmamamız gerekir tüm bunları inceleyeceğiz.
WordPress sistemi tüm dünyada açık kaynak kodları ile, milyonlarca sitenin kullandığı bir sistem olduğu için, hacker ve lamer ler için kolay hedeflerden biridir. Bir sürümünde herhangi bir açık olduğunda o sürümü kullanan binlerce siteyi anında bulup üzerinde denemeler yapabilirler ve inanın bunu çoğunlukla sadece eğlence, sadece boş vakitlerini geçirmek ve kendilerini geliştirmek için yaptıklarını söyleyebilirim. Dolayısıyla siz bir WordPress kullanıcısı olarak, eğer bu ataklara maruz kalıp canınız sıkılmasın istiyorsanız bu ve wolkan.ca sitesinde WordPress Güvenliği ile alakalı konuları dikkate alın.
Aşağıda konu okumanızı kolaylaştırmak amacı ile 1, 2, 3 sıralaması ile devam edecektir, afiyet olsun.
Konu indeksi
- WP Panelinin şifrelenmesi (kimlik doğrulama)
- Güncelleme işlemleri
- Database bilgileri
- Yönetici kullanıcı adı ve parola seçimi
- Tablo ön ekinin değiştirilmesi
WordPress Security 1
- WordPress güvenlik anahtarları
- Gereksiz dosyaların kaldırılması
- Dosya izinlerinin düzenlenmesi
- Dizinlerin listelenmesini engellemek
- Hotlink koruması
WordPress Security 2
- Config.php dosyasına erişimi engellemek
- Giriş sayfası bildirimleri devre dışı bırakmak
- .htaccess kullanarak spam botları engellemek
- Sunucu sürüm imzalarını kaldırmak
- WordPress sürümünü gizlemek
- Zararlı sorguları engellemek
- Robots.txt
WordPress Security 3
WordPress Security 1
WP Panelinin şifrelenmesi (kimlik doğrulama)
Güncelleme işlemleri
Database bilgileri
Yönetici kullanıcı adı ve parola seçimi
Tablo ön ekinin değiştirilmesi
Alınabilecek önlemler / Konular
WP panelinin şifrelenmesi
En etkili yöntemlerden birisi olan panelin şifrelenmesini görelim. İşe başlamadan önce bir besmeleden sonra yedeklerimizi almayı unutmayalım.
Öncelikle sunucunuzda Apache desteği olmalıdır, host ne kadar wp uyumlu olsa da hostçunuza danışmayı unutmayın. Eğer Windows bir sunucu ise ve Apache yoksa bu yöntemi web.config veya Windows güvenliği ile yapabiliriz fakat Windows sunucu ile WordPress kullanımı yaygın değildir bu yüzden o yöntemi şu an yazmıyoruz.
İlk olarak ftp de (ana dizin veya örnekte /home/ altına).htpasswd isminde bir dosya oluşturuyoruz, bu dosyayı kullanarak panele koyacağımız bilgileri saklayacağız.
http://www.e2.u-net.com/htaccess/make.htm adresine girip kullanıcı adı ve şifre oluşturacağız. Oluşturulan kodu .htpasswd dosyasının içine yapıştırıp kaydedin.
Şimdi sıra .htaccess dosyamızı düzenleyeceğiz, dosyayı açıp şu kodları ekliyoruz:
<IfModule mod_rewrite.c> ErrorDocument 401 default AuthUserFile /home/.htpasswd AuthName "Site" AuthType Basic Require valid-user </IfModule>
.htpasswd nerede ise ona göre dizin adresini ayarlayın, örnekte /home/.htpasswd olarak geçiyor. Dosyamızı kaydediyoruz, diğer kodları silmeyin.
Bu işlemi yaptıktan sonra panelimiz şifrelenmiş olacaktır.
Güncelleme işlemleri
WordPress sürekli güncellenen bir sistem olduğu için gerekli güncellemeleri kaçırmayın, bir önceki sürüm güncellendiyse mutlaka bir açık bulunmuş veya yeni bir özellikler eklenmiştir.
Bu güncellemeleri aksattığınız takdirde sizi izleyen birileri varsa bu onların ekmeğine yağ sürecektir, o yüzden güncellemeleri takip edin ve panelinizden otomatik güncellemeyi yapın.
Not: panelden otomatik güncellemeyi anlatmıştım WP kategorisinde bulabilirsiniz, yine hatırlatayım panelden güncelleme yapacaksanız yedeğinizi alın ve ftp de gerekli yazma izinleri verdiğinizden emin olun.
Database bilgileri
WP kurulumu sırasında bizden istenen veritabanı bilgilerini güvenli seçmekte fayda var. Şunu unutmayın veritabanı bilgilerini kurulum aşamasında kullanacağımız için ezberlemeye hiç gerek yok. O nedenle veritabanının hem isminin, hem kullanıcı adının hem de parolasının kolay kolay tahmin edileyecek veya kırılamayacak bir şekilde oluşturmaya özen gösterin.
Basit bir kullanıcı adı veya 123456 şeklindeki bilgilerden kesinlikle uzak durun.
Yönetici kullanıcı adı ve parola seçimi
WP de 3.0 sürümünden itibaren kurulum esnasında istediğimiz kullanıcı adı ve parolayı belirleyebilirsiniz. Önceki sürümlerde kurulum sonrasında sabit kullanıcı adı admin oluyordu ve bu yüzden güvenlik zafiyeti ortaya çıkıyordu.
WordPress 3.0 versiyonundan yukarısı için admin değil dilediğiniz başka bir kullanıcı adı seçebilirsiniz. 3.0 aşağısı ise veya önceden beri kullanıcı adınız admin ise WordPress veritabanından veya bu işi yapan bir eklenti yardımı ile değiştirmeniz de mümkün.
Kesinlikle “admin” “yönetici” gibi kullanıcı adlarını seçmeyin ve parolanızı kırılamayacak şekilde oluşturun. “Kolay olsun yaa unutmayayım, kim uğraşır benimle”
Tablo Ön Ekinin değiştirilmesi
Kurulum aşamasında site üzerinden kurulum yaptıysanız ve wp_ ön ekini görmüşünüzdür. Bir database üzerinde birden çok WordPress kullanmayacaksanız bunun ne olduğunun önemi yok. Ancak wp_ ön ekini değiştirmeniz size güvenlikte + kazandıracaktır.
Bu ön eki WLKNCA_ şeklinde değiştirmek sizi birçok saldırı girişiminden önleyecektir. Ön eki belirlemek tamamen size kalmış.
düşüncesinden uzak durun.. Parolanız çok uzun olacaksa gerekirse bir kağıda yazıp kitabınızın arasına sıkıştırın.
WordPress Security 2
WordPress güvenlik anahtarları
Gereksiz dosyaların kaldırılması
Dosya izinlerinin düzenlenmesi
Dizinlerin listelenmesini engellemek
Hotlink koruması
Alınabilecek önlemler / Konular
WordPress güvenlik anahtarları
Güvenlik anahtarları sitenizi ziyaret eden kullanıcıların bilgisayarında depolanan cookieleri şifrelemeye yarar.
Ne kadar güçlü güvenlik anahtarlarınız olursa o kadar güçlü korunursunuz. Bu işlem veritabanına şifreleriniz saklanırken de geçerlidir. Böylece sitenize zarar vermek isteyenlerin yoluna bir taş daha koyarsınız.
Güvenlik anahtarlarını wp-config.php dosyasını düzenleyerek kullanabilirsiniz. api.wordpress.org/secret-key/1.1/salt adresinden eşsiz doğrulama anahtarları üretebilirsiniz.
Gereksiz dosyaların kaldırılması
WordPress kurulumunu gerçekleştirdikten sonra artık bazı dosyalara ihtiyacımız kalmayacak. Biz de fazladan dosyalara ihtiyacımız olmadığı için bu dosyaları silebiliriz, böylelikle bazı girişimleri de engellemiş oluruz. Kurulumdan sonra wp-admin/install.php ve wp-config-sample.php yi silebilirsiniz.
Dosya izinlerinin düzenlenmesi
Bu konuda oldukça önemli bir konudur. Web sitelerimize yapılan saldırı girişimlerinde ve dışarıdan erişimlerde güvenlik problemlerini engellemek için yazma izinlerini mutlaka düzenlemeniz gereklidir.
Kurulum sonrası klasörlere 755 dosyalara ise 644 yazma izni vermelisiniz.
777 yaptığınızda yazma izinlerinin açık olacağını unutmayın. Uploads klasörü 777 olmalıdır, onun dışında 777 yapacağınız pek bir dosya veya klasör yok.
Dizinlerin listelenmesini engellemek
Dizinlerin listelenmesini engellemek sitenizin güvenliği için önemlidir, dizinlerin listelenmesini engellemek için şu kodu .htaccess dosyası içerisine ekleyin:
Options All -Indexes
Hotlink koruması
Web siteniz tanınıyorsa özgün olarak ürettiğiniz makale, resim vb’ler bazı insanlar tarafından kendi sitelerine kopyalanabiliyor. Saatlerce oluşturuduğunuz bu emekler dakikalar içerisinde başka sitelerde yayımlanabilir. Bu sitenize zarar vermekte birlikte sitenizin trafik akışınıda olumsuz etkiler.
Bu tür emek hırsızları ile mücadele etmek için .htaccess dosyanıza şu kodları ekleyin:
<IfModule mod_rewrite.c> RewriteEngine On #?wolkan.ca - site adresiniz RewriteCond %{HTTP_REFERER}!^http://(.+.)?wolkan.ca [NC] RewriteCond %{HTTP_REFERER}!^$ #/images/kopyalama.jpg - resim adresiniz RetriteRule.*(jpeg|gif|bmp|png)4$ /images/kopyalama.jpg [L] </IfModule>
Bu işlemi yaptıktan sonra sizin sunucunuzda bulunan resimler yalnızca kendi sitenizde(wolkan.ca) görüntülenecektir. Websiteniz üzerinden alınan resimlere karşılık yasakladığınız kopyalama.jpg isimli resim dosyası gözükecektir.
WordPress Security 3
Config.php dosyasına erişimi engellemek
Giriş sayfası bildirimleri devre dışı bırakmak
.htaccess kullanarak spam botları engellemek
Sunucu sürüm imzalarını kaldırmak
WordPress sürümünü gizlemek
Zararlı sorguları engellemek
Robots.txt
Alınabilecek önlemler / Konular
Config.php erişimi engellemek
WordPress kurulumu sırasında veritabanı bilgilerinin bulunduğu wp-config.php dosyasına erişimi engellemeniz size + güvenlik kazandıracaktır. 644 yetkisi normalde yeterlidir.
Fakat sunucu üzerinde yer alan diğer sitelerden shell vs yollarla dosyalarınıza erişilebilinir. .HTACCESS kullanarak bu erişimi tamamen ortadan kaldıracağız.
#wpconfig.php dosyasına erişimi engelle <files wp-config.php> order allow,deny deny from all </files>
Bu kodu .htacces dosyanıza eklediğinizde erişimi engellemiş olacaksınız.
Sadece statik ip kullanıyorsanız ve siz girmek istiyorsanız da şu kodu eklemeniz yeterlidir:
#WP-Config.php dosyasına sabit IPden erişmek <files wp-config.php> order deny,allow deny from all allow from 111.11.11.11 </files>
111.11.11.11 sizin ip adresinizi temsil ediyor, onun yerine sizin ip adresiniz neyse onu yazınız.
Giriş sayfasındaki bildirimleri devre dışı bırakmak
WordPress geliştiricilerinin, kullanıcılara sunduğu bazı imkanlar bazen aleyhimize kullanılabiliyor. Bunlardan biri de WordPress Admin paneline giriş yapılan ekranda ki hata uyarısı.
“HATA: geçersiz kullanıcı adı. Parolanızı mı unuttunuz”
.
Bazı lamerler bu uyarıyı göz önünde bulundurararak yönetici ekranı girişinde kullanıcı adı ve parolalar üreterek giriş yapmaya çalışıyor. Bu durumdan kurtulmak için yapmanız gereken temanızın functions.php dosyasına şu kodları eklemek:
add_filter(’login_errors',create_function('$a',return null;"));
.htaccess kullanarak spam botları engellemek
Spam botlarından kurtulmak için birçok eklenti mevcut, fakat biz sorunu kökten çözeceğiz. Sitemize zarar vermek isteyen ip adresini biliyorsak htaccess dosyamıza şunları yazıyoruz:
<Limit GET POST> order allow,deny allow from all deny from zararlı ip adresi </Limit>
Eğer birden fazla ip adresi canınızı sıkıyorsa şu kodları ekleyin:
<Limit GET POST> order allow,deny allow from all deny from zararlı ip adresi deny from zararlı ip adresi2 deny from zararlı ip adresi3 deny from zararlı ip adresi4 </Limit>
Sunucu sürüm imzalarını kaldırmak
Genellikle Linux hostinglerde Apache bir hata oluştuğunda ya da bazı komutlar girildiğinde karşı tarafa Apache hata sayfası olarak versiyon numaralarını içeren bilgilendirme sayfaları sunar. Bu herhangi bir açık değildir; fakat yazılım sistemlerini sürekli takip eden ve açıklardan haberdar olan hackerlar, eski versiyonlarda yer alan açıkları kullanarak sitenize erişebilir.
Şu ufak kodları .htaccess dosyanıza ekleyin ve önleminizi alın:
#sunucu sürüm imzalarını kaldır ServerSignature Off
WordPress sürümünü gizlemek
Sitenizin sayfa kaynağından WordPress sürümünüzü görebilirsiniz. Yeni sürüm çıktıktan sonra hemen güncelleme işlemi yapmıyorsanız eski sürüm hacklerler tarafından fark edilip gerekli açıkları varsa sitenize zarar verilebilir.
functions.php dosyasına şu kodları ekleyin ve kaydedin:
Remove_action('wp_head','wp_generator');
Kaydettikten sonra sayfa kaynağına baktığınızda mevcut wp sürümünü göremeyeceksiniz.
Zararlı sorguları engellemek
Block Bad Queries eklentisini hemen googleden bulup indirelim http://j.mp/zUeymn, wp-content/plugins klasörünüze girin ve eklentiyi buraya gönderin. Panelinizden etkinleştirdiğinizde artık web siteniz zararlı sorgulardan korunacaktır.
Robots.txt
Robots.txt dosyası gerek sitemiz için gerekse arama motorları için(SEO) oldukça önemlidir. Bu dosyayı kullanarak sitenizi ziyaret eden örümceklerin nereleri girip girmeyeceğini belirleyebilirsiniz. İdeal bir robots.txt dosyası oluşturacağız.
İlk olarak site haritamızın bağlantı adresini robots.txt dosyasına ekleyelim. Eklentiyi kurduğunuzda otomatik olarak bu işlem gerçekleşebileceği gibi kod ekleyerekte yapabılırsınız. Site haritası için WordPress Plugin: http://j.mp/whRvay
#Site haritası başlangıç Sitemap:http://siteadi.com/sitemap.xml.gz #Site haritası sonu
Kodlarını ekleyerek site haritamızı ekledik, şimdi de dizinleri indexleme ayarlarını belirleyelim:
User-agent:* Disallow:/*.php$ Disallow:/*.js$ Disallow:/*.inc$ Disallow:/*.css$ Disallow:/*.wmv$ Disallow:/*.tar$ Disallow:/*.tgz$ Disallow:/*.cgi$ Disallow:/*.xhtml$ Disallow:/*.wp-admin/ Disallow:/*.wp-includes/
Burada birkaç hususa değinelim; User-agent: Sitenizi ziyaret eden örümceğin tanımlama ismi. Disallow: indexlemeyi engellemek istediğiniz dizinleri belirtmek için kullanıyoruz. Allow: indexlemesine izin verdiğiniz dizinleri belirtmek için kullanıyoruz. User-agent: * dersek tüm botları kapsar, robots.txt hakkında daha detaylı bilgi için: http://j.mp/zp2uhI
Yukarıdaki yer alan kodlara göz atacak olursak .php – .css uzantılı dosyaları tüm kullanıcılarda engellemiş bulunuyoruz. Birkaç tane daha kod ekleyelim ve sonlandıralım:
User-agent: Googlebot-Image Allow:/ User-agent: Mediapartners-Google Allow:/ User-agent: Adsbot-Google Allow:/ User-agent: Googlebot-mobile Allow:/
Eklemiş olduğumuz kodlar sayesinde özel tanımlanmış örümceklere de sitemizi tarama izni vermiş olduk.
Bu konuya benzer WordPress Güvenliği ile alakalı diğer makalelerimizi incelemenizi öneririm:
https://wolkanca.com/wordpress-icin-bir-miktar-guvenlik-ipucu/
https://wolkanca.com/#wordpress+g%C3%BCvenlik
Soru görüş ve önerilerinizi yorum kısmına bırakabilirsiniz.
Kamil Sevi – m.a.c.k.r.u.l.z @ – http://sevikamil.blogspot.com
WordPress Security – ekle,
WordPress kutsal kitap: http://codex.wordpress.org
“WordPress Security – Güvenlik” için 1 yanıt
güzel bir derleme olmuş, her wordpress kullananın mutlaka en az bir kere okuması gerekir.