「サイトへの不正アクセス、フォームから飛んでくるスパムがひどい。」

そんな時には「.htaccess」を編集してアクセスをブロックする対策が有効です。シンプルで効果的な対策なので、ぜひ試してみてください。

当記事では、初心者の方も安心して取り組めるように、わかりやすくご紹介します。

WordPressテーマ「PANDORA」
WordPressテーマ「PANDORA」
レイアウト自由自在なブログ・メディアを構築。

.htaccessとは

「.htaccess(ドットエイチティーアクセス)」とは、サーバーのアクセスルールを決めるためのファイルで、アクセス制限やリダイレクト処理などを設定できます。

通常、レンタルサーバーなどを契約すると、ルートディレクトリに最初から設置されていることが多いです。WordPressサイト立ち上げ時や、サーバー契約段階で編集することはないので、初心者の方が目にすることは少ないかもしれません。

極めて重要なファイルですが、仕組みがわかればスパム対策にも活用できます。

なぜ海外のIPをブロックすると効果的なの?

スパムや不正アクセスの多くは、海外のIPアドレスから送られてくることが多いからです。

IPアドレスとは、インターネット上の「住所」のようなもので、各地域ごとに割り当てられています。そのため、海外からのアクセスを制限することで、次のような効果があるわけです。

  • スパムフォーム送信を減らせる
  • 不正ログインなどの攻撃リスクを下げられる
  • サーバーの負荷を軽減できる

国内のユーザーには影響を与えずに、効率よくスパム対策ができるため、非常に効果的な方法です。

ただし、海外の正規ユーザーのアクセスも遮断されるという点には注意が必要です。

ちなみに似たスパム対策として、フォームに「ひらがな」含まないと送信できなく方法もあります。

設定手順

.htaccessを編集して、海外IPをブロックする設定手順をまとめました。初心者の方もぜひ参考にしてみてください。

  1. .htaccessの場所と編集方法
  2. Googleなどのクローラーは許可する
  3. 海外のIPをブロックする
  4. 設定後の動作確認

1. .htaccessの場所と編集方法

.htaccessはサーバー内にありますので、FTPソフトレンタルサーバーのファイルマネージャー機能を使って、サイトのルートディレクトリ(/public_html/や/www/など)にアクセスします。

その中にある .htaccessをダウンロードします。直接編集できる場合は、編集画面を開いてください。

エックスサーバーのファイルマネージャーで「.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を一括でブロックしてしまうと、必要なアクセスまで遮断してしまうリスクがあります。

現実的には「問題の多い国だけをブロック」し、WAF(Web Application Firewall)などのセキュリティ対策で補強するのがベターです。

一般的に、スパム送信や不正アクセスが多いとされる国は以下の通りです。

  • 中国(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アドレスなどの履歴)を確認するのがオススメです。

次のようなプラグインを活用すれば、ダッシュボードからアクセスログを確認できるようになります。

上記プラグインには、WAF(Web Application Firewall)機能も含まれています。WAFは、不正アクセスの試みや攻撃をリアルタイムで検知・遮断する機能です。.htaccessによるIPブロックだけでは防ぎきれない部分にも対応できるので、併用することでサイトのセキュリティを強化できます。

まとめ

今回は、スパムや不正アクセス対策として、.htaccessを使った海外IPのブロック方法をご紹介しました。

海外からの不要なアクセスを制限することで、スパムフォーム送信の減少やサーバー負荷の軽減に効果があります。ただし、検索エンジンのクローラーや必要な国のユーザーまで遮断しないように注意は必要です。

初心者の方でも、手順に沿って慎重に設定すれば、効果的にスパムや不正アクセスを減らせます。セキュリティ対策の一環として、ぜひ導入を検討してみてください。

セキュリティに関する記事

世界最高品質のデザインの
WordPressテーマ集
WordPressテーマ「FAKE」
WordPressテーマ「FAKE」
イケてる企業サイトを低コストで構築する。
WordPressテーマ「GENESIS」
WordPressテーマ「GENESIS」
スタイリッシュな企業サイトの決定版。
WordPressテーマ「NANO」
WordPressテーマ「NANO」
中堅以上も使える企業系テーマのロングセラー。