
AWS WAF v2 लॉग्स को CloudWatch, S3 और सैंपलिंग API से ब्राउज़ और रीप्ले करने के लिए टर्मिनल UI, जिसमें YAML फ़िल्टरिंग, ऑथ डिटेक्शन और curl/ब्राउज़र रीप्ले शामिल है।
इंटरैक्टिव TUI के साथ AWS WAF v2 लॉग ब्राउज़र और रीप्लेयर। CloudWatch, S3, और WAF सैंपलिंग API (SQLite कैशिंग के साथ) से लॉग खींचता है, उन्हें ऑथ डिटेक्शन और YAML-आधारित फ़िल्टरिंग के साथ स्प्लिट-पेन टर्मिनल UI में प्रदर्शित करता है, और पूर्ण हेडर/कुकी/बॉडी फिडेलिटी के साथ Firefox, Chrome, या curl के माध्यम से रिक्वेस्ट रीप्ले करता है। curl, JSON, और HAR में बैच एक्सपोर्ट का समर्थन करता है।
uv pip install waf-fu
pipx install waf-fu
uv pip install git+https://gitrdun.trustedsec.net/cloud/aws/waf-fu.git
pipx install git+https://gitrdun.trustedsec.net/cloud/aws/waf-fu.git
git clone https://gitrdun.trustedsec.net/cloud/aws/waf-fu.git
cd waf-fu
uv pip install .
pipx install .
शामिल uv.toml uv pip को वर्चुअलएनव बनाने के बजाय सिस्टम Python में इंस्टॉल करने के लिए कॉन्फ़िगर करता है। pipx और uv tool install हमेशा अपने स्वयं के आइसोलेटेड एनवायरनमेंट का उपयोग करते हैं।
Python >= 3.12
AWS क्रेडेंशियल्स प्रोफ़ाइल, एनवायरनमेंट वेरिएबल्स, या इंस्टेंस रोल के माध्यम से कॉन्फ़िगर किए गए। प्रति-स्रोत आवश्यकताओं के लिए IAM Permissions देखें।
| पैकेज | न्यूनतम संस्करण | किसके लिए आवश्यक |
|---|---|---|
| boto3 | any | AWS लॉग फ़ेचिंग |
| selenium | 4.26 | Chrome और Firefox रीप्ले |
| trio | any | Chrome CDP रीप्ले इंटरनल्स |
boto3 और selenium pyproject.toml में घोषित हैं और स्वचालित रूप से इंस्टॉल होते हैं। trio Chrome बैकएंड की ट्रांज़िटिव डिपेंडेंसी है।
ब्राउज़र रीप्ले वैकल्पिक है। Curl रीप्ले बिना किसी अतिरिक्त डिपेंडेंसी के काम करता है।
Firefox (हेडर फिडेलिटी के लिए अनुशंसित):
| कंपोनेंट | न्यूनतम संस्करण | इंस्टॉल |
|---|---|---|
| Firefox | 120 | sudo dnf install firefox / sudo apt install firefox |
| geckodriver | 0.35.0 | sudo dnf install geckodriver / sudo apt install firefox-geckodriver या github.com/mozilla/geckodriver/releases (>= 0.35.0) |
| selenium | 4.26 | uv pip install 'selenium>=4.26' |
Firefox रीप्ले मूल रिक्वेस्ट की मेथड, हेडर, कुकीज़, और बॉडी इंजेक्ट करने के लिए WebDriver BiDi नेटवर्क इंटरसेप्शन का उपयोग करता है। BiDi नेटवर्क समर्थन के लिए geckodriver >= 0.35 और selenium >= 4.26 आवश्यक है। पुराने संस्करण XHR-आधारित दृष्टिकोण पर वापस आ जाते हैं जो कस्टम हेडर इंजेक्ट नहीं कर सकता।
Chrome / Chromium:
| कंपोनेंट | न्यूनतम संस्करण | इंस्टॉल |
|---|---|---|
| Chrome | 118 | sudo dnf install google-chrome-stable / sudo apt install google-chrome-stable या Chromium |
| chromedriver | 118 | sudo dnf install chromedriver / sudo apt install chromium-driver या googlechromelabs.github.io/chrome-for-testing |
| selenium | 4.26 | uv pip install 'selenium>=4.26' |
Chrome रीप्ले रिक्वेस्ट को इंटरसेप्ट और संशोधित करने के लिए CDP (Chrome DevTools Protocol) Fetch डोमेन का उपयोग करता है। मेथड, हेडर, बॉडी, और कुकीज़ सभी CDP के माध्यम से इंजेक्ट किए जाते हैं।
यदि ऑटो-डिटेक्शन सही बाइनरी नहीं ढूंढ पाता है तो ड्राइवर पाथ को --chromedriver PATH और --geckodriver PATH से ओवरराइड किया जा सकता है।
# Interactive TUI -- browse and replay
waf-fu --log-group "aws-waf-logs-my-acl"
# No log group -- interactively select from discovered groups
waf-fu --profile myprofile --region us-east-1
# S3 WAF logs instead of CloudWatch
waf-fu --s3-bucket aws-waf-logs-my-bucket
# Discover and fetch every log source across all regions
waf-fu --inventory
# Pre-filter before the TUI opens
waf-fu --start 4h --action BLOCK
# Offline mode -- cached records only, no AWS calls
waf-fu --db-only
# Replay through a proxy (Burp, mitmproxy, etc.)
waf-fu --log-group "aws-waf-logs-my-acl" --proxy 127.0.0.1:8080
# Non-interactive batch export
waf-fu --log-group "aws-waf-logs-my-acl" --mode batch-curl -o replay.sh
# Export cached records to JSON
waf-fu --export logs.json
# Debug mode -- log replay details to file (client data redacted)
waf-fu --log-group "aws-waf-logs-my-acl" --debug
waf-fu तीन स्रोतों से WAF लॉग खींचता है और उन्हें प्रति-रिक्वेस्ट मर्ज करता है:
| स्रोत | CLI फ़्लैग | डेटा |
|---|---|---|
| CloudWatch | --log-group (डिफ़ॉल्ट) | पूर्ण WAF लॉग JSON (हेडर, URI, क्वेरी, एक्शन) |
| S3 | --s3-bucket | CloudWatch के समान, S3 डिलीवरी से |
| WAF API | --log-location waf | अनरिडैक्टेड फ़ील्ड्स के साथ सैंपल्ड रिक्वेस्ट |
एकल स्रोत तक सीमित करने के लिए --log-location cwl|s3|waf का उपयोग करें, या सभी क्षेत्रों में सभी स्रोतों को स्वचालित रूप से खोजने और फ़ेच करने के लिए --inventory का उपयोग करें।
विभिन्न स्रोतों के रिकॉर्ड कॉरिलेशन की द्वारा मर्ज किए जाते हैं ताकि आप प्रति रिक्वेस्ट एक एकीकृत दृश्य देखें, प्रत्येक से सबसे समृद्ध डेटा के साथ।
प्रत्येक स्रोत को अपनी IAM अनुमतियों की आवश्यकता होती है, जो इसे ट्रिगर करने वाले CLI फ़्लैग्स तक सीमित होती हैं।
आवश्यक: डिफ़ॉल्ट ऑपरेशन, --log-location cwl
logs:FilterLogEvents -- CloudWatch से लॉग रिकॉर्ड फ़ेच करेंlogs:DescribeLogGroups -- aws-waf-logs-* से मेल खाने वाले लॉग ग्रुप खोजेंआवश्यक: --s3-bucket, --log-location s3, --inventory
s3:ListAllMyBuckets -- नाम प्रीफ़िक्स द्वारा WAF लॉग बकेट खोजेंs3:ListBucket -- WAF लॉग बकेट में लॉग ऑब्जेक्ट्स की सूची बनाएंs3:GetObject -- gzip-कंप्रेस्ड लॉग फ़ाइलें डाउनलोड करेंआवश्यक: --log-location waf, --inventory, ऑटो-एनरिचमेंट
wafv2:ListWebACLs -- web ACL खोजेंwafv2:GetWebACL -- सैंपल्ड रिक्वेस्ट क्वेरी के लिए नियमों की गणना करेंwafv2:GetLoggingConfiguration -- खोजें कि ACL कौन से लॉग डेस्टिनेशन (CWL, S3) का उपयोग करता हैwafv2:GetSampledRequests -- अनरिडैक्टेड रिक्वेस्ट सैंपल प्राप्त करें (RedactedFields को बायपास करता है)न्यूनतम व्यवहार्य: केवल CloudWatch Logs अनुमतियाँ आवश्यक हैं। S3 और WAFv2 अनुमतियाँ वैकल्पिक हैं और अतिरिक्त डेटा स्रोत सक्षम करती हैं। अनुमतियाँ गायब होने पर टूल शालीनता से वापस आ जाता है।