やりたいこと
AWSのCloudWatchやZabbix等の監視系ツールで、CPUやメモリ使用率が一時的にスパイクすることがある。
原因は一時的な、アクセス数が増えた場合もあるが、今日において、攻撃を受けている場合も多い。
その際の私なりの、Apacheアクセスログの分析方法を記載したいと思います。
前提条件
- WebサーバがApacheであること。
- Webサーバ内の/var/log/httpd/access.logのファイルを自分の取得しておく。
※ファイルが肥大化していると、ダウンロードが大変になるので、適切なログローテートが行われていること。 - ApacheLogViewerをダウンロードしておくこと(https://www.vector.co.jp/soft/dl/win95/net/se252609.html)。
エクセル等で、フィルタして分析することもできるが、こちらであれば自動的にグラフ等を作ってくれるため、分析がしやすい。
アクセスログをApacheLogViewerで分析する
-
ApacheLogViewer(以下exe)を開き画面左上の「…」ボタンをクリックし、分析したいアクセスログファイルを選択する。
-
アクセスログが表示されるので、この時点でざっと確認し、赤字が連続している箇所がないか探す。
※監視ツールで折れ線グラフが一番跳ね上がっていた時間帯で確認する。
※基本的に404エラーでCPU使用率が跳ね上がることが多い。
-
赤字(エラーログ)内で以下がないか確認する
- Request欄のURLが実際には存在しないURL
- Agent欄のユーザーエージェント(どのブラウザ・OSでアクセスしているか)に共通しているのがあるか。
※Mozilla等から始まるものは普通のブラウザであることが多い。
※以下URLに、ユーザーエージェントを貼り付けることで、ブラウザ・OSの確認が可能。
http://mobile.shinsv.mydns.jp/useragent_check/ - 同じユーザーエージェントが大量に連続していないか。
詳細に分析する場合
アクセスログが大きい場合、赤い行の共通性等が分からない場合は、統計分析を行う。
- 画面左下Statisticsボタンをクリックする。
- 上のタブ内でErrorを選択し、下のタブ内で日時・ユーザーエージェント、での集計結果を確認する。
※個人的にはRequest、Userの順で確認すると良い。
※以下画像は例として、脆弱性診断ツールのOpenVASによる攻撃のパターンです。
※画像内のログは手動で作成したもののため、実際に見るログは違うものになります。
##備考
AWSでロードバランサ経由でアクセスがされている場合は、Host欄のIPがロードバランサのIPになってしまうためアクセス元の分析ができません。ユーザーエージェントも偽造ができるらしいので、例えばアンドロイドかつクローム経由だった場合は、スマホで攻撃するとは考えられないので、偽造されていると考えられます。
もし、ApacheLogViewerがダウンロードできない現場の場合は、テキストエディタ等で、404がある行を色付けし、ざっと見るだけでも原因がわかる場合があります。
他の便利な分析方法等をご存じの方は是非教えて下さい。