WEBサイトに設置したメルマガシステム(ACmailer)に海外からの不正なアクセスが増えています。いくつかのサイトで確認しました。オリンピック開催年は不正なアクセスが増加する傾向があるので要注意です。
エックスサーバーやさくらインターネットだと海外IPブロックというWAF機能があるのでさほどでもないのですが、バリュードメイン/コアサーバーにはWAFがないためか、かなりのアタックがあります。そこで、海外からのスパムアタックを防ぐためにメルマガのシステムが入っている対象フォルダにある「.htaccess」をカスタマイズして日本国内IPアドレスのみ閲覧可能にしました。これで海外IPアドレスからのアタックをある程度抑止できます。
海外IPアドレスからの閲覧を許可しない設定にする
メルマガに不正登録された海外ドメインのメール
ACmailerには、「ダブルオプトイン機能」があるので、ダブルオプトイン機能を使っておけばいきなり海外アドレスメールが登録されることはありません。
そこで、ACmailerに不正登録された海外ドメインのメールアドレスがないかどうかを確認します。
この実例はすべて海外ドメインのメールでした。海外の日本人が登録したということもありえますが実際にはほぼスパムでしょう。「ダブルオプトイン機能」をオンにすると「仮登録データ一覧」というところにメルマガ登録しようとしたメールアドレスが格納されますが、このサイトでは2200件以上ありました。
上記の10件は、「ダブルオプトイン機能」をすり抜けて不正登録されたものだと思われます。
このサイトのレンタルサーバーはバリュードメイン/コアサーバーですので、海外IPアドレスのブロック機能がコントロールパネルにはありません。
そこで、メールマガのフォルダに設置してある「.htaccess」をカスタマイズして、海外からのアクセスを許可しない設定にしました。
設置した「.htaccess」の内容
設置したのは以下ののような内容の「.htaccess」です。
<RequireAll>
Require all granted
# Allow from local network (optional)
Require ip 192.168.0.0/16
# Deny from all other countries
# For example, deny all IPs not in Japan
# Japan IP ranges (example ranges, adjust as needed)
<RequireAny>
Require ip 1.0.16.0/20
Require ip 1.0.64.0/18
# (add more ranges as needed)
</RequireAny>
</RequireAll>
#end
この「.htaccess」の解説を日本語にしました
この「.htaccess」をもう少しカスタマイズすることにしました。
・コメント行の解説を日本語にしました
・Require ip 192.168.0.0/16の行を削除しました。
Require ip 192.168.0.0/16という内容は、社内LANからのアクセスを許可するという意味なので、削除しました。
<RequireAll>
Require all granted
# 他のすべての国からのアクセスを拒否
# 例えば、日本以外のすべてのIPを拒否
# 日本のIP範囲(例としていくつかの範囲、必要に応じて調整)
<RequireAny>
Require ip 1.0.16.0/20
Require ip 1.0.64.0/18
# (必要に応じて他の範囲を追加)
</RequireAny>
</RequireAll>
#end
10時間以上経過した段階で、不正なメールアドレス登録も「仮登録データ一覧」の登録も0になりました。とりあえず機能しているようでよかったです。
日本のIPアドレスをもっとカバーするようにしました
さて、動作テストがうまくいったので、あらためて上記の設定のままで日本国内のIPアドレスがちゃんとカバーできているかどうかを調べました。
調査するサイトは以下のとおりです。
この段階でChatGPTに投げて、「.htaccess」をさらにカスタマイズしました。
上記の画像にある内容を少し修正して以下の内容にしました。
<RequireAll>
Require all granted
# 日本以外の国からのアクセスを拒否
# 日本のIP範囲(例としていくつかの範囲、必要に応じて調整)
<RequireAny>
Require ip 1.0.16.0/20
Require ip 1.0.64.0/18
Require ip 1.1.64.0/18
Require ip 1.21.0.0/16
Require ip 1.33.0.0/16
Require ip 1.66.0.0/16
Require ip 1.72.0.0/16
Require ip 1.73.0.0/16
Require ip 1.75.0.0/16
Require ip 1.76.0.0/16
Require ip 1.78.0.0/16
Require ip 1.79.0.0/16
# (必要に応じて他の範囲を追加)
</RequireAny>
</RequireAll>
#end
この「.htaccess」で運用してみることにします。
補足:CIDR(サイダー)表記について
CIDR(Classless Inter-Domain Routing)は、IPアドレスの範囲を効率的に表現するための方式です。以下に、CIDR表記の意味と、その範囲がどのように計算されるかをステップバイステップで解説します。
CIDR表記の基本
CIDR表記は、IPアドレスとサブネットマスクを一体化して表現します。例えば、1.0.16.0/20
という形式です。ここで、
1.0.16.0
はネットワークアドレス/20
はサブネットマスクのビット長(プレフィックス長)
ステップ1: IPアドレスの理解
まず、IPアドレス 1.0.16.0
をバイナリ形式に変換します。
rust
1.0.16.0 の各オクテットをバイナリに変換すると:
1 -> 00000001
0 -> 00000000
16 -> 00010000
0 -> 00000000
つまり、1.0.16.0 は:00000001.00000000.00010000.00000000
ステップ2: サブネットマスクの適用
/20
というサブネットマスクは、上位20ビットがネットワーク部分で、残りの12ビットがホスト部分を表します。
ネットワーク部分(20ビット):
00000001.00000000.0001
ホスト部分(12ビット)は全て0です。
ステップ3: 範囲の計算
ネットワーク部分を固定して、ホスト部分の範囲を計算します。ホスト部分の12ビットは、0
から 111111111111
まで(10進数で0から4095)です。
- 開始アドレス(ネットワークアドレス):
- 全てのホストビットが0の場合、
1.0.16.0
です。
- 全てのホストビットが0の場合、
- 終了アドレス(ブロードキャストアドレス):
- 全てのホストビットが1の場合、
1.0.31.255
です。
計算の詳細:
- 最後の12ビットを全て1にすると、最上位20ビットに最下位12ビットを追加して計算します。
ruby
1.0.31.255
- 全てのホストビットが1の場合、
結論
1.0.16.0/20
の範囲は、1.0.16.0
から 1.0.31.255
までのIPアドレスをカバーします。
追加情報
サブネットマスクのプレフィックス長が大きいほど、ネットワーク部分が増え、ホスト部分が減ります。たとえば、/24
ならばホストビットは8ビット(256アドレス)、/16
ならばホストビットは16ビット(65536アドレス)となります。
このように、CIDR表記を使うことで、効率的にIPアドレスの範囲を指定することができます。
上記の「.htaccess」にはサイダー表記が使われています。
「.htaccess」にIPv6のサイダー情報を追加可能
なお、この「.htaccess」はIPV4の設定しかしてありません。その場合のIPV6のアクセスがどうなるかですが、通常Apacheは特定のアクセス制限が設定されていないIPアドレスからのアクセスを許可します。そのため、IPv6の制限が.htaccessファイルに記述されていない場合、IPv6アドレスからのアクセスは許可されるはずです。
いずれ、IPV6の追記が必要になるかもしれませんね。
ちなみに、日本国内のIPV6のアクセスを許可する場合は以下のような記述になります。
<RequireAll>
Require all denied
# 日本のIPv6アドレス範囲を許可(例としていくつかの範囲を記載、必要に応じて追加)
<RequireAny>
Require ip 2400:8500::/32
Require ip 2402:6b00::/32
Require ip 2404:7a80::/32
Require ip 2406:da00::/32
Require ip 2407:c800::/32
Require ip 2408:4000::/32
# (必要に応じて他の範囲を追加)
</RequireAny>
</RequireAll>
だんだん複雑になっていきますね。
できればこのようなことはサーバー側で対応してほしいものです。
この記事を書いた遠田幹雄は中小企業診断士です
遠田幹雄は経営コンサルティング企業の株式会社ドモドモコーポレーション代表取締役。石川県かほく市に本社があり金沢市を中心とした北陸三県を主な活動エリアとする経営コンサルタントです。
小規模事業者や中小企業を対象として、経営戦略立案とその後の実行支援、商品開発、販路拡大、マーケティング、ブランド構築等に係る総合的なコンサルティング活動を展開しています。実際にはWEBマーケティングやIT系のご依頼が多いです。
民民での直接契約を中心としていますが、商工三団体などの支援機関が主催するセミナー講師を年間数十回担当したり、支援機関の専門家派遣や中小企業基盤整備機構の経営窓口相談に対応したりもしています。
保有資格:中小企業診断士、情報処理技術者など
会社概要およびプロフィールは株式会社ドモドモコーポレーションの会社案内にて紹介していますので興味ある方はご覧ください。
お問い合わせは電話ではなくお問い合わせフォームからメールにておねがいします。新規の電話番号からの電話は受信しないことにしていますのでご了承ください。
【反応していただけると喜びます(笑)】
記事内容が役にたったとか共感したとかで、なにか反応をしたいという場合はTwitterやフェイスブックなどのSNSで反応いただけるとうれしいです。
遠田幹雄が利用しているSNSは以下のとおりです。
facebook https://www.facebook.com/tohdamikio
ツイッター https://twitter.com/tohdamikio
LINE https://lin.ee/igN7saM
チャットワーク https://www.chatwork.com/tohda
また、投げ銭システムも用意しましたのでお気持ちがあればクレジット決済などでもお支払いいただけます。
※投げ銭はデジタルコンテンツ購入という通販のしくみにしました。
※投げ銭は100円からOKです。シャレですので笑ってください(笑)