Apacheアクセスログの解析とは?
Webサーバー(Apache)のアクセスログには、日々のアクセス履歴だけでなく、サーバーに対する偵察・攻撃・侵入の試みといった「危険な足跡」も記録されています。
今回は、実際に取得したApacheログから検出された深刻な不正アクセスの実例と、それに対する具体的な防御手順をご紹介します。
危険な不正アクセスの実態
ログを詳細に分析した結果、通常のクローラーとは異なる、明確に悪意を持ったアクセスが多数確認されました。特に危険度の高い3つのパターンを以下に紹介します。
A. サーバー破壊を狙う「コマンドインジェクション」
最も危険な攻撃の一つが、リクエストURLにOSコマンドを埋め込む「コマンドインジェクション」です。
- 攻撃の目的:ボットネット感染
- 検出されたログの例:
GET /shell?cd+/tmp;rm+-rf+*;wget+...このようなリクエストは、サーバーのテンポラリディレクトリに移動し、悪意のある実行ファイル(例:Mozi.a)をダウンロード・実行してボットネットに組み込むことを目的としています。
B. 管理画面を狙う「総当たり攻撃(ブルートフォース)」
特定のログインフォームに対して、短時間で大量のパスワードを試行する攻撃です。
- 攻撃の目的:不正ログイン
- 検出されたログの例:
POST /boaform/admin/formLoginこの攻撃では、辞書攻撃やパスワードリスト攻撃が行われ、User-Agentには Python-urllib などの自動化ツールが使用されていました。
C. 機密情報を狙う「情報収集・スキャン」
本格的な攻撃の前段階として、サーバーの構成や脆弱性を探る偵察活動が行われます。
- 設定ファイルの窃取:
GET /.env
GET /.git/config- スキャンツールの使用:User-Agentに
ivre-masscanやzgrabなどのスキャナ名が記録。 - 既知の脆弱性パスの探索:
/actuator/gateway/routes
/cgi-bin/luci/;stok=/localeIPアドレスの「悪質度」を評価する(AbuseIPDBの活用)
不正アクセス元のIPアドレスが過去にも悪質な行動をしていたかを確認するには、AbuseIPDBという脅威インテリジェンスサービスが有効です。
評価手順
- IPアドレスの抽出
ログから重複のないIPアドレスリストを作成します。 - APIキーの取得
AbuseIPDBに登録し、APIキー(例:daily_ip_check_script)を取得します。 - スクリプトで一括照会
PythonなどでAPIに問い合わせ、各IPの「Abuse Confidence Score(不正利用信頼度スコア)」を取得します。 - 結果の分析
スコアが80%以上のIPは、世界中で悪質な活動に関与した実績が高いと判断できます。
このようにして、「ログ上で不審なIP」かつ「過去にも悪質な実績あり」というIPを特定できれば、確実なブロック対象として扱えます。
【実践編】firewalld + ipsetで一斉ブロック!
悪質と判定されたIPアドレスをOSレベルでブロックするには、Linuxのfirewalldとipsetの組み合わせが効果的です。
ステップ1:ipsetの作成
# ipsetの作成(永続化)
sudo firewall-cmd --permanent --new-ipset=bad_ips --type=hash:ip
# firewalldの設定をリロード
sudo firewall-cmd --reload
ステップ2:IPアドレスの一括登録
# IPリストファイルから読み込み、ipsetに追加
IP_LIST="high_score_ips.txt"
IPSET_NAME="bad_ips"
while read ip; do
sudo firewall-cmd --permanent --ipset=$IPSET_NAME --add-entry=$ip
done < "$IP_LIST"
# 設定を反映
sudo firewall-cmd --reloadステップ3:ipset全体をブロックするルールを追加
# bad_ipsリストからのアクセスをすべてドロップ
sudo firewall-cmd --permanent --add-rich-rule='rule source ipset="bad_ips" drop'
# 設定の最終リロード
sudo firewall-cmd --reloadこれで、Apacheに届く前に不正IPを遮断できるようになります。
まとめ
Apacheログの分析は、サーバー防御の第一歩です。
- 不正なパターンを検出
- 外部情報(AbuseIPDB)で評価
- firewalld + ipsetで自動ブロック
このように、ログ解析 → 評価 → 自動防御の流れを構築することで、より安全なサーバー運用が可能になります。
さらに、WAFの導入により、コマンドインジェクションやSQLインジェクションといったアプリケーション層の攻撃にも対応できます。
今回のIPブロックと組み合わせることで、ネットワーク層とアプリケーション層の多層防御が実現できます。