• 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

「ブルートフォース攻撃」の版間の差分

提供: WordPress Codex 日本語版
移動先: 案内検索
(136811 版から新規作成。見出しのみ翻訳。)
 
(「Brute_Force_Attacks」と「ブルートフォース攻撃」が重複となっていたため、こちら(ブルートフォース攻撃)に集約する。そのために、すでに日本語訳が)
1行目: 1行目:
{{NeedTrans}}
+
{{CheckTrans}}
  
Unlike hacks that focus on vulnerabilities in software, a Brute Force Attack aims at being the simplest kind of method to gain access to a site: it tries usernames and passwords, over and over again, until it gets in. Often deemed 'inelegant', they can be very successful when people use passwords like '123456' and usernames like 'admin.'
+
ソフトウェアの脆弱性に着目する攻撃とは異なり、ブルートフォース攻撃(Brute Force Attack) は、非常に単純な方法でアクセス権を取得しようとします。ユーザー名とパスワードを入力し、ログイン成功するまで繰り返します。 美しくないですが、ユーザー名 admin パスワード 123456 のようなものを採用している場合、攻撃が成功しやすいです。
  
They are, in short, an attack on the weakest link in any website's security: You.
+
手短に言うと、ウェブサイトのセキュリティで一番脆い場所、つまり、あなた、を狙っているのです。
  
Due to the nature of these attacks, you may find your server's memory goes through the roof, causing performance problems. This is because the number of http requests (that is the number of times someone visits your site) is so high that servers run out of memory.
+
攻撃の性質上、サーバーのメモリ上限に達してパフォーマンス低下を引き起こすかもしれません。http リクエストの数 (あなたのサイトを訪問する回数) が非常に多いため、サーバーがメモリ不足になるからです。
  
This sort of attack is not endemic to WordPress, it happens with every webapp out there, but WordPress is popular and thus a frequent target.
+
この攻撃は、WordPress 特有のものではありません。すべてのウェブアプリケーションに起こりえます。しかし WordPress は良く利用されているため、攻撃の標的となりやすいです。
  
==自分の身を守る==
+
==自分を守る==
  
A common attack point on WordPress is to hammer the wp-login.php file over and over until they get in or the server dies. You can do some things to protect yourself.
+
WordPress へのよくある攻撃の場合、wp-login.php ファイルに繰り返しアクセスし、ログインできるかサーバーがダウンするかするまで継続します。自分を守るために、いくつかの方法があります。
  
===ユーザー名「admin」を避ける===
+
===ユーザー名 admin を使用しない===
  
The majority of attacks assume people are using the username 'admin' due to the fact that early versions of WordPress defaulted to this. If you are still using this username, make a new account, transfer all the posts to that account, and change 'admin' to a subscriber (or delete it entirely).
+
WordPress のデフォルトのユーザー名が admin のため、admin を使用していると仮定した攻撃が多いです。 ユーザー名 admin を使用している場合は、新しいアカウントを作成し、全ての投稿を新しいアカウントに移譲し、admin を購読者に変更してください (あるいは削除してください)
  
You can use the plugin [http://wordpress.org/extend/plugins/admin-renamer-extended/ Admin Renamed Extended] to change the username in-place.
+
プラグイン [http://wordpress.org/extend/plugins/admin-renamer-extended/ Admin Renamed Extended] を使用してユーザー名を変更できます。
  
===良いパスワードの選び方===
+
===良いパスワードを使用する===
  
The goal with your password is to make it hard for other people to guess and hard for a brute force attack to succeed. Many [http://www.google.com/?q=password+generator automatic password generators] are available that can be used to create secure passwords.
+
パスワードの目的は、他者が推測しずらく、ブルートフォース攻撃が成功しにくいものにすることです。安全なパスワードを作成することができる、多くの[http://www.google.com/?q=password+generator automatic パスワード生成ツール(google 検索)]があります。
  
WordPress also features a password strength meter which is shown when changing your password in WordPress. Use this when changing your password to ensure its strength is adequate.
+
WordPress にはパスワード強度を示すメーターがあり、パスワードを変更するときに表示されます。パスワードを変更するときは、十分な強度であることを確かめておきましょう。
  
You can use the [http://wordpress.org/extend/plugins/enforce-strong-password/ Enforce Strong Password] plugin to force users to set strong passwords.
+
プラグイン [http://wordpress.org/extend/plugins/enforce-strong-password/ Enforce Strong Password] を使用して、強固なパスワードを強制することができます。
  
Things to avoid when choosing a password:
+
パスワード生成時に避けたほうが良い事:
  
* Any permutation of your own real name, username, company name, or name of your website.
+
* 本名、ユーザー名、会社名、ウェブサイトの名前やそれらの組み合わせ。
* A word from a dictionary, in any language.
+
* どんな言語であれ、辞書にある単語。
* A short password.
+
* 短いパスワード。
* Any numeric-only or alphabetic-only password (a mixture of both is best).
+
* 数字のみ、またはアルファベットのみのパスワード (両方を混ぜるのが良い)
  
A strong password is necessary not just to protect your blog content. A hacker who gains access to your administrator account is able to install malicious scripts that can potentially compromise your entire server.
+
強固なパスワードは、ブログ投稿を守るのに必要ですが、それだけではありません。管理者アカウントのアクセスを取得した攻撃者が、悪意あるスクリプトをインストールし、サーバー全体が危うくなることがあります。
  
 
=== プラグイン ===
 
=== プラグイン ===
  
Plugins can be used to limit the number of login attempts made on your site, or block people from accessing wp-admin:
+
プラグインを用いて、ログイン試行回数を制限したり、wp-admin へのアクセスを禁止したりできます。
  
* [http://wordpress.org/extend/plugins/bruteprotect/ BruteProtect]
 
 
* [http://wordpress.org/extend/plugins/limit-login-attempts/ Limit Login Attempts]
 
* [http://wordpress.org/extend/plugins/limit-login-attempts/ Limit Login Attempts]
 
* [http://wordpress.org/extend/plugins/lockdown-wp-admin/ Lockdown WP Admin]
 
* [http://wordpress.org/extend/plugins/lockdown-wp-admin/ Lockdown WP Admin]
49行目: 48行目:
 
* [http://wordpress.org/extend/plugins/threewp-activity-monitor/ 3WP Activity Monitor]
 
* [http://wordpress.org/extend/plugins/threewp-activity-monitor/ 3WP Activity Monitor]
 
* [http://wordpress.org/plugins/all-in-one-wp-security-and-firewall/ All in one WP Security]
 
* [http://wordpress.org/plugins/all-in-one-wp-security-and-firewall/ All in one WP Security]
* [http://wordpress.org/plugins/rename-wp-login/ Rename wp-login.php]
 
  
== サーバーを保護する ==
+
== サーバーを守る ==
  
If you decide to lock down wp-login.php or wp-admin, you may find you get a 404 or 401 error when accessing those pages. To avoid that, you will need to add the following to your .htaccess file.
+
wp-login.php あるいは wp-admin をロックする事を決めた場合、これらのページへアクセスすると、404 または 401 エラーに遭遇するでしょう。これを避けるには、.htaccess ファイルに下記のように記述します。
  
 
<pre>
 
<pre>
59行目: 57行目:
 
</pre>
 
</pre>
  
You can have the 401 point to 401.html, but the point is to aim it at <em>not</em> WordPress.
+
401 エラーを 401.html に向けることもできます。ここで重要なのは、WordPress で<em>ない</em>、ということです。
  
 
For Nginx you can use the error_page directive but must supply an absolute url.
 
For Nginx you can use the error_page directive but must supply an absolute url.
<pre>
 
error_page  401  http://example.com/forbidden.html;
 
</pre>
 
  
===wp-login.php をパスワード保護する ===
+
error_page  401  http://example.com/forbidden.html;
 +
 
 +
 
 +
=== wp-login.php をパスワード保護する ===
  
Password protecting your wp-login.php file (and wp-admin folder) can add an extra layer to your server. Because password protecting wp-admin can break any plugin that uses ajax on the front end, it's usually sufficient to just protect wp-login.
+
wp-login.php ファイル (wp-admin フォルダ)をパスワード保護することにより、防御壁を増やすことができます。wp-admin をパスワード保護すると、フロントエンドで ajax を使用するプラグインを破壊するため、wp-login を保護するだけで通常は良いでしょう。
  
To do this, you will need to create a .htpasswds file. Many hosts have tools to do this for you, but if you have to do it manually, you can use this [http://www.htaccesstools.com/htpasswd-generator/ htpasswd generator]. Much like your .htaccess file (which is a file that is only an extension), .htpasswd will also have no prefix.
+
パスワード保護するには、.htpasswd ファイルを作成する必要があります。多くのホスティングでは生成ツールを提供してますが、もし手作業で作成する必要がある場合は、[http://www.htaccesstools.com/htpasswd-generator/ htpasswd generator] を使用することができます。.htaccess ファイル (拡張子のみを持つファイル) と同様、.htpasswd も拡張子のみです。
  
You can either put this file outside of your public web folder (i.e. not in /public_html/ or /domain.com/, depending on your host), or you <em>can</em> put it in the same folder, but you'll want to do some extra security work in your .htaccess file if you do.
+
このファイルをウェブ公開領域(public_html domain.com 等。ホスティングにより異なる)の外に置くことができます。同じフォルだに置くことも<em>できます</em>が、こうする場合は .htaccess ファイルに追加でセキュリティ対策を施す必要があります。
  
Speaking of, once you've uploaded the .htpasswd file, you need to tell .htaccess where it's at. Assuming you've put .htpasswd in your user's home directory and your htpasswd username is mysecretuser, then you put this in your .htaccess:
+
.htpasswd ファイルをアップロードしたら、どこにあるかを .htaccess に伝える必要があります。.htpasswd をホームディレクトリに置き、htpasswd ユーザー名が mysecretuser の場合、.htaccess に下記のように記述します。
  
 
<pre>
 
<pre>
89行目: 87行目:
 
</pre>
 
</pre>
  
The actual location of AuthUserFile depends on your server, and the 'require user' will change based on what username you pick.
+
AuthUserFile の実際の位置はサーバーに依存します。また 'require user' にはユーザー名を指定してください。
  
 
If you are using Nginx you can password protect your wp-login.php file using the [http://wiki.nginx.org/HttpAuthBasicModule HttpAuthBasicModule].  This block should be inside your server block.
 
If you are using Nginx you can password protect your wp-login.php file using the [http://wiki.nginx.org/HttpAuthBasicModule HttpAuthBasicModule].  This block should be inside your server block.
108行目: 106行目:
 
Passwords must be encoded by function crypt(3). You can use an online [http://www.htaccesstools.com/htpasswd-generator/ htpasswd generator] to encrypt your password.
 
Passwords must be encoded by function crypt(3). You can use an online [http://www.htaccesstools.com/htpasswd-generator/ htpasswd generator] to encrypt your password.
  
===wp-admin へのアクセスを IP 制限する===
+
===wp-admin へのアクセスを IP アドレスで制限する===
  
If you are the only person who needs to login to your Admin area and you have a fixed IP address, you can deny wp-admin access to everyone but yourself via an .htaccess file.
+
自分だけが管理画面にログインする必要がある場合で、自分の IP アドレスが分かっている場合、.htaccess ファイルを用いて自分以外の wp-admin へのアクセスを拒否することができます。
  
Create a file in a plain text editior called .htaccess and add:
+
.htaccess をテキストエディタで開き、下記を追加する:
  
 
<pre># Block access to wp-admin.
 
<pre># Block access to wp-admin.
119行目: 117行目:
 
deny from all</pre>
 
deny from all</pre>
  
replacing x.x.x.x with your IP address. Your Internet Provider can help you to establish your IP address. Or you can use an online service such as [http://www.whatismyip.com/ What Is My IP].
+
x.x.x.x は自分の IP アドレスに置き換えてください。インターネットサービスプロバイダに問い合わせると、自分の IP アドレスが分かるでしょう。あるいは [http://www.whatismyip.com/ What Is My IP] のようなオンラインサービスを使用することもできます。
  
 
For Nginx you can add a location block inside your server block that works the same as the Apache example above.
 
For Nginx you can add a location block inside your server block that works the same as the Apache example above.
131行目: 129行目:
 
}
 
}
 
</pre>
 
</pre>
Note that the order of the deny/allow is of the utmost importance.  You might be tempted to think that you can switch the access directives order and everything will work. In fact it doesn't. Switching the order in the above example has the result of denying access to all addresses.
 
  
If your theme or plugins use AJAX, you will most likely need to add an additional group of settings to your .htaccess so that functionality continues to work:
+
deny/allow の順序が重要である事に注意してください。アクセス指定順を変えても上手くいく、と思うかもしれません。実際はそうではありません。上記の例の順序を変えると、全てのアドレスからのアクセスを拒否します。
 +
 
 +
テーマやプラグインが AJAX を使用している場合、.htaccess に追加の設定を記述して、それらがうまく動作するようにする必要があります。
  
 
<pre># Allow acces to wp-admin/admin-ajax.php
 
<pre># Allow acces to wp-admin/admin-ajax.php
142行目: 141行目:
 
</Files></pre>
 
</Files></pre>
  
Save the file and upload it to your wp-admin folder.
+
このファイルを保存し、wp-admin フォルダにアップロードしてください。
  
 
Again for Nginx if you are restricting access to wp-admin and use ajax you will need to add another location block to your server block.
 
Again for Nginx if you are restricting access to wp-admin and use ajax you will need to add another location block to your server block.
151行目: 150行目:
 
</pre>
 
</pre>
  
You can add more than one allowed IP address using:
+
許可する IP アドレスを複数指定することができます。
  
 
<pre># Block access to wp-admin.
 
<pre># Block access to wp-admin.
160行目: 159行目:
 
deny from all</pre>
 
deny from all</pre>
  
This may be useful if you use more than one internet provider to adminster your site (e.g. you also access your site's admin area via your mobile provider) or if you have a very small pool of people that are allowed access to your site's admin area.
+
複数のインターネットサービスプロバイダを使用する場合 (モバイル環境から管理画面にアクセスする場合、等)や、何人かが管理画面にアクセスできるようにする場合に役立ちます。
  
If you need to allow access to a large block of IP addresses, try using something like:
+
IP アドレスブロックを許可する場合は、下記のように記述します。
  
 
<pre># Block access to wp-admin.
 
<pre># Block access to wp-admin.
169行目: 168行目:
 
deny from all</pre>
 
deny from all</pre>
  
For example, using 192.168.1.* would allow access to all IP addresses in the 192.168.1 range.
+
例えば、192.168.1.* を設定すると、IP アドレス範囲 192.168.1 を許可します。
  
===リファラがないリクエストへのアクセスを拒否する===
+
===リファラーの無いアクセスを拒否する===
  
Extended from [[Combating_Comment_Spam/Denying_Access#Deny_Access_to_No_Referrer_Requests|Combatting Comment Spam]], you can use this to prevent anyone who isn't submitting the login form from accessing it:
+
[[Combating_Comment_Spam/Denying_Access#Deny_Access_to_No_Referrer_Requests|Combatting Comment Spam]] の発展として、これを使用してサイトにアクセスしないでログインフォームにアクセスされたものを拒否することができます。
  
 
<pre>
 
<pre>
195行目: 194行目:
 
       }
 
       }
 
</pre>
 
</pre>
Change example.com to your domain. If you're using Multisite with mapped domains, you'll want to change example.com to <code>(example.com|example.net|example4.com)</code> and so on.
+
example.com は自分のドメインに変更してください。マルチサイトで複数ドメインを使用している場合は、<code>(example.com|example.net|example4.com)</code> のように変更してください。
  
 
=== ModSecurity ===
 
=== ModSecurity ===
  
If you use ModSecurity, you can follow the advice from [http://www.frameloss.org/2011/07/29/stopping-brute-force-logins-against-wordpress/ Frameloss - Stopping brute force logins against WordPress]. This requires root level access to your server, and may need the assistance of your webhost.
+
ModSecurity を使用する場合は、[http://www.frameloss.org/2011/07/29/stopping-brute-force-logins-against-wordpress/ Frameloss - Stopping brute force logins against WordPress] の指示に従ってください。サーバーのルート権限が必要になります。ホスティング業者の手助けが必要かもしれません。
  
If you're using ModSecurity 2.7.3, you can add the rules into your .htaccess file instead.
+
ModSecurity 2.7.3 を使用している場合は、ルールを .htaccess ファイルに追記することもできます。
  
=== Fail2Ban ===
+
=== Cloud/Proxy サービス===
  
Fail2ban is a Python daemon that runs in the background. It checks the logfiles that are generated bij Apache (or SSH for example), and on certain events can add a firewall rule. It uses a so called filter with a regular expression. If that regular expression happens for example 5 times in 5 minutes, it can block that ip-address for 60 minutes (or any other set of numbers).
+
CloudFlare や Sucuri CloudProxy のようなサービスは、攻撃者がサーバーに到達する前に IP  をブロックすることで、これらの攻撃を沈静化するのに役立つでしょう。
Installing and setting up Fail2ban requires root access.
+
  
=== ブロックリスト ===
+
== 外部資料 ==
 
+
It appears that most brute force attacks are from hosts from Russia, Kazachstan and Ukraine. You can choose to block ip-addresses that originate from these countries. There are blocklists availabale on the internet that you can download. With some shell-scripting, you can then load blockrules with iptables.
+
You have to be aware that you are blocking legitimate users as well as attackers. Make sure you can support and explain that decision to your customers.
+
 
+
Besides blocklists per country, there are lists with ip-addresses of well-known spammers. You can also use these to block them with iptables. It's good to update these lists regularly.
+
 
+
Setting up of blocklists and iptables requires root access.
+
 
+
=== クラウド・プロキシサービス ===
+
 
+
Services like CloudFlare and Sucuri CloudProxy can also help mitigate these attacks by blocking the IPs before they reach your server.
+
 
+
== 参照 ==
+
  
 
* [http://blog.sucuri.net/2013/04/protecting-against-wordpress-brute-force-attacks.html Sucuri: Protecting Against WordPress Brute Force Attacks]
 
* [http://blog.sucuri.net/2013/04/protecting-against-wordpress-brute-force-attacks.html Sucuri: Protecting Against WordPress Brute Force Attacks]
227行目: 212行目:
 
* [http://support.hostgator.com/articles/specialized-help/technical/wordpress/wordpress-login-brute-force-attack HostGator: Password Protecting wp-login]
 
* [http://support.hostgator.com/articles/specialized-help/technical/wordpress/wordpress-login-brute-force-attack HostGator: Password Protecting wp-login]
  
{{原文|Brute Force Attacks|136811}}
+
* [http://www.rescuework.jp/blog/password-strength.html 本当は怖い WordPress:  WordPress のパスワード強度チェック]
[[Category:上級トピック]]
+
 
[[Category:セキュリティ]]
+
{{原文|Brute Force Attacks|132730}}<!-- 04:02, 2 July 2013 Mra13  版 -->
 +
 
 +
[[Category:上級トピック]][[Category:Security]]

2014年6月8日 (日) 13:31時点における版

この項目「ブルートフォース攻撃」は、翻訳チェック待ちの項目です。加筆、訂正などを通して、Codex ドキュメンテーションにご協力下さい。

ソフトウェアの脆弱性に着目する攻撃とは異なり、ブルートフォース攻撃(Brute Force Attack) は、非常に単純な方法でアクセス権を取得しようとします。ユーザー名とパスワードを入力し、ログイン成功するまで繰り返します。 美しくないですが、ユーザー名 admin パスワード 123456 のようなものを採用している場合、攻撃が成功しやすいです。

手短に言うと、ウェブサイトのセキュリティで一番脆い場所、つまり、あなた、を狙っているのです。

攻撃の性質上、サーバーのメモリ上限に達してパフォーマンス低下を引き起こすかもしれません。http リクエストの数 (あなたのサイトを訪問する回数) が非常に多いため、サーバーがメモリ不足になるからです。

この攻撃は、WordPress 特有のものではありません。すべてのウェブアプリケーションに起こりえます。しかし WordPress は良く利用されているため、攻撃の標的となりやすいです。

自分を守る

WordPress へのよくある攻撃の場合、wp-login.php ファイルに繰り返しアクセスし、ログインできるかサーバーがダウンするかするまで継続します。自分を守るために、いくつかの方法があります。

ユーザー名 admin を使用しない

WordPress のデフォルトのユーザー名が admin のため、admin を使用していると仮定した攻撃が多いです。 ユーザー名 admin を使用している場合は、新しいアカウントを作成し、全ての投稿を新しいアカウントに移譲し、admin を購読者に変更してください (あるいは削除してください)。

プラグイン Admin Renamed Extended を使用してユーザー名を変更できます。

良いパスワードを使用する

パスワードの目的は、他者が推測しずらく、ブルートフォース攻撃が成功しにくいものにすることです。安全なパスワードを作成することができる、多くのautomatic パスワード生成ツール(google 検索)があります。

WordPress にはパスワード強度を示すメーターがあり、パスワードを変更するときに表示されます。パスワードを変更するときは、十分な強度であることを確かめておきましょう。

プラグイン Enforce Strong Password を使用して、強固なパスワードを強制することができます。

パスワード生成時に避けたほうが良い事:

  • 本名、ユーザー名、会社名、ウェブサイトの名前やそれらの組み合わせ。
  • どんな言語であれ、辞書にある単語。
  • 短いパスワード。
  • 数字のみ、またはアルファベットのみのパスワード (両方を混ぜるのが良い)。

強固なパスワードは、ブログ投稿を守るのに必要ですが、それだけではありません。管理者アカウントのアクセスを取得した攻撃者が、悪意あるスクリプトをインストールし、サーバー全体が危うくなることがあります。

プラグイン

プラグインを用いて、ログイン試行回数を制限したり、wp-admin へのアクセスを禁止したりできます。

サーバーを守る

wp-login.php あるいは wp-admin をロックする事を決めた場合、これらのページへアクセスすると、404 または 401 エラーに遭遇するでしょう。これを避けるには、.htaccess ファイルに下記のように記述します。

ErrorDocument 401 default

401 エラーを 401.html に向けることもできます。ここで重要なのは、WordPress でない、ということです。

For Nginx you can use the error_page directive but must supply an absolute url.

error_page  401  http://example.com/forbidden.html;


wp-login.php をパスワード保護する

wp-login.php ファイル (と wp-admin フォルダ)をパスワード保護することにより、防御壁を増やすことができます。wp-admin をパスワード保護すると、フロントエンドで ajax を使用するプラグインを破壊するため、wp-login を保護するだけで通常は良いでしょう。

パスワード保護するには、.htpasswd ファイルを作成する必要があります。多くのホスティングでは生成ツールを提供してますが、もし手作業で作成する必要がある場合は、htpasswd generator を使用することができます。.htaccess ファイル (拡張子のみを持つファイル) と同様、.htpasswd も拡張子のみです。

このファイルをウェブ公開領域(public_html や domain.com 等。ホスティングにより異なる)の外に置くことができます。同じフォルだに置くこともできますが、こうする場合は .htaccess ファイルに追加でセキュリティ対策を施す必要があります。

.htpasswd ファイルをアップロードしたら、どこにあるかを .htaccess に伝える必要があります。.htpasswd をホームディレクトリに置き、htpasswd ユーザー名が mysecretuser の場合、.htaccess に下記のように記述します。

# Stop Apache from serving .ht* files
<Files ~ "^\.ht"> Order allow,deny Deny from all </Files>

# Protect wp-login
<Files wp-login.php>
AuthUserFile ~/.htpasswd
AuthName “Private access”
AuthType Basic
require user mysecretuser
</Files>

AuthUserFile の実際の位置はサーバーに依存します。また 'require user' にはユーザー名を指定してください。

If you are using Nginx you can password protect your wp-login.php file using the HttpAuthBasicModule. This block should be inside your server block.

location /wp-login.php {
    auth_basic "Administrator Login";
    auth_basic_user_file .htpasswd;
}

The filename path is relative to directory of nginx configuration file nginx.conf The file should be in the following format:

user:pass
user2:pass2
user3:pass3

Passwords must be encoded by function crypt(3). You can use an online htpasswd generator to encrypt your password.

wp-admin へのアクセスを IP アドレスで制限する

自分だけが管理画面にログインする必要がある場合で、自分の IP アドレスが分かっている場合、.htaccess ファイルを用いて自分以外の wp-admin へのアクセスを拒否することができます。

.htaccess をテキストエディタで開き、下記を追加する:

# Block access to wp-admin.
order deny,allow
allow from x.x.x.x 
deny from all

x.x.x.x は自分の IP アドレスに置き換えてください。インターネットサービスプロバイダに問い合わせると、自分の IP アドレスが分かるでしょう。あるいは What Is My IP のようなオンラインサービスを使用することもできます。

For Nginx you can add a location block inside your server block that works the same as the Apache example above.

error_page  403  http://example.com/forbidden.html;
location /wp-admin {
  deny    192.168.1.1;
  allow   192.168.1.0/24;
  allow   10.1.1.0/16;
  deny    all;
}

deny/allow の順序が重要である事に注意してください。アクセス指定順を変えても上手くいく、と思うかもしれません。実際はそうではありません。上記の例の順序を変えると、全てのアドレスからのアクセスを拒否します。

テーマやプラグインが AJAX を使用している場合、.htaccess に追加の設定を記述して、それらがうまく動作するようにする必要があります。

# Allow acces to wp-admin/admin-ajax.php
<Files admin-ajax.php>
    Order allow,deny
    Allow from all
    Satisfy any
</Files>

このファイルを保存し、wp-admin フォルダにアップロードしてください。

Again for Nginx if you are restricting access to wp-admin and use ajax you will need to add another location block to your server block.

location /wp-admin/admin-ajax.php {
    allow all;
}

許可する IP アドレスを複数指定することができます。

# Block access to wp-admin.
order deny,allow
allow from x.x.x.x 
allow from y.y.y.y 
allow from z.z.z.z 
deny from all

複数のインターネットサービスプロバイダを使用する場合 (モバイル環境から管理画面にアクセスする場合、等)や、何人かが管理画面にアクセスできるようにする場合に役立ちます。

IP アドレスブロックを許可する場合は、下記のように記述します。

# Block access to wp-admin.
order deny,allow
allow from x.x.x.* 
deny from all

例えば、192.168.1.* を設定すると、IP アドレス範囲 192.168.1 を許可します。

リファラーの無いアクセスを拒否する

Combatting Comment Spam の発展として、これを使用してサイトにアクセスしないでログインフォームにアクセスされたものを拒否することができます。

# Stop spam attack logins and comments
<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteCond %{REQUEST_METHOD} POST
	RewriteCond %{REQUEST_URI} .(wp-comments-post|wp-login)\.php*
	RewriteCond %{HTTP_REFERER} !.*example.com.* [OR]
	RewriteCond %{HTTP_USER_AGENT} ^$
	RewriteRule (.*) http://%{REMOTE_ADDR}/$ [R=301,L]
</ifModule>

Nginx - Deny Access to No Referrer Requests

location ~* (wp-comments-posts|wp-login)\.php$ {
        if ($http_referer !~ ^(http://example.com) ) {
          return 405;
        }
      }

example.com は自分のドメインに変更してください。マルチサイトで複数ドメインを使用している場合は、(example.com|example.net|example4.com) のように変更してください。

ModSecurity

ModSecurity を使用する場合は、Frameloss - Stopping brute force logins against WordPress の指示に従ってください。サーバーのルート権限が必要になります。ホスティング業者の手助けが必要かもしれません。

ModSecurity 2.7.3 を使用している場合は、ルールを .htaccess ファイルに追記することもできます。

Cloud/Proxy サービス

CloudFlare や Sucuri CloudProxy のようなサービスは、攻撃者がサーバーに到達する前に IP をブロックすることで、これらの攻撃を沈静化するのに役立つでしょう。

外部資料

最新英語版: WordPress Codex » Brute Force Attacks最新版との差分