メルマガのCGIに海外からの不正な登録を試みるアタックが続いているWEBサイトがあります。サーバーのWAP(WEBファイヤーウォール)を強化してもまだアタックが続くため追加措置をしました。
メルマガのCGIを設置しているフォルダに海外からの不正なIPをブロックする「.htaccess」をカスタマイズしました。とりあえず不正と思われる海外IPアドレスを記述してみました。その後、curlというツールでアクセスする行為もブロックしたところ、不正な登録は0になりました。
不正な海外IPをブロックする
現状分析はアクセスログから
不正なアタックを受けているサーバーで、直近のアクセスログを調べてみました。アクセスがあったIPアドレスの記録が残っています。
このIPアドレスをすべてダウンロードして、テキストファイルにしました。
海外IPアドレスを抽出
そのテキストファイルを生成AI(今回はPerplexity)を使い、海外IPアドレスを抽出してもらいました。
サーバーのアクセスログからIPアドレスを収集しました。 このIPアドレスから分析したうえで
・日本のIPアドレスは通過
・海外のIPアドレスはブロック
というようにしたいと思います。
そこでブロックするIPアドレスの候補を
# 悪意のあるIPアドレスをブロック(最初のブロックのみ指定) Require not ip 185.0.0.0/8
というような形式で抽出してください。
承知しました。サーバーのアクセスログから収集されたIPアドレスを分析し、海外のIPアドレスをブロックするための候補を抽出します。日本のIPアドレスは通過させ、海外のIPアドレスをブロックする方針に基づいて、以下のように.htaccessファイルに記述する候補を提示します。
# 悪意のあるIPアドレスをブロック(最初のブロックのみ指定)
Require not ip 209.0.0.0/8
Require not ip 37.0.0.0/8
Require not ip 66.0.0.0/8
Require not ip 35.0.0.0/8
Require not ip 20.0.0.0/8
Require not ip 104.0.0.0/8
Require not ip 181.0.0.0/8
Require not ip 72.0.0.0/8
Require not ip 193.0.0.0/8
Require not ip 202.0.0.0/8
Require not ip 34.0.0.0/8
Require not ip 51.0.0.0/8
Require not ip 54.0.0.0/8
Require not ip 137.0.0.0/8
Require not ip 165.0.0.0/8
Require not ip 167.0.0.0/8
Require not ip 175.0.0.0/8
Require not ip 178.0.0.0/8
Require not ip 188.0.0.0/8
Require not ip 194.0.0.0/8
Require not ip 213.0.0.0/8
Require not ip 216.0.0.0/8
Require not ip 217.0.0.0/8
Require not ip 3.0.0.0/8
Require not ip 5.0.0.0/8
このようにIPアドレスの抽出ができました。
このIPアドレスのうち、日本国内のIPアドレスを含むものなど誤動作を起こす可能性があるかもしれないので、慎重に調整しました。
「.htaccess」の作成
「.htaccess」の作成も生成AIを使って実施しました。この一連の作業が生成AIで可能になったので作業は楽になりました。
▼作成した「.htaccess」
# BEGIN japan_only_IP
# 日本以外の悪意ある国からのアクセスを拒否
<RequireAll>
Require all granted
# 悪意のあるIPアドレスをブロック
Require not ip 1.0.0.0/8 # 中国
Require not ip 5.0.0.0/8 # ヨーロッパ(主にロシア)
Require not ip 37.0.0.0/8 # ヨーロッパ(主にロシア)
Require not ip 45.0.0.0/8 # ヨーロッパ(主にロシア)
Require not ip 47.0.0.0/8 # 中国
Require not ip 49.0.0.0/8 # 中国
Require not ip 87.0.0.0/8 # ヨーロッパ(ロシア)
Require not ip 91.0.0.0/8 # ヨーロッパ
Require not ip 185.0.0.0/8 # ヨーロッパ
Require not ip 188.0.0.0/8 # ヨーロッパ
Require not ip 178.0.0.0/8 # ヨーロッパ
Require not ip 179.0.0.0/8 # 南アメリカ
Require not ip 193.0.0.0/8 # ヨーロッパ
Require not ip 194.0.0.0/8 # ヨーロッパ
Require not ip 213.0.0.0/8 # ヨーロッパ
Require not ip 217.0.0.0/8 # ヨーロッパ
</RequireAll>
#end
この「.htaccess」をメルマガのCGIフォルダに設置しました。これでしばらく様子をみることにします。
特定のツール「curl」でのアクセスを禁止する
その後も不正なアクセスがありました。そこで別の対策を追加しました。アクセスログから「reg.cgi」にアクセスしているIPアドレスを抽出し、その特徴を調べてみるとあるコマンドでアクセスされていました。
生成AIでさらに調べると
全てのアクセスで「curl/7.54.0」というユーザーエージェントが使用されています。これは、コマンドラインツールのcurlを使用してアクセスしていることを示しています。
ということがわかりました。
そこで、コマンドラインツールのcurlを使用してのアクセスを禁止することにしました。
「.htaccess」ファイルへの記述方法
以下のコードを.htaccessファイルに追加することで、curlからのアクセスを禁止できます。
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} curl [NC] RewriteRule ^ – [F,L]
このコードは、ユーザーエージェントに”curl”という文字列が含まれている場合(大文字小文字を区別しない)、アクセスを拒否します。
この内容を「.htaccess」に追記しました。
生成AIでコードを書くのは本当に便利です
ちなみに、この作業は、Perplexity(パープレキシティ)とChatGPTの両方を使ってどちらが正確に作成するかについて試してみました。最終的に作成する「.htaccess」についてはどちらも同等レベルでした。
ただし、途中の試行錯誤についてはPerplexity(パープレキシティ)のほうが親切な回答をしてくれたように感じました。Perplexity(パープレキシティ)はpro版で生成AIにはClaud3.5sonnetを設定して利用しています。Claud3.5sonnetは日本語の扱いが自然なので本当に使いやすいでsね。
当面は、2つの生成AIを使い分けていきたいと思います。
この記事を書いた遠田幹雄は中小企業診断士です
遠田幹雄は経営コンサルティング企業の株式会社ドモドモコーポレーション代表取締役。石川県かほく市に本社があり金沢市を中心とした北陸三県を主な活動エリアとする経営コンサルタントです。
小規模事業者や中小企業を対象として、経営戦略立案とその後の実行支援、商品開発、販路拡大、マーケティング、ブランド構築等に係る総合的なコンサルティング活動を展開しています。実際には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
また、投げ銭システムも用意しましたのでお気持ちがあればクレジット決済などでもお支払いいただけます。
※投げ銭はスクエアの「寄付」というシステムに変更しています(2025年1月6日)
※投げ銭は100円からOKです。シャレですので笑ってください(笑)