Wordpress kurulumumu htaccess ile nasıl gizleyebilirim?


9

(Belirsizlik yoluyla güvenliğin önerilmediğinin farkındayım).

Wordpress kullandığım gerçeğini saklamaya çalışıyorum. Bu yayın yardımcı olur, ancak yalnızca içeriği (bir çeşit) ele alır. Aşağıdakilerin gerçekleşmesi ile ilgileniyorum:

  1. Kullanıcı wp*, tarayıcı aracılığıyla herhangi bir URL'ye alt dize olarak erişmeye çalışır .

    Sonuç: 404 sayfasına yönlendirildi.

  2. Blog kullanıcısı / yöneticisi giriş yapmak için gitmeleri gerektiğini bilir http://example.com/blogin/.

    Sonuç: apache bunları adresine yönlendirirhttp://example.com/wp-admin/.

  3. Bir kullanıcı wp-admintarayıcısından doğrudan erişmeye çalışırsa # 1 adresine gönderilir.

    Sonuç: 404 sayfasına yönlendirildi.

Şimdiye kadar yaptığım şeyler

  1. WordPress'in varsayılan yüklemesi için wp*, WP yüklemesinin (göreli) kök dizinindeki dosyalardan herhangi birine erişebileceğimi fark ettim . Özellikle wp-settings.phpsorunluydu çünkü kurulumum hakkında bilgi verdi. Bir kullanıcı ona erişirse, bazı PHP hataları söyler ve dizin yapısının bir kısmını ortaya çıkarır. Kapatmak display_errorsiçin php.ini dosyamı düzenledim . Şimdi erişmek http://example.com/wp-settngs.phpboş bir sayfa açıyor.

  2. Bu kendi içinde ideal değildir çünkü var olduğunu ortaya koyar wp-settings.php. Aslında, tüm farklı wp*dosyalara erişmek mümkündür (farklı sonuçlarla). Sonra htaccess dosyama aşağıdaki koymak:

          RewriteEngine On
          RewriteBase /
          RewriteCond %{PATH_INFO} wp* [NC]
          RewriteRule .* - [F]
    

    Bu harika çalıştı! A ile ilgili her şey wp*özel 404 sayfama yönlendirildi. Ancak şimdi yönetici sayfama erişemiyorum.

  3. Yukarıdaki koda bu satırı eklemek çalıştı: RewriteRule ^blogin wp-admin [NC,R,L]. Hemen sonra olması gerekiyordu RewriteBaseama bu işe yaramadı.

  4. Ben yapmaya çalıştım:

    <Directory /home/example/wp*> 
     Order Allow, Deny 
     Allow from example.com 
     Deny from all 
    </Directory> 
    

    sitemden bir yönlendirenin (kuralın yeniden yazılması yoluyla) wp-admin'e erişebileceğini umuyor, ancak dışarıdan birine erişemiyordu. Bu da işe yaramadı. apache bu yönergeyi htaccess'ten kullanamayacağınızdan şikayet etti.

Apache belgelerini okudum; Kavramları teorik olarak anlıyorum, ama pratik yardıma ihtiyacım var.

EDIT: benim özel kurulum httpd.conf kullanarak tutarsız yapar httpd.conf yerine .htaccess kullanan bir çözüm arıyorum.


Tüm wp * dosyalarını farklı bir önek olarak yeniden adlandırmayı ve bu dosyalara yapılan tüm başvuruları değiştirmeyi denediniz mi? Bunun en kolay şey olacağını düşünüyorum. Tabii ki, URL yeniden yazma ile gidebilirsiniz, ancak daha sonra tüm bağlantıların wp * adlarını da kullanmadığından emin olmanız gerekir, bu da (benim görüşüme göre) orijinal öneriye oldukça benzer.
LazyOne

URL yeniden yazmanın yararlarından biri, istenen kaynakların başka bir önekle yeniden eşleştirilebileceğini düşünüyorum ... Tüm dosyaları yeniden adlandırmadan bunu yapabilmeyi umuyorum (ki bu işlemden geçiyor) ...
Avery Chan

Yanıtlar:


8

TLDR; WordPress'i yalnızca .htaccess dosyanızdaki yönergeleri kullanarak gizlemek mümkün değildir.

Şimdi bir keder ve dehşet masalı. Arkadaşımız, fbh WordPress'i saklamanın zorluğu konusunda haklıydı, sarı karınlı korkaklar için değil. ARR! İşte bu (mis) maceranın detayları. Dikkatli olun!

Motivasyon

Ben mükemmel şeyleri seven o adamlardan biriyim. Ben edecek geçirmek 'doğru yolu' olması aşırı mühendislik şey atık zaman. Varsayılan WordPress kurulumu hakkında sevmediğim şeylerden biri, bir kullanıcının http://ex.com/wp-settings.php yazabilmesi ve daha sonra tüm bu php jargonunun her yere yayılmasıydı. Sonunda PHP ile hataları kapatabiliyordum ama bu sadece sunucudan locatable kaynaklar beri yapılan şeyler var daha büyük bir istek yol açtı ... ve her şey özel arama sayfamıza 404 / 3'ified olurdu. Bundan sonra, altta yatan çerçeveyi (yani WP) tamamen gizlemek istediğim fikrini aldım ... her neyse ... WP'yi gizlemek istiyorsanız bu mümkün. Ama bu gerçekten zor.

Kıyametinize Adımlar

  1. PHP ini ayarlarınızı uygun şekilde değiştirin. (örn. ekran hatalarını kapat) Bunun gereksiz olduğunu düşünebilirsiniz, çünkü bir şeyleri yeniden yönlendirmek için .htaccess kullanırsak, insanlar hataları görmezler çünkü kaynaklara neden olan hatalara erişemezler (size bakıyorum wp-settings.php). Ancak görüntülenen sayfalarda hatalar meydana gelebilir, bu yüzden kesinlikle onları devre dışı bırakmak istersiniz. Çünkü WP_*direktifleri mutlaka şeyler yapacaklar düşünüyorum şekilde çalışacaktır anlamına gelmez kümesidir. WP_DISPLAY_ERRORS varsayılan ayarın yanlış olduğunu varsaydığı için sunucumda display_errors değerini yanlış FIRST olarak ayarlamam gerektiğini buldum.

    PHP ini ayarlarını kontrol etmek, .htaccess dosyanıza bir yönerge koymak kadar basit bir şey olabilir. Ya da, benim durumumda, bir CGI işleyicisi oluşturmak ve sonra bir php.ini dosyası koymak gibi karmaşık. Kurulumunuza bağlı olarak YMMV.

  2. wp-Önek ile dosyalara / dizinlere tüm erişimi kaldırın . Fikir, WP dağıtımınızın WP ile değil, içeriğinizle ilgili olmasıdır (özellikle WP'ye odaklanmadığı sürece). İnsanların, iyi olmayana kadar http; // ex.com/wp-cron.php'nin sahip olduklarını görmek istemeleri mantıklı değildir. Bunu şu şekilde başardım:

     # If the resource requested is a `wp-*` file or directory, poop to a 403. 
     RewriteCond %{REQUEST_FILENAME} wp-.*$ [NC] 
     RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
     RewriteCond %{REQUEST_FILENAME} -f [NC,OR] 
     RewriteCond %{REQUEST_FILENAME} -d [NC] 
     RewriteRule .* - [F,L] 
    
  3. Sadece mordordan nasıl geçeceğinizi öğrenin Tüm erişiminizi kaldırarak WP'ninwp-* idari bölümüne artık erişemezsiniz. Gerçekten berbat. Bu düşüşe ek olarak, RewriteCond %{ENV:REDIRECT_STATUS} ^$gerçekten ne yaptığını bilmediğinizi fark ettiniz . Yapmaya çalıştığım şey, WP yönetici sayfasına kendime 'gizli' bir arka kapı vermek. Bu kodu kullandım:

     # If the resource requested is 'mordor' (with or without an ending
     # slash) do a URL rewrite to `wp-login.php`. 
     RewriteCond %{REQUEST_URI} mordor/?$ [NC]
     RewriteRule mordor/?$ /wp-login.php [NC,L]
    

    URL: http://ex.com/mordor bizi giriş sayfasına götürmelidir. REDIRECTYukarıdaki adımda bu satıra sahip olmamızın nedeni , bu URL bir wp-*URL'ye yeniden yazıldığı için , ilk yeniden yazma kuralının onu almasını istemiyoruz. Dahili olarak yönlendirildiğinden, REDIRECT_STATUSdoğru bir şekilde ayarlanacak ve bizi 403/4 toprağa itmeyecek.

  4. Wp içeriğini kaldırma Wordpress.stackexchange wp içeriğini kaldırma konusunda harika bir makaleye sahiptir. Bazı WP sabitlerini yeniden tanımlamanız gerekir ve bu hemen hemen işe yarar. Ayrıca, tüm erişimleri wp-content'ne olursa olsun' içeriğine yönlendirmelisiniz. Temiz bir dağıtım ise, bu muhtemelen bir sorun olmayacaktır. Önceden var olan bir dağıtımı değiştiriyorsanız, fazladan bazı şeyler yapmanız gerekir.

  5. URL'leri isteğe bağlı olarak wp içeriğine yeniden yazınRewriteRule (.*)(wp-content)(.*) $1whatever-content$3 [NC,R,L] . Bu .htaccess dosyanıza gider. Kullanıcınız eski içeriğe bir wp-contentURL yoluyla erişmeye çalışırsa , buraya yeniden yönlendirilir.

  6. İsteğe bağlı olarak DB'nizdeki wp içeriğine ilişkin tüm başvuruları yanıtlayın ve değiştirin . wp-contentVeritabanınızda hala var . WP ücretsiz istiyorsanız o şeylerden kurtulmanız gerekir. Ben ihraç / mysql benim veritabanı dökümü, bir arama yaptım ve wp-contentyeni dize dize değiştirin. Şunu söyleyebilirsiniz ... apache URL'lerimi yeniden yazacaksa bunu neden yapmam gerekiyor? Sorun, kaynak kodunun bu referansları içermesidir, bu nedenle WordPress'i gizlemekle ilgileniyorsanız, bunu yapmanız gerekir. Not: Bu noktada, bunun işe yaramayacağı gerçeğini durdurup kabul etmeliydim. Ama Bay T'nin bana acımasını istedim.

  7. Tüm başvuruları değiştirin wp-includesve wp-adminkaynağında. WordPress işlevlerinin çoğu şu iki dizine bağlıdır: wp-includesve wp-admin. Bu, bu dizin adlarının kaynak kodunda sabit olarak kodlandığı anlamına gelir. Bu, bunlara erişmek için yeni dizinler (PHP, apache değil temel OS dosya sistemini kullandığından) oluşturmanız ve daha sonra yayınlanan html'ye YAZMASI gerektiği anlamına gelir. Bu çok fazla sorun. Hızla vazgeçtim ve kaka almak için tuvalete gittim.

ders

Elbette, http://codex.wordpress.org/Hardening_WordPress okudum ve bu adımları uygulayabilirdim. Ama mükemmel bir yer istedim. Şimdi sadece tüm bu saatleri geri istiyorum. Beni durdurmamı engelleyen en büyük şey, internette hiçbir yerde bu kadar çok iş olduğunu ve neredeyse imkansız olduğunu okumamdı. Bunun yerine, başarılı olup olmadıklarını anlamadan bunu yapmaya çalışan insanları okudum. Yani, bunu Apple'ın Time Machine aracılığıyla göndereceğim geçmiş kendime, lütfen WordPress'i denemeyin ve gizlemeyin. Buna değmez.


İyi Avery, ben de mükemmel olmak isteyen biriyim .. Önce wordpress kullanıyorum gerçeğini gizleyerek bir wordpress multisite oluşturmak istedim. Çok fazla sorun yaşadım ve sonunda çoklu site fikrini bıraktım. Çünkü birçok eklenti çoklu siteyi desteklemez. 7. noktanız değiştirdiğinizi wp-includesve wp-adminel ile metin yazdığınızı gösterir. Her dosyaya göz attığınızdan ve manuel olarak değiştirdiğinizden eminim. Bu bazı kullanışlı kullanışlı yazılımları kaçırdığınız için. Örneğin , bu işi kolaylaştıran grepwin'i denemiş olabilirsiniz
Giri

4

Kraker yüzünden wordpress kullandığınızı saklamaya çalışıyorsanız, gerçekten yapmanız gereken bir iş var. Eğer wp * hile yaparsanız, wp-içerik ve wp-içerir? Bunlara ulaşmadan, sayfayı kıracak ve korkunç görünecek.

Ayrıca, Wordpress'te çok fazla şey var, bu gerçekten biraz iş gerektiriyor - ve bir yükseltme yüklendiğinde büyük olasılıkla bir çok şey yapmanız gerekecek. (Apache'deki birkaç yönlendirmenin hile yapmayacağı için)

Sadece Bay ve Bayan herkesten gizlemeye çalışıyorsanız, elbette bunu bir şekilde belirsiz bir şekilde yapabilmelisiniz.

"Sertleştirme Wordpress" kılavuzunu okudunuz mu? Değilse, kontrol etmelisiniz: http://codex.wordpress.org/Hardening_WordPress Yapabileceğiniz birçok şey için harika bir giriş sağlar.

Ayrıca, Wordpress'i kullandığınızı gizlemek için bu kadar istekli iseniz, neden kullanıyorsunuz?


1. Re: wp-content / wp-includes post bakın bağlantısını ben 2. var sertleştirme WordPress kılavuzunu okuyun. 3. Son sorunuz, gönderdiğim bağlantıya bakarak kolayca cevaplanabilir. Kaba olmaya çalışmıyorum, ama bu sorunun kendi sorumun teknik değerleriyle ilgisi yok. Birçok insan farklı araçlar kullanır ancak reklamını yapmak istemez. Bazıları için bu bir iş kararıdır.
Avery Chan

0

Apache yapılandırmasında yapılandırmanızı yapmayı deneyin. Bu dosya gibi bir dosya olabilir /etc/wordpress/htaccess. Bu, Directoryyapılandırma yönergesini kullanmanızı sağlar. Ancak değişiklikleri yüklemek için apache'yi yeniden başlatmanız gerekir. Hizmet kesintileri istemiyorsanız, zarif yeniden başlatmayı kullanın.

.htaccessDosyalarla dizin erişimlerini kısıtlamak için uygun dizinlerde olmaları gerekir. Bir Directoryyapılandırma yönergesinin içeriğine benzer şekilde çalışırlar . .htaccessApache yapılandırmanızda gerekli seçenekleri etkinleştirmeniz gerekebilir . Bu yöntem, apache yapılandırmasında komutun sık sık onarılması gerektiği kadar verimli değildir.


Httpd.conf dosyamı düzenlemeyi gerektirmeyen bir çözüm arıyorum, çünkü bu yazı yazabiliyor (sanal bir özel ana bilgisayardayım). Soruyu uygun şekilde düzenleyeceğim.
Avery Chan

@Avry: <Directory> yapılandırmasına koyacağınız yönergeleri .htaccesseşleşen dizindeki bir dosyaya yerleştirmeniz gerekir. Not: Apache mümkünse yapılandırmayı kullanmanızı önerir. Üzerine yazmalara karşı korumak için sürüm kontrolünü kullanın.
BillThor
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.