WordPress yönetim alanını yalnızca kendi IP adreslerinize açın
wp-login.php ve /wp-admin kapılarını, bir sitenin Güvenlik sekmesinden, adını verdiğiniz adresler dışında herkese kapatın. Filtrenin hangi alanları kapsadığı, hangi adres biçimlerinin anlaşıldığı, engellenen ziyaretçinin ne gördüğü, IP havuzlarının bir filoda nasıl çalıştığı ve kendinizi dışarıda bırakırsanız nasıl geri gireceğiniz.
WP Safer IP güvenlik duvarı, bir sitenin WordPress yönetim alanını kimin açabileceğine yalnızca ağ adresine bakarak karar veren, site başına tanımlanan bir kuraldır. Kuralı sitenin kendisinde WP Safer eklentisi uygular; yönetimi panelinizdeki sitenin Güvenlik sekmesinden yapılır.
Bir WordPress sitesine yapılan saldırıların çoğu aynı iki kapıya gelir: wp-login.php ve /wp-admin. Bir siteye gerçekten giriş yapan insanlar her zaman birkaç adresten geliyorsa — bir ofis hattı, bir VPN, kendi sabit bağlantınız — bu kapıları diğer herkese WP Safer panelinizden kapatabilirsiniz. Kimsenin bir sunucu yapılandırma dosyasına dokunması gerekmez.
Burası WordPress yönetim alanının önündeki bir kapıdır, web uygulaması güvenlik duvarı değil. İstekleri okumaz, kötü amaçlı desen aramaz, hiçbir şey taramaz. Tek bir şey hakkında tek bir soru sorar: bu istek hangi adresten geliyor ve o adres listede mi.
Filtrenin baktığı istekler
Filtreyi sitenin kendisinde WP Safer eklentisi uygular ve dört alanı kapsayabilir:
- Giriş sayfası (wp-login.php) — varsayılan olarak açık.
- Yönetim alanı (/wp-admin) — varsayılan olarak açık.
- XML-RPC (xmlrpc.php) — varsayılan olarak açık.
- admin-ajax.php ve admin-post.php — aşağıda anlatılan sebeple varsayılan olarak kapalı.
Geri kalan her şeye dokunulmaz. Sitenin herkese açık sayfaları hiçbir zaman filtrelenmez, WordPress REST API'si hiçbir zaman filtrelenmez, panelinizin konuştuğu uç olan /wpsafer-api de filtrelenmez. Sonuncusu önemli: panelinizin gönderdiği imzalı istekler — yedekler, güncellemeler, erişilebilirlik kontrolleri — listeye ne yazarsanız yazın tam olarak eskisi gibi çalışmaya devam eder. WP-CLI komutları ve WordPress cron koşumları da kapsam dışıdır; çünkü sunucuda çalışan bir komutun değerlendirilecek bir ziyaretçi adresi yoktur.
Nasıl açılır
- Panelinizde siteyi açın ve Güvenlik sekmesine gidin.
- Kural başlığı altında Beyaz liste ya da Kara liste seçin.
- Adresleri Adresler, her satıra bir tane kutusuna yazın. Hemen altındaki Adresimi ekle düğmesi şu anda bağlandığınız adresi kutuya yazar; sekmenin üstündeki kart da o adresi gösterir.
- Korunacak alanlar başlığı altında, değiştirmek için bir sebebiniz yoksa varsayılanları olduğu gibi bırakın.
- Kaydet ve siteye gönder düğmesine basın.
Kaydetmek ve göndermek iki ayrı olaydır. Panel önce kendi kaydını yazar, sonra ayarı siteye gönderir. O anda siteye ulaşılamıyorsa listeniz atılmaz — sekme size ayarın burada kaydedildiğini ama gönderilemediğini söyler, bir sonraki kaydetmede gider.
Sitede WP Safer eklentisinin 1.3.6 ya da daha yeni bir sürümü bulunmalıdır. Daha eski bir sürümde sekme bunu yazar ve söylediği şey gerçektir: ayar saklanır ama site hiçbir şeyi filtrelemez. Önce eklentiyi güncelleyin, kuralı ondan sonra kaydedin.
Beyaz liste mi, kara liste mi
Beyaz liste, korunan alanlara yalnızca yazdığınız adreslerin girebileceği anlamına gelir; diğer herkes geri çevrilir. Güçlü olan ayar budur ve sizi dışarıda bırakabilecek olan da budur; bir tane kaydetmeden önce aşağıdaki ilgili bölümü okuyun.
Kara liste bunun tersidir: yazdığınız adresler dışında herkes yönetim alanına girer. Siteyi bilinen bir ofise ayırmak yerine gürültü çıkaran tek bir ağı dışarıda tutmak istediğinizde doğru seçim budur.
Bir de Kapalı vardır. Filtrelemeyi durdurur ama listeyi saklar; böylece bir kuralı bir öğleden sonralığına kapatıp her şeyi yeniden yazmadan geri açabilirsiniz.
Anlaşılan adres biçimleri
- Tek bir IPv4 adresi:
203.0.113.10 - Tek bir IPv6 adresi:
2001:db8::1(aynı adresin kısa ve uzun yazımı aynı adres sayılır) - IPv4 ya da IPv6 bir CIDR bloğu:
10.0.0.0/8,2001:db8::/32 - Joker, yalnızca IPv4 ve yalnızca sağda:
192.168.1.*çalışır,1.*.3.4çalışmaz - Bir aralık:
1.2.3.10-1.2.3.50ya da aynı blok içinde kısa yazımı1.2.3.10-50
Okunamayan bir satır sessizce atılmaz. Kaydettikten sonra çıkan mesaj dışarıda bırakılan satırları tek tek adıyla söyler; böylece tek bir adresteki yazım hatası sessizce başka bir şey yapan bir kurala dönüşmez. Bir liste en fazla 200 adres tutar; bunun ötesindekiler siteye gönderilmez.
admin-ajax.php ve admin-post.php neden varsayılan olarak kapalı
Bu iki dosyayı yalnızca yönetim ekranları kullanmaz. Bir WordPress sitesinin ön yüzü de bunları sürekli kullanır: iletişim formları, sepet güncellemeleri, mağaza sayfasındaki filtreler, sıradan bir ziyaretçi sitedeyken bir eklentinin arka planda yaptığı her şey.
Bunları bir beyaz listeyle korursanız yönetim alanını kapatmış olmazsınız — listenizde olmayan her ziyaretçi için siteyi bozmuş olursunuz. O sitenin ön yüzünde bu iki dosyaya dokunan hiçbir şey olmadığını bilmiyorsanız anahtarı kapalı bırakın.
Engellenen ziyaretçi ne görür
Varsayılan olarak düz bir 403 sayfası: “Access to this area is restricted from your network address.” (“Bu alana ağ adresinizden erişim kısıtlanmıştır.” — bu mesaj eklenti tarafından üretilir ve her zaman İngilizcedir.) Ne liste ne de site hakkında hiçbir şey açık edilir.
Ziyaretçinin başka bir yere düşmesini tercih ederseniz Engellenenleri şuraya gönder alanını şema dahil tam bir adresle doldurun — https://example.com/ — istek bunun yerine oraya, geçici (302) bir yönlendirmeyle gönderilir. Hedefin aynı alan adında olması gerekmez. Geçerli bir adres olmayan her şey kaydetme sırasında reddedilir. 403 dönmesi için alanı boş bırakın.
Karar yalnızca adrese bakılarak, WordPress sizin kim olduğunuza dair bir fikir edinmeden önce verilir. Yönetici olarak oturum açmış olmanız hiçbir şeyi değiştirmez: adresiniz izinli değilse sayfa reddedilir.
Sitenin gerçekte gördüğü adres
Site, kendi web sunucusunun bildirdiği adrese göre karar verir. Tek istisna, gerçekten bir Cloudflare kenarından ya da aynı makinedeki bir ters vekilden gelen istektir: orada Cloudflare'in ilettiği adres kullanılır, böylece Cloudflare arkasındaki bir site yine gerçek ziyaretçi adreslerini görür. Cloudflare'den gelmemiş bir istekte Cloudflare'denmiş gibi duran bir başlık yok sayılır — aksi hâlde herkes böyle bir başlık uydurarak kara listenin içinden geçebilirdi.
Site, ziyaretçi adreslerini kendine göre bildiren başka bir vekilin ya da CDN'in arkasındaysa WordPress her istekte ziyaretçi yerine o vekili görüyor olabilir. Böyle bir durumda beyaz listenin hiçbir değeri yoktur: ya herkes eşleşir ya da hiç kimse. En güvenilir kontrol, Güvenlik sekmesindeki Son engellenenler listesidir — sitenin gerçekten gördüğü adresleri gösterir.
Engellenen denemeler
Site bir sayaç ve geri çevirdiği son 20 adresi tutar; ikisi de Güvenlik sekmesinde Bugüne kadar engellenen ve Son engellenenler olarak gösterilir. Aynı adres dakikada en fazla bir kez yazılır — bir kaba kuvvet koşumu dakikada yüzlerce istek gönderebilir ve her birini yazmak sitenin veritabanını dövmek olurdu. Yani o sayıyı istek sayısı olarak değil, deneme sayısı olarak okuyun.
Kendinizi dışarıda bırakmamak için
Yanlış bir beyaz liste, sahibini kendi sitesinden dışarı atar. Buna karşı dört şey vardır:
- Boş bir beyaz liste kaydedilemez. Hem panel hem eklenti bunu reddeder, çünkü siz dahil herkesi geri çevirirdi.
- Bağlandığınız adres listede harfi harfine yazılı değilse onay istenir. Eklediğiniz bir aralık o adresi kapsıyor olsa bile soru yine sorulur — panel bunu sizin adınıza hesaplamaya çalışmaz.
- Adres hiç okunamıyorsa istek geçirilir. Bu, web sunucusunun kullanılabilir bir adres bildirmediği durumlarda olur: sunucuda çalışan bir komut ya da sıra dışı bir sunucu yapılandırması. “Bilmiyorum” hiçbir zaman “engellendi”ye dönüşmez.
- Panele ihtiyaç duymayan bir kurtarma anahtarı vardır. Aşağıya bakın.
Bir beyaz liste kaydetmeden önce bilmeye değer iki şey daha:
- Ev bağlantınızın sabit bir adresi olmayabilir. Bireysel hatların çoğu ve bütün mobil ağlar değişen bir adres verir. Sağlayıcınızın kullandığı bloğu biliyorsanız bir aralık ya da CIDR bloğu kullanın; ya da beyaz liste yerine kara listeyi tercih edin.
- Tek tıkla yönetici girişi de aynı kapıdan geçer. Panelinizdeki giriş düğmesi siteyi sizin tarayıcınızda açar; yani önemli olan adres bizimki değil, sizinkidir. Girişin kendisi başarılı olur, ardından açılan yönetim sayfası — yönetim alanı korunuyorsa ve adresiniz listede değilse — reddedilir.
Dışarıda kaldıysanız nasıl geri girersiniz
Bunu geri almak için wp-admin'e ulaşmanız gerekmez. wp-config.php dosyasını FTP, SFTP, SSH ya da barındırma panelinizin dosya yöneticisiyle açın ve dosyanın üst tarafına, “That’s all, stop editing” satırının üstüne şu satırı ekleyin:
define('WPSAFER_FIREWALL_OFF', true);
Filtre uygulanmayı anında bırakır. Hiçbir şey silinmez — kural ve liste olduğu gibi durur; böylece giriş yapıp listeyi panelinizden düzeltebilir, sonra da bu satırı kaldırabilirsiniz.
Kuralı saklamak yerine temizlemeyi tercih ederseniz Güvenlik sekmesini açıp Güvenlik duvarını kaldır düğmesine basın.
Aynı adres kümesini siteler arasında kullanmak: IP havuzları
Birden çok siteye bakıyorsanız aynı ofis ve VPN adreslerini her birine tek tek yazmak hataların çıktığı yerdir. Panel menüsünden IP Havuzları'nı açın ve her kümeyi bir ad ve isteğe bağlı bir notla bir kez kaydedin.
Bir havuz daha sonra Güvenlik sekmesinden bir sitenin listesine eklenebilir ya da havuzun kendi üzerindeki Sitelere uygula ile aynı anda birçok siteye gönderilebilir. Bir havuzu uygularken kuralı (beyaz liste ya da kara liste), adreslerin her sitenin mevcut listesine eklenip eklenmeyeceğini yoksa her sitenin listesini bu havuzla değiştirip değiştirmeyeceğini, hangi alanların korunacağını ve hangi sitelerin dahil olacağını siz seçersiniz.
İki davranış bilerek böyledir:
- Adresler kopyalanır. Havuzla uyguladığınız siteler arasında canlı bir bağ yoktur. Havuzu sonradan düzenlemek o sitelerde hiçbir şeyi değiştirmez — ki mesele tam olarak budur: dikkatsiz tek bir düzenleme bütün bir filoyu aynı anda dışarıda bırakabilmemeli.
- Ayarlar hemen kaydedilir, bir sonraki kuyruk turunda gönderilir. Siz beklerken on siteye on istek göndermek tarayıcınızı bu onun en yavaşına bağlardı. Kuyruk ayrıca cevap vermeyen siteyi yeniden dener.
Birden çok siteye beyaz liste uygulamak her zaman önce onay ister ve bağlandığınız adresi size söyler.
Sitede farklı bir ayar duruyorsa
Doğrunun kaynağı panel değil, sitedir. Güvenlik sekmesini her açtığınızda panel, sitede gerçekte yürürlükte olan ayarı okur; buradaki kayıttan farklıysa iki değeri yan yana gösteren bir uyarı alırsınız. Siteden oku ile istediğiniz zaman yeniden sorabilirsiniz.
Bir farklılık tek başına arıza demek değildir. Site, kural henüz yokken alınmış bir yedekten geri yüklenmiş olabilir, sitede doğrudan bir düzenleme yapılmış olabilir ya da yukarıdaki kurtarma anahtarı yerinde duruyor olabilir. Yeniden kaydetmek, ekranınızdakini siteye gönderir.
WP Safer eklentisini devre dışı bırakmak ya da silmek de filtrelemeyi durdurur: eklenti yoksa uygulayacak bir şey de yoktur. Kural hem panelinizde hem sitenin kendi ayarlarında durmaya devam eder, bu yüzden eklenti yeniden etkinleştiği anda uygulanmaya da yeniden başlar.
Kapatmak ve kaldırmak
Kapalı, listeyi iki tarafta da saklar ve yalnızca uygulamayı durdurur. Güvenlik duvarını kaldır ise kuralı hem burada hem sitede siler ve yönetim alanı yeniden bütün adreslere açılır.
Engel sayacı ve son engellenenler listesi kaldırmadan sonra bilerek yerinde kalır: bunlar kuralın parçası değil, sitenin geçmişidir — güvenlik duvarını ileride yeniden açarsanız hâlâ oradadırlar.
Çoklu site (multisite) ağlarında
Ayar, ağın içindeki tek bir site için değil, ağın tamamı için saklanır. Tek bir alt sitenin satırından ayarlasanız bile o ağdaki her sitenin yönetim alanını yönetir; engel sayacı ve son engellenenler listesi de aynı şekilde ortaktır. Alt siteler farklı kişilere aitse bunu aklınızda tutun.
İlgili
- WP Safer sitenize nasıl ulaşıyor — eklentinin,
/wpsafer-apiucunu koruyan ikinci ve ayrı bir adres listesi daha vardır. O liste bizim sunucumuzun size ulaşmasıyla ilgilidir ve bu sayfadaki hiçbir şeyden etkilenmez. - Güvenlik eklentilerinde WP Safer'a izin verin — sitedeki başka bir şey bizi engellediğinde.
- wp-admin'i tek tıkla açmak — aynı kapıdan geçen giriş düğmesi.