web-dev-qa-db-ja.com

Wp-adminフォルダの保護 - 目的重要性?

WordPressサイトを保護する方法を理解しようとしています。私が理解していない1つのセキュリティタスクは... "wp-adminフォルダ"を保護することがどれほど重要ですか? たとえば、ログイン試行回数を制限することが非常に重要であると考えます。

Wp-adminフォルダを保護する目的は何ですか?ハッカーがあなたのWordPressダッシュボードに侵入するのを防ぐためですか? しかし、あなたがwp-login.phpを保護しているとしたら、ハッカーはどうやってダッシュボードに侵入するのでしょうか?

<Files wp-login.php>
order deny,allow
deny from all
allow from xxx.xxx.x.x
</Files>

"コードA"を使用する場合は、フロントエンドAJAX機能とホワイトリストinstall.cssをホワイトリストに追加する必要がありますか。

"コードA" - wp-adminフォルダへのアクセスを制限する

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "WordPress Admin Access Control"
AuthType Basic
<LIMIT GET>
order deny,allow
deny from all
allow from xx.xx.xx.xxx
</LIMIT>


.
「コードA」と「コードB」の違いは何ですか。どちらか一方、または両方を同時に使用しますか?
.

「コードB」 - wp-adminディレクトリの保護

1   # enable basic authentication
2   AuthType Basic
3   # this text is displayed in the login dialog
4   AuthName “Restricted Area”
5   # The absolute path of the Apache htpasswd file. You should edit this
6   AuthUserFile /path/to/.htpasswd
7   # Allows any user in the .htpasswd file to access the directory
8   require valid-user




Allow front end Ajax functionality


Some WordPress plugins use Ajax functionality in WordPress.  
This means that such plugins might need access to the file admin-ajax.php  
To allow anonymous access to such file for the WordPress plugins to function,  
add the below to .htaccess  

1   <Files admin-ajax.php>
2       Order allow,deny
3       Allow from all
4       Satisfy any
5   </Files>



Update: /wp-admin/css/install.css is also sometimes needed on the frontend,  
you should whitelist that as well. Here's the necessary configuration 
to whitelist a file in a password protected location in lighttpd:


$HTTP["url"] =~ "^\/wp-admin\/.*" {
    $HTTP["url"] !~ "^\/wp-admin\/(admin-ajax\.php|css\/.*)" {
        auth.require = (
            "" => (
                "method" => "basic",
                "realm" => "Password protected area",
                "require" => "user=theuser",
            ),
        ),
    },
},
4
leko

しかし、もしあなたがwp-login.phpを保護しているとしたら、ハッカーはどうやってダッシュボードに侵入するのでしょうか?

攻撃者が有効な認証Cookieをハイジャックまたは偽造しようとする可能性があります。最近、そのようなクッキーを偽造するのを簡単にする脆弱性がある可能性があります。CVE-2014-0166バージョン3.7.3/3.8.3で修正されました

「コードA」と「コードB」の違いは何ですか。どちらか一方、または両方を同時に使用しますか?

wp-admin/admin-ajax.phpをホワイトリストに登録した場合("Code B"のように)、このスクリプトは攻撃者がCookieの偽造を検証するための接点として、また成功した場合、保護されていない各ajaxアクションのデータを操作するためのエントリポイントとして機能する可能性があります。追加の一回だけで。しかし、理論的には、これらでさえ推測できます。

ただし、AJAX機能を一般に公開する必要がなく、すべてのアカウントのすべてのIPをホワイトリストに登録する可能性がある場合は、wp-admin/ディレクトリを保護することで上記のような攻撃方法を減らすことができます。

しかし、これらの方法では、ホワイトリストチェックに合格するため、中間者攻撃や感染したクライアントコンピュータによる攻撃からサイトを保護することはできません。

最後に、最初の質問に対する個人的な分類を説明しましょう。

「wp-adminフォルダ」を保護することはどれほど重要ですか?

私の意見では、安全なパスワード(おそらく二要素認証)、安全な秘密鍵(wp-config.phpの塩)、そして可能であれば、あなたが最初のリクエスト(request https://…/wp-login.php)から管理するときは常にhttps接続を使うことがより重要です。 。また、すべてのコンポーネントを最新の状態に保ち、未使用のコンポーネント(プラグイン/テーマ)をサーバーから削除します。その後も、wp-adminディレクトリを保護することを検討できます。

4
David