Skip to content

此工具用於從 Sentry Clickhouse 資料庫中提取並分析 failure rate 100% 的惡意請求,協助設定 WAF 規則。

License

Notifications You must be signed in to change notification settings

jlhg/export-sentry-malicious-requests

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

Sentry 惡意請求分析工具

此工具用於從 Sentry Clickhouse 資料庫中提取並分析 failure rate 100% 的惡意請求,協助設定 WAF 規則。

📋 功能說明

  • ✅ 自動從 Clickhouse 查詢 failure rate 100% 的請求
  • ✅ 將結果匯出為 CSV 格式,方便後續處理
  • ✅ 自動分析攻擊模式並分類
  • ✅ 產生詳細的 Markdown 分析報告
  • ✅ 提供可直接使用的 WAF 規則建議 (Cloudflare 格式)

🚀 快速開始

執行方式

cd /home/debian/service/sentry
./export_malicious_requests.sh

產生的檔案

執行後會產生兩個檔案:

  1. malicious_requests_100_failure.csv

    • CSV 格式的完整資料
    • 包含:HTTP method,路徑,請求次數,錯誤類型,時間範圍
  2. malicious_requests_analysis.md

    • Markdown 格式的分析報告
    • 包含:統計圖表,攻擊模式分類,WAF 規則建議

📊 輸出範例

CSV 檔案格式

http_method,transaction_name,total_requests,not_found_404,internal_error_5xx,unauthenticated_401,other_errors,first_seen,last_seen
GET,/*,51521,0,51521,0,0,2024-08-28 10:01:08,2025-10-13 13:58:29
GET,/.git/config,399,0,399,0,0,2024-09-08 18:23:31,2025-10-14 00:10:36
GET,/.env,322,0,322,0,0,2024-09-15 06:30:16,2025-10-13 09:31:30

報告內容

報告包含以下章節:

  • 📊 資料概述
  • 🎯 攻擊模式分類統計
  • 🔝 Top 20 惡意請求路徑
  • 🛡️ WAF 規則建議
  • 🔍 詳細攻擊模式範例
  • ✅ 建議措施

⚙️ 進階用法

自訂輸出檔案名稱

編輯 export_malicious_requests.sh,修改以下變數:

OUTPUT_CSV="${SCRIPT_DIR}/malicious_requests_$(date +%Y%m%d).csv"
OUTPUT_MD="${SCRIPT_DIR}/malicious_requests_analysis_$(date +%Y%m%d).md"

調整查詢條件

如需修改查詢條件 (例如:failure rate >= 90% 而非 100%),編輯 script 中的 SQL 查詢:

-- 原本:failure rate = 100%
HAVING countIf(transaction_status NOT IN (0, 2)) * 100.0 / COUNT(*) = 100

-- 改為:failure rate >= 90%
HAVING countIf(transaction_status NOT IN (0, 2)) * 100.0 / COUNT(*) >= 90

只匯出特定時間範圍

在 SQL 查詢中加入時間條件:

WHERE http_method IS NOT NULL
  AND http_method != ''
  AND transaction_name IS NOT NULL
  AND transaction_name != ''
  AND finish_ts >= now() - INTERVAL 30 DAY  -- 只查詢最近 30 天

🛡️ 如何使用 WAF 規則

Cloudflare WAF 設定步驟

  1. 登入 Cloudflare Dashboard
  2. 選擇您的網域
  3. 前往 Security > WAF > Custom rules
  4. 點擊 Create rule
  5. 複製報告中的 WAF 規則表達式
  6. 先設定為 Log 模式觀察
  7. 確認無誤判後改為 Block 模式

規則優先順序建議

  1. 目錄遍歷攻擊 (最高優先級)
  2. 敏感檔案存取攻擊
  3. 命令注入攻擊
  4. SQL 注入/XSS
  5. PHP/WordPress 探測
  6. 後台探測
  7. 通配符攻擊 (需謹慎設定)

測試規則

設定規則後,可使用以下方式測試:

# 測試敏感檔案阻擋
curl -I https://your-domain.com/.git/config

# 測試 PHP 探測阻擋
curl -I https://your-domain.com/phpinfo.php

# 預期結果: 403 Forbidden 或 Cloudflare 錯誤頁面

🔧 疑難排解

問題: Clickhouse 服務未運行

# 檢查服務狀態
docker compose -f docker-compose.yml ps clickhouse

# 啟動服務
docker compose -f docker-compose.yml up -d clickhouse

問題: 權限錯誤

# 確認 script 有執行權限
chmod +x export_malicious_requests.sh

# 確認目錄有寫入權限
ls -ld /home/debian/service/sentry

問題: 查詢超時

如果資料量過大導致查詢超時,可以:

  1. 增加查詢超時時間 (在 script 中修改)
  2. 限制查詢時間範圍 (只查詢最近 N 天)
  3. 增加最小請求次數過濾條件

問題: 空結果

# 檢查資料庫中是否有資料
docker compose -f docker-compose.yml exec -T clickhouse clickhouse-client --query "
SELECT COUNT(*) FROM default.transactions_local
"

# 檢查是否有失敗的 transaction
docker compose -f docker-compose.yml exec -T clickhouse clickhouse-client --query "
SELECT transaction_status, COUNT(*)
FROM default.transactions_local
GROUP BY transaction_status
"

📈 資料解讀指南

Transaction Status 代碼

  • 0 = OK (2xx)
  • 1 = Cancelled
  • 2 = Unknown (default)
  • 3 = Invalid Argument
  • 4 = Deadline Exceeded
  • 5 = Not Found (404)
  • 7 = Already Exists
  • 13 = Internal Error (5xx)
  • 14 = Unavailable
  • 16 = Unauthenticated (401)

Failure Rate 計算

Failure Rate = (非 0 和 2 的 status 數量) / 總數量 * 100%

此工具只匯出 Failure Rate = 100% 的請求,代表這些請求從未成功過。

攻擊模式優先級

根據嚴重程度排序:

  1. 目錄遍歷 - 可能導致系統檔案洩漏
  2. 命令注入 - 可能執行任意系統命令
  3. 敏感檔案探測 - 可能洩漏憑證、設定
  4. SQL 注入 - 可能導致資料庫洩漏
  5. 後台探測 - 可能暴力破解管理介面
  6. API 探測 - 可能找到未授權的 API
  7. PHP/WordPress - 一般性掃描,風險較低

📝 最佳實踐

定期檢視

  • 每週: 執行 script 並查看新的攻擊模式
  • 每月: 更新 WAF 規則
  • 每季: 檢視 WAF 規則有效性

監控告警

建議設定以下告警:

  • 惡意請求數量超過閾值
  • 出現新的攻擊模式
  • 特定路徑的失敗率突然上升

文件記錄

  • 記錄每次更新 WAF 規則的日期和原因
  • 保留歷史報告,追蹤攻擊趨勢
  • 記錄誤判情況並調整規則

🔗 相關資源

📄 授權

此專案採用 MIT License - 詳見 LICENSE 檔案

About

此工具用於從 Sentry Clickhouse 資料庫中提取並分析 failure rate 100% 的惡意請求,協助設定 WAF 規則。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages