【.htaccess】特定の国からのサイトアクセスを拒否する

1 はじめに

本記事は、Apacheの “.htaccess”による、 特定の国、はっきり言うとチウゴクからの
サイトアクセスを拒否する設定について記したものです。

メールサーバーのフィルタリング設定値を見つけるために
ネットワークの通信パケットを監視していたところ、
チウゴクからの自宅Webサーバーアクセスが多いことに気づきました。
下に示すツールサイトで、アクセス元の大まかな住所を調べてみたところ、
フィッシングメール送信元住所に一致。

IPアドレス住所検索

何の目的でわたしのサイトを訪れているのか、その理由が容易に想像できるため、
チウゴクからのサイトアクセスを禁止することにしました。

本記事では、.htaccessファイルの記述法や配置のルールについは示しません。
次に示すページをご覧いただければと思います。

【WordPressセキュリティ】.htaccessによるアクセス制御 | dotいがの快適インターネット

特定の国からのアクセス拒否設定の方法については、同様の記事が他サイトにも多数ありますが、
この記事は自分の備忘録を目的に起こしたものであることをお断りしておきます。

2 特定の国からのサイトアクセスを拒否する

特定のアドレスからアクセスを制限するには、“allow / deny”の構文によって行います。

特定の国を限定するには、次の3つの要素の組み合わせで行います。

① IPアドレス
② 国別トップレベルドメイン(ccTLD
③ ユーザーエージェント(User Agent: ネット利用者が使用しているOSやブラウザ)

2.1 IPアドレスによる制限

下に示すように、IPアドレスで制限する方法です。

国別割り振りIPアドレスの一覧は、下に示すサイトから知ることができます。

国/地域別IPアドレス割り振り一覧 | fetus

中国の場合、IPアドレスの割り当ては5千個以上のCIDRリストになってしまいます。
全てを.htaccessに設定するのは、現実的じゃないのかもしれません。

地道にアクセスログを見て、
攻撃の多いサイトのCIDRを単位に順次追加していくのが良いのかもしれません。

# 無料のアクセス解析ツールでは、使い勝手の良いものが見つからない。
# 生ログを見るのも、キツいなー 

2.2 国別トップレベルドメインによる制限

下に示すように、文字通り制限したい国のトップレベルドメインで指定する方法です。
指定するドメイン名は、完全修飾ドメイン名(FQDN)である必要はないので、
国ドメイン名で拒否設定することができます。

order”、“allow”、“deny”の順番で、記述しなければなりません。

③の“deny from”の行に、アクセスを拒否したい国の国ドメインを指定します。
後方一致ですので、“.(dot)”から始めます。

order”の行、“allow”の行は、上で示した通りに記述します。

なお、国ドメイン名だけで、その国からのアクセスを全部制限できるわけではありません。

たとえば、件のサイトのトップレベルドメインが、“.com”、“.net”“.info”、“.biz”といった
分野別トップレベルドメインであったり、
.shop”、“.site”、“.blog”といった新ドメインである場合は、
その国であることを判別できないからです。

国ドメインの一覧は、“ccTLD”で検索すれば見つけることができます。

国別コードトップレベルドメイン 一覧 | みんなの知識 ちょっと便利帳

2.3 ユーザーエージェントによる制限

中国からのアクセスの場合、
中国独自のユーザーエージェント(User Agent)からのことが多いようです。
使用されているユーザーエージェントから、中国からのアクセスと判断することができます。

下に示すように、特定のユーザーエージェントを使用したアクセスを制限することができます。

上の設定例は、次の意味になります。

①の行で、“User-Agent”が設定されたもの(記述例では、“AliApp”)であった場合、
環境変数“deny_UA(環境変数名は任意)”を設定する。

②の行で、環境変数“deny_UA”が設定されたアクセスは拒否する

中国のユーザーエージェント一覧については、下に示すページをご覧ください。

【.htaccess】特定の国のIPアドレスでアクセスを拒否(ブロック)する
ユーザーエージェントをブロックする場合
| パソコン修理のエヌシステムBLOG

以上

本文中の記述に、
誤字や脱字、誤った内容の記述など見つかりましたら、
下に示すフォームでご連絡いただければ幸いです。

お問い合わせ