ウェブサイト運営において、セキュリティ維持は重要となります。
実際にwebサーバーの運用を行う中でも、同一IPからの攻撃と思われる大量のアクセスが発生することがあります。
今回はサーバー内のアクセスログから攻撃と思われる痕跡をChatGPTで検出できるか?という検証を行いました。
ツール等を使わずに手っ取り早く調べたい方向けです。
※アクセスログは重要情報が含まれている場合があるため、実際のログデータを使用する場合は注意してください。
【前提】
・今回はあくまでも検証なので、架空のアクセスログを作成して使用します。
・GPT3.5を使用したため、ログファイルを添付するのではなくテキストで実行します。
・用意した架空のアクセスログは以下のような形式としました。
111.222.333.444 - - [17/Dec/2023:06:00:00 +0000] "GET / HTTP/1.1" 200 9 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"
111.222.333.444 - - [17/Dec/2023:06:00:01 +0000] "GET / HTTP/1.1" 200 9 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"
≀
111.222.333.444 - - [17/Dec/2023:06:01:58 +0000] "GET / HTTP/1.1" 200 9 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"
111.222.333.444 - - [17/Dec/2023:06:01:59 +0000] "GET / HTTP/1.1" 200 9 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"
・アクセスログは6:00:00から1秒起きに6:01:59までの計120行とします。
・接続元IPは同一IPを100個(111.222.333.444)、それ以外はランダムとしてます。
【プロンプト】
①
あなたは弊社の優秀なネットワーク管理者です。
以下アクセスログを分析し、同一IPアドレスからの攻撃と思われるアクセスの接続元IPアドレスを出力してください。
②
あなたは弊社の優秀なネットワーク管理者です。
以下アクセスログを分析し、接続元IPアドレスの件数が多い順に5個出力してください。
【検証結果】
①
想定通り「111.222.333.444」が出力されました。
実際のアクセスログでも同様の結果が得られる可能性が高いと思われます。
②
件数は多い順になってますが、実際の件数(100件)とは異なる結果となってしまいました。。
何度かプロンプトを変えてみましたが、50件までしかカウントされませんでした。
テキストだと情報が多すぎてこうなってしまうのかもしれません。
【おまけ】
以下はGPT4で同じプロンプトで実行した結果です。
①についてはほぼ同じでした。
②についても50件以上のカウントは省略されましたね。。ただ、より丁寧な回答になっているように感じます。
①
上記のアクセスログを見ると、同一のIPアドレスが短時間に何度もアクセスしていることがわかります。
アクセスの頻度やパターンから不正なアクセスである可能性が高いです。
これをもとに、同一IPアドレスからの攻撃と思われるアクセスを特定すると、以下の接続元IPアドレスが該当すると考えられます:
111.222.333.444
このIPアドレスからは非常に短い間隔で継続的なアクセスがあり、攻撃である可能性が高いです。
実際に攻撃かどうかを判断するためには、これらのアクセスがサーバーにどのような負荷をかけているか、正規のトラフィックとの相違点は何か、といった追加の分析が必要です。
また、悪意のあるアクセスであれば、対策としてIPアドレスをブロックするなどの措置を講じることが考えられます。
②
アクセスログに記録されたIPアドレスの件数をカウントし、多い順に5つ出力します。
この作業を通常行う場合、プログラミング言語やログ解析ツールを利用して効率的に処理することが一般的です。ただし、文脈上技術的な実装が可能でないため、出力されたログデータから直接計算を行い、結果をお伝えします。
以下は、それぞれのIPアドレスが何回アクセスされたかを数えた結果です:
IPアドレス 111.222.333.444 は非常に多くのアクセスがあります。
他のIPアドレスは1〜2回のアクセスのみであるように見えます。
これを踏まえた上で具体的な数を数えると以下のようになります(例として最初の3つを数えます):
111.222.333.444: 50回以上(最も多い)
123.234.345.456: 1回
321.432.543.654: 1回
...
その結果、最も多いアクセスを行っている5つのIPアドレスは以下の通りです(具体的なアクセス数は省略):
111.222.333.444
101.202.303.404
123.234.345.456
321.432.543.654
100.200.300.400
このリストは示例として挙げた数に基づいており、全てのログエントリを精確に分析していません。正確な結果を得るには、全てのログエントリをカウントする必要があります。
【まとめ】
簡易的な検証ではありましたが、ある程度想定通りの結果は得られました。
ツール等を使わずに手っ取り早く調査したい場合はChatGPTを活用するのも良いかと思います。
また、GPT4でログファイルを添付することで、違った結果が得られるかもしれません。
※冒頭でも記載しましたが、アクセスログは重要情報が含まれている場合があるため、取り扱い注意です!!