「サイトへの不正アクセス、フォームから飛んでくるスパムがひどい。」
そんな時には「.htaccess」を編集してアクセスをブロックする対策が有効です。シンプルで効果的な対策なので、ぜひ試してみてください。
当記事では、初心者の方も安心して取り組めるように、わかりやすくご紹介します。
目次
.htaccessとは
「.htaccess(ドットエイチティーアクセス)」とは、サーバーのアクセスルールを決めるためのファイルで、アクセス制限やリダイレクト処理などを設定できます。
通常、レンタルサーバーなどを契約すると、ルートディレクトリに最初から設置されていることが多いです。WordPressサイト立ち上げ時や、サーバー契約段階で編集することはないので、初心者の方が目にすることは少ないかもしれません。
極めて重要なファイルですが、仕組みがわかればスパム対策にも活用できます。
なぜ海外のIPをブロックすると効果的なの?
スパムや不正アクセスの多くは、海外のIPアドレスから送られてくることが多いからです。
IPアドレスとは、インターネット上の「住所」のようなもので、各地域ごとに割り当てられています。そのため、海外からのアクセスを制限することで、次のような効果があるわけです。
- スパムフォーム送信を減らせる
- 不正ログインなどの攻撃リスクを下げられる
- サーバーの負荷を軽減できる
国内のユーザーには影響を与えずに、効率よくスパム対策ができるため、非常に効果的な方法です。
ちなみに似たスパム対策として、フォームに「ひらがな」含まないと送信できなく方法もあります。

WordPressサイトにフォームを設置していると、スパム(迷惑メール)が飛んでくることがあります。 例えばこういうのです。 スパムを許すと、昼夜問わず何度も送信されてきて、正規ユーザーのお問い合わせが埋もれてしまうほど大量に届きます。対策が必要です。 スパムメールの主な特...
設定手順
.htaccessを編集して、海外IPをブロックする設定手順をまとめました。初心者の方もぜひ参考にしてみてください。
1. .htaccessの場所と編集方法
.htaccessはサーバー内にありますので、FTPソフトやレンタルサーバーのファイルマネージャー機能を使って、サイトのルートディレクトリ(/public_html/や/www/など)にアクセスします。
その中にある .htaccessをダウンロードします。直接編集できる場合は、編集画面を開いてください。

エックスサーバーのファイルマネージャーで「.htaccess」を編集している例
後述するコードは、.htaccessの最上部にコピペで使えます。
2. Googleなどのクローラーは許可する
まず、Googlebotなど正規クローラーはブロックせずに、許可しておきましょう。
以下のマークしている部分が、該当の記述です。
<IfModule mod_authz_core.c>
<RequireAll>
<RequireAny>
# 主要検索エンジンクローラーは許可
Require expr %{HTTP_USER_AGENT} =~ /Googlebot|Bingbot|Yahoo! Slurp/i
Require all granted
</RequireAny>
# 中国のIP帯域をブロック(代表的な一部例)
Require not ip 1.0.1.0/24
Require not ip 1.0.2.0/23
Require not ip 1.0.8.0/21
Require not ip 1.1.0.0/24
Require not ip 1.1.2.0/23
# ロシアのIP帯域をブロック(代表的な一部例)
Require not ip 5.128.0.0/16
Require not ip 5.129.0.0/16
Require not ip 5.130.0.0/15
Require not ip 5.132.0.0/14
Require not ip 5.136.0.0/13
# 特定の狭いIP帯域をブロック
Require not ip 123.45.67.0/24
</RequireAll>
</IfModule>
.htaccessでIP単位の制限をかけると、クローラーのアクセスまで遮断してしまう可能性があります。これを避けるための記述です。上記はGoogleやBing、Yahooなど主要な検索エンジンのクローラーに限ってアクセスを許可している例です。
3. 海外のIPをブロックする
海外のIPをブロックするには、.htaccessに以下のような記述を追加します。
特定のIPをブロックする
まずは、特定のIPアドレスやIP帯域を指定してアクセスを拒否する方法。悪質なアクセス元やスパム送信元がわかっている場合はこの方法がシンプルです。
以下でマークされている箇所が、特定のIPアドレスとその周辺のIP帯域「123.45.67.0/24」をブロックしている設定例です。
<IfModule mod_authz_core.c>
<RequireAll>
<RequireAny>
# 主要検索エンジンクローラーは許可
Require expr %{HTTP_USER_AGENT} =~ /Googlebot|Bingbot|Yahoo! Slurp/i
Require all granted
</RequireAny>
# 中国のIP帯域をブロック(代表的な一部例)
Require not ip 1.0.1.0/24
Require not ip 1.0.2.0/23
Require not ip 1.0.8.0/21
Require not ip 1.1.0.0/24
Require not ip 1.1.2.0/23
# ロシアのIP帯域をブロック(代表的な一部例)
Require not ip 5.128.0.0/16
Require not ip 5.129.0.0/16
Require not ip 5.130.0.0/15
Require not ip 5.132.0.0/14
Require not ip 5.136.0.0/13
# 特定の狭いIP帯域をブロック
Require not ip 123.45.67.0/24
</RequireAll>
</IfModule>
周辺のIP帯域とは、あるIPアドレスを起点にして、一定の範囲をまとめて指定する方法です。
「123.45.67.0/24」という書き方をすると、「123.45.67.0」からその近くにあるたくさんのIPアドレスをまとめて指定できます。つまり、「このあたり一帯のIPを全部ブロックする」といった感覚です。
悪質なアクセスは、似たようなIPから繰り返されることが多いため、まとめてブロックすると効果的です。
どのIPをブロックすればいい?
すべての海外IPを一括でブロックしてしまうと、必要なアクセスまで遮断してしまうリスクがあります。
一般的に、スパム送信や不正アクセスが多いとされる国は以下の通りです。
- 中国(CN)
- ロシア(RU)
- インド(IN)
- ウクライナ(UA)
- ブラジル(BR)
- アメリカ(US)※
※アメリカはインターネット利用者が非常に多いため、スパム発信源になることもありますが、正規ユーザーも多数います。アメリカのIPをブロックする際は、アクセス遮断による影響を十分に考慮してください。
.htaccessでこれらの国のIP帯域をブロックすれば、最低限のリスクを抑えつつ、柔軟に運用できます。
以下のマーク箇所は、中国とロシアのIPアドレスの一部をブロックする例です。
<IfModule mod_authz_core.c>
<RequireAll>
<RequireAny>
# 主要検索エンジンクローラーは許可
Require expr %{HTTP_USER_AGENT} =~ /Googlebot|Bingbot|Yahoo! Slurp/i
Require all granted
</RequireAny>
# 中国のIP帯域をブロック(代表的な一部例)
Require not ip 1.0.1.0/24
Require not ip 1.0.2.0/23
Require not ip 1.0.8.0/21
Require not ip 1.1.0.0/24
Require not ip 1.1.2.0/23
# ロシアのIP帯域をブロック(代表的な一部例)
Require not ip 5.128.0.0/16
Require not ip 5.129.0.0/16
Require not ip 5.130.0.0/15
Require not ip 5.132.0.0/14
Require not ip 5.136.0.0/13
# 特定の狭いIP帯域をブロック
Require not ip 123.45.67.0/24
</RequireAll>
</IfModule>
国別IPリストは、fetusのようなサイトから参照可能です。
※無料で利用できる日本のIP情報サービスの一例です。
4. 設定後の動作確認
不正なアクセスがブロックされているかどうかは、サイトのアクセスログ(アクセスされたIPアドレスなどの履歴)を確認するのがオススメです。
次のようなプラグインを活用すれば、ダッシュボードからアクセスログを確認できるようになります。

セキュリティが弱いと言われるWordPressサイトですが、少しの工夫で対策できます。 複雑なパスワードでログイン情報を保護したり、セキュリティプラグインを導入するなど。対策方法はさまざまです。 今回は、中でも人気のセキュリティプラグイン「Wordfence Security」を...
上記プラグインには、WAF(Web Application Firewall)機能も含まれています。WAFは、不正アクセスの試みや攻撃をリアルタイムで検知・遮断する機能です。.htaccessによるIPブロックだけでは防ぎきれない部分にも対応できるので、併用することでサイトのセキュリティを強化できます。
まとめ
今回は、スパムや不正アクセス対策として、.htaccessを使った海外IPのブロック方法をご紹介しました。
海外からの不要なアクセスを制限することで、スパムフォーム送信の減少やサーバー負荷の軽減に効果があります。ただし、検索エンジンのクローラーや必要な国のユーザーまで遮断しないように注意は必要です。
初心者の方でも、手順に沿って慎重に設定すれば、効果的にスパムや不正アクセスを減らせます。セキュリティ対策の一環として、ぜひ導入を検討してみてください。
セキュリティに関する記事

万が一悪質なユーザーに標的にされてしまい、あなたのサイトが不正にアクセスされたとしましょう。 その時、あなたが運営するサイトにユーザーのアクセス履歴を辿る記録があれば、不正ログインに対する対策の幅が広がりますよね。ただ、デフォルトのWordPressではこういった機能は用意されていないので、プ...

WordPressはオープンソースかつ、無料で使えて拡張性(プラグイン・テーマ)も高いので、世界中で最も利用されているCMSの1つです。オープンソースであるがゆえ、脆弱性が早期発見されやすい性質もあります。 WordPressは世界中で使われているCMSのため、きちんとセキュリティ対策を行って...

インターネットを閲覧していると、「私はロボットではありません」というチェックボックスにチェックをことは入れたことはありませんか。あれは、ユーザーが人間であり悪質なアクセスを試みるロボットではないことを証明するためのセキュリティ対策になります。 数あるセキュリティ対策のプラグインの中でも、ログイ...
WordPressテーマ集
コメント