WordPressのインストールをhtaccessで隠す方法は?


9

(私はあいまいさによるセキュリティは推奨されないことを知っています)。

私はワードプレスを使用しているという事実を隠そうとしています。この投稿は役に立ちますが、コンテンツ(の一種)のみを扱います。私は次のことを行うことに興味があります。

  1. ユーザーwp*がブラウザを介して部分文字列として任意のURLにアクセスしようとします。

    結果: 404ページにリダイレクトされます。

  2. ブログのユーザー/管理者は、ログインするためにアクセスする必要があることを知っていますhttp://example.com/blogin/

    結果: Apacheはそれらをにリダイレクトしますhttp://example.com/wp-admin/

  3. ユーザーwp-adminがブラウザから直接アクセスしようとすると、#1に送信されます。

    結果: 404ページにリダイレクトされます。

これまでに行ったこと

  1. WordPressのデフォルトインストールでwp*は、WPインストールの(相対)ルートディレクトリにあるファイルにアクセスできることに気付きました。wp-settings.phpそれは私のセットアップについての情報を提供していたので、特に問題がありました。ユーザーがアクセスすると、PHPエラーが発生し、ディレクトリ構造の一部が明らかになります。php.iniファイルを編集してdisplay_errorsオフにしました。アクセスhttp://example.com/wp-settngs.phpすると、空白のページが表示されます。

  2. それ自体がwp-settings.php存在することが明らかになるため、これ自体は理想的ではありません。実際、さまざまなwp*ファイルすべてにアクセスできます(結果はさまざまです)。次に、htaccessファイルに以下を記述します。

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

    これはうまくいきました!を含むものwp*はすべて私のカスタム404ページにルーティングされました。しかし、今は自分の管理ページにアクセスできません。

  3. この行を上のコードに挿入しようとしました:RewriteRule ^blogin wp-admin [NC,R,L]。それは直後だったはずですRewriteBaseが、これはうまくいきませんでした。

  4. 私はしようとしました:

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

    (ルールの書き換えを介して)私のサイトからのリファラーがwp-adminにアクセスできるが、外部の誰かにはアクセスできないことを願っています。これも機能しませんでした。Apacheは、htaccessからこのディレクティブを使用できないと不平を言いました。

私はApacheのドキュメントを読みました。理論的には概念を理解していますが、実際的な助けが必要です。

編集:私の特定のセットアップではhttpd.confの使用に一貫性がないため、httpd.confの代わりに.htaccessを使用するソリューションを探しています。


すべてのwp *ファイルの名前を別のプレフィックスに変更し、そのようなファイルへのすべての参照を変更してみましたか?これが最も簡単なことだと思います。もちろん、URLを書き換えることもできますが、すべてのリンクがwp *名も使用していないことを確認する必要があります。これは(私の意見では)元の提案とかなり似ています。
LazyOne、2011年

URL書き換えの利点の1つは、要求されたリソースを別のプレフィックスに再マップできることです...すべてのファイルの名前を変更せずにこれを実行できることを願っています(これを通過するポイントです)...
エイブリーチャン

回答:


8

TLDR; .htaccessファイルのディレクティブのみを使用してWordPressを不明瞭にすることはできません。

今、悲惨と恐怖の物語がやって来る。私たちの友人であるfbhは、WordPressを隠すことの難しさについて正しかった。あっ!ここに、この(誤)冒険の詳細があります。あなたがたは警告される!

動機

私は完璧なものが好きな人の一人です。私は「正しい方法」になるように何かを作りすぎることに時間を費やします。デフォルトのWordPressセットアップについて私が気に入らなかったことの1つは、ユーザーがhttp://ex.com/wp-settings.phpと入力すると、このすべてのphp専門用語がすべての場所に出現することでした。私は最終的にPHPを介してエラーをオフにすることができましたが、それにより、サーバーからの配置可能なリソースとして作成されたものだけにしたいという大きな欲求につながりました...そして、他のすべてはカスタム検索ページに404/3化されます。その後、私は根底にあるフレームワーク(つまりWP)を完全に非表示にしたいという考えを得ました...とにかく... WPを非表示にしたい場合は可能です。しかし、それは本当に難しいです。

あなたの運命へのステップ

  1. PHPのini設定を適切に変更します。(つまり、表示エラーをオフにします) .htaccessを使用してルーティングを行っている場合、リソースの原因となっているエラーにアクセスできないため、エラーが表示されないため、これは不要であると考えるかもしれません(私はあなたを見ていますwp-settings.php)。しかし、表示されたページでエラーが発生する可能性があるため、間違いなくそれらをオフにする必要があります。理由だけでWP_*ディレクティブが設定され、必ずしも物事はあなたが彼らがすると思うように動作することを意味するものではありません。WP_DISPLAY_ERRORSはデフォルト設定がfalseであると想定しているため、サーバーで最初にdisplay_errorsをfalseに設定する必要があることがわかりました。

    PHPのini設定の制御は、.htaccessファイルにディレクティブを置くのと同じくらい簡単な場合があります。または、私の場合、CGIハンドラーを作成してphp.iniファイルをそこに配置するのと同じくらい複雑です。YMMVはセットアップに応じて異なります。

  2. wp-接頭辞が付いたファイル/ディレクトリへのアクセスをすべて削除します。WPの展開は、WPではなくコンテンツに関するものであるという考えです(特にWPに焦点を当てている場合を除く)。人々がhttp; // ex.com/wp-cron.phpが何を持っているのかを見たいと思うのは意味がありません... 私はこれを介してこれを達成しました:

     # 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. 単にモルドールを通過する方法を学ぶすべてのアクセスを削除するとwp-*、WPの管理部分へのアクセスを取得できなくなります。それは本当に最悪です。そのダウンに加えて、あなたはあなたがRewriteCond %{ENV:REDIRECT_STATUS} ^$本当に何をしているのか分からないことに気づきました。さて、私がやろうとしたことは、WP管理ページへの「秘密の」バックドアを自分に与えることです。私はこのコードを使用しました:

     # 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からログインページが表示されます。REDIRECT上記のステップにこの行が含まれているのは、このURLがURLに書き換えられるためwp-*、最初の書き換えルールで取得しないようにするためです。内部でリダイレクトされているため、REDIRECT_STATUS正しく設定され、403/4ランドに移動しません。

  4. wp-contentの削除 Wordpress.stackexchangeには、wp-contentの削除に関する素晴らしい記事があります。あなたはいくつかのWP定数を再定義する必要があり、それはほとんどうまくいきます。すべてのアクセスをwp-contentから 'whatever-content` にリダイレクトする必要もあります。これがクリーンな展開である場合、これはおそらく問題にはなりません。既存のデプロイメントを変更する場合は、追加の作業を行う必要があります。

  5. WP-コンテンツへのURLを書き換えオプション RewriteRule (.*)(wp-content)(.*) $1whatever-content$3 [NC,R,L]。これは.htaccessファイルに入ります。ユーザーがwp-contentURL を介して古いコンテンツにアクセスしようとすると、ここにリダイレクトされます。

  6. DB内のwp-contentへのすべての参照をGrepして置き換えますwp-contentデータベースにはまだ残っています。WPを無料にしたい場合は、そのようなものを取り除く必要があります。私はデータベースをエクスポート/ mysqlでダンプし、検索を実行してwp-content文字列を新しい文字列に置き換えました。あなたは言うかもしれません... Apacheが私のURLを書き換えるならなぜ私はこれをしなければならないのですか?問題は、ソースコードにこれらの参照が含まれているため、WordPressを不明瞭にすることに本当に興味がある場合は、これを行う必要があることです。注:この時点では、停止して、これが機能しないという現実を受け入れただけです。しかし、私はT氏に同情して欲しかった。

  7. ソース内wp-includesおよびwp-adminソース内のすべての参照を置き換えます。WordPressの機能の多くは、これらの2つのディレクトリに依存しwp-includesていwp-adminます。つまり、これらのディレクトリ名はソースコードにハードコードされています。これは、これらにアクセスするために新しいディレクトリを作成する必要があることを意味します(PHPはapacheではなく、基盤となるOSファイルシステムを使用するため)。次に、これらの出力を出力されたhtmlに書き込みます。これはあまりにも面倒です。私はすぐにあきらめて、うんちを取るためにトイレに行きました。

レッスン

確かに、私はhttp://codex.wordpress.org/Hardening_WordPressを読んでこれらの手順に従うだけで済みました。しかし、私は完璧なサイトが欲しかった。今、私はそれらすべての時間を取り戻したいだけです。私が止まらなかった最大の理由は、インターネット上でどこも読まなかったことです。これは大変な作業であり、ほとんど不可能でした。代わりに、成功したかどうかを意識せずにそれを行おうとする人々のことを読みました。だから、私がこれをAppleのTime Machine経由で送る私の過去の私にとって、WordPressを曖昧にしないでください。それはそれだけの価値はありません。


まあエイブリー、私も完璧になりたい男の1人です。最初に、私はワードプレスを使用しているという事実を隠すことによって、ワードプレスマルチサイトを作成したいと思いました。私は多くの問題を経験し、ついにマルチサイトのアイデアを落としました。多くのプラグインがマルチサイトをサポートしていないためです。7番目のポイントはwp-includeswp-admin手動でテキストを置き換えてテキストを送信したことを示します。私はあなたがすべてのファイルを閲覧し、手動で置き換えたと確信しています。それはあなたがいくつかの便利な便利なソフトウェアを見逃したからです。たとえば、その仕事を簡単にするgrepwin試すことができます
Giri

4

クラッカーのためにワードプレスを使用していることを隠そうとしているのなら、本当にやらなければならないことがいくつかあります。wp *トリックを行う場合、wp-contentおよびwp-includesはどうでしょうか?それらに到達することができなければ、ページを壊し、それは恐ろしく見えます。

また、Wordpressには非常に多くの機能があり、これには実際にいくらかの作業が必要です。アップグレードがインストールされている場合、多くの場合、多くの作業を再度行う必要があります。(Apacheのいくつかのリダイレクトではうまくいきません)

夫婦それぞれからそれを隠そうとしているだけなら、もちろん、それを曖昧にしてある程度できるはずです。

「Wordpressの強化」ガイドを読みましたか?そうでない場合は、チェックアウトする必要があります。http//codex.wordpress.org/Hardening_WordPress これは、実行できる多くのことを紹介しています。

また、Wordpressを使用しているという事実を隠そうと熱望しているのであれば、なぜそれを使用するのでしょうか。


1. 日時:WP-コンテンツは、/ WP-含ま 記事で参照リンク、私は2を持っている硬化WordPressのガイドをお読みください。3.最後の質問は、投稿したリンクを閲覧することで簡単に回答できます。私は失礼なことをするつもりはありませんが、この質問は私の質問の技術的なメリットとはほとんど関係がありません。多くの人がさまざまなツールを使用していますが、宣伝したくありません。一部の人にとっては、それはビジネス上の決定です。
エイブリーチャン

0

Apache構成で構成してみてください。これはのようなファイルのインクルードにすることができます/etc/wordpress/htaccess。これにより、Directory設定ディレクティブを使用できるようになります。ただし、変更をロードするには、Apacheを再起動する必要があります。サービスを中断したくない場合は、グレースフルリスタートを使用してください。

.htaccessファイルによるディレクトリアクセスを制限するには、適切なディレクトリにある必要があります。これらは、Directory構成ディレクティブの内容とよく似ています。.htaccessApache構成で必要なオプションを有効にする必要がある場合があります。この方法は、頻繁に再解析する必要があるため、Apache構成でコマンドを使用するほど効率的ではありません。


上書きされる可能性があるため、httpd.confファイルを編集する必要がないソリューションを探しています(仮想プライベートホスト上にいます)。質問は適切に編集します。
Avery Chan

@Avry:<Directory>構成に配置するディレクティブを.htaccess、一致するディレクトリのファイルに配置する必要があります。注:Apacheは、可能であれば構成を使用することをお勧めします。バージョン管理を使用して、上書きから保護します。
BillThor '19年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.