इसे छोड़कर कंटेंट पर जाएं

रनर

runner.sh एक सूट ऑर्केस्ट्रेटर है जो किसी सूट डायरेक्टरी में क्रमबद्ध सभी नंबरयुक्त स्क्रिप्ट को क्रम से निष्पादित करता है, आउटपुट कैप्चर करता है, और परिणाम मेटाडेटा रिकॉर्ड करता है। यह VM पर /opt/traffic-generator/suites/runner.sh पर इंस्टॉल होता है।

Terminal window
runner.sh <suite-name> [--dry-run]

तर्क:

तर्कआवश्यकविवरण
suite-nameहाँसूट डायरेक्टरी का नाम (जैसे, web-app-attacks, api-attacks)
--dry-runनहींकोई भी स्क्रिप्ट चलाए बिना यह प्रिंट करता है कि क्या निष्पादित होगा

उदाहरण:

Terminal window
# Run the web-app-attacks suite
/opt/traffic-generator/suites/runner.sh web-app-attacks
# Dry-run to preview api-attacks scripts
/opt/traffic-generator/suites/runner.sh api-attacks --dry-run
# Run bot simulation
/opt/traffic-generator/suites/runner.sh bot-simulation

रनर /opt/traffic-generator/config.env से कॉन्फ़िगरेशन पढ़ता है:

Terminal window
# Required: target FQDN (F5 XC load balancer domain)
TARGET_FQDN=demo.example.com
# Optional: direct origin IP for baseline testing (bypasses F5 XC)
TARGET_ORIGIN_IP=

यह फ़ाइल Terraform प्रोविज़निंग के दौरान target_fqdn और target_origin_ip वेरिएबल से स्वचालित रूप से लिखी जाती है। डिप्लॉयमेंट के बाद लक्ष्य बदलने के लिए, VM पर इस फ़ाइल को सीधे संपादित करें।

एनवायरनमेंट वेरिएबल ओवरराइड

Section titled “एनवायरनमेंट वेरिएबल ओवरराइड”

config.env में कोई भी वेरिएबल सूट चलाने से पहले उसे एक्सपोर्ट करके ओवरराइड किया जा सकता है:

Terminal window
# Override target FQDN for a single run
TARGET_FQDN=staging.example.com /opt/traffic-generator/suites/runner.sh web-app-attacks
# Override via export
export TARGET_FQDN=staging.example.com
/opt/traffic-generator/suites/runner.sh web-app-attacks

कॉन्फ़िग फ़ाइल पाथ को भी ओवरराइड किया जा सकता है:

Terminal window
CONFIG_FILE=/tmp/my-config.env /opt/traffic-generator/suites/runner.sh web-app-attacks

--dry-run फ्लैग प्रत्येक स्क्रिप्ट को चलाए बिना यह प्रिंट करता है कि कौन सी स्क्रिप्ट निष्पादित होती:

Terminal window
/opt/traffic-generator/suites/runner.sh web-app-attacks --dry-run

आउटपुट:

=== 01-sqli.sh ===
[DRY-RUN] Would execute: /opt/traffic-generator/suites/web-app-attacks/01-sqli.sh demo.example.com
=== 02-xss.sh ===
[DRY-RUN] Would execute: /opt/traffic-generator/suites/web-app-attacks/02-xss.sh demo.example.com
=== 03-command-injection.sh ===
[DRY-RUN] Would execute: /opt/traffic-generator/suites/web-app-attacks/03-command-injection.sh demo.example.com
=== 04-path-traversal.sh ===
[DRY-RUN] Would execute: /opt/traffic-generator/suites/web-app-attacks/04-path-traversal.sh demo.example.com
=== 05-nikto-scan.sh ===
[DRY-RUN] Would execute: /opt/traffic-generator/suites/web-app-attacks/05-nikto-scan.sh demo.example.com
=== 06-nuclei-scan.sh ===
[DRY-RUN] Would execute: /opt/traffic-generator/suites/web-app-attacks/06-nuclei-scan.sh demo.example.com
=== Suite Complete ===
Passed: 0 | Failed: 0 | Skipped: 6
Results: /opt/traffic-generator/results/20260425-143000-web-app-attacks

डिप्लॉयमेंट के बाद या किसी नए लक्ष्य के विरुद्ध सूट चलाने से पहले सूट संरचना सत्यापित करने के लिए ड्राई-रन का उपयोग करें।

रिज़ल्ट्स डायरेक्टरी

Section titled “रिज़ल्ट्स डायरेक्टरी”

प्रत्येक सूट रन एक टाइमस्टैम्पयुक्त रिज़ल्ट्स डायरेक्टरी बनाता है:

/opt/traffic-generator/results/<YYYYMMDD-HHMMSS>-<suite-name>/

संरचना:

/opt/traffic-generator/results/20260425-143000-web-app-attacks/
meta.json
01-sqli.sh.log
02-xss.sh.log
03-command-injection.sh.log
04-path-traversal.sh.log
05-nikto-scan.sh.log
06-nuclei-scan.sh.log

प्रत्येक स्क्रिप्ट का stdout और stderr स्क्रिप्ट के नाम पर एक .log फ़ाइल में कैप्चर होता है।

meta.json फ़ाइल सूट निष्पादन मेटाडेटा रिकॉर्ड करती है:

{
"suite": "web-app-attacks",
"target": "demo.example.com",
"started": "2026-04-25T14:30:00Z",
"completed": "2026-04-25T14:45:23Z",
"status": "completed",
"passed": 5,
"failed": 1,
"skipped": 0
}
फ़ील्डविवरण
suiteसूट का नाम
targetरन के लिए उपयोग किया गया लक्ष्य FQDN
startedसूट शुरू होने का UTC टाइमस्टैम्प
completedसूट समाप्त होने का UTC टाइमस्टैम्प
statusनिष्पादन के दौरान running, समाप्त होने पर completed
passedकोड 0 से बाहर निकलने वाली स्क्रिप्ट की संख्या
failedगैर-शून्य कोड से बाहर निकलने वाली स्क्रिप्ट की संख्या
skippedछोड़ी गई स्क्रिप्ट की संख्या (निष्पादन योग्य नहीं या ड्राई-रन)

अलग-अलग स्क्रिप्ट चलाना

Section titled “अलग-अलग स्क्रिप्ट चलाना”

प्रत्येक स्क्रिप्ट को रनर के बिना स्टैंडअलोन निष्पादित किया जा सकता है:

Terminal window
# Run a single script directly
/opt/traffic-generator/suites/web-app-attacks/01-sqli.sh demo.example.com
# Run a specific API attack
/opt/traffic-generator/suites/api-attacks/01-vampi-owasp-top10.sh demo.example.com

स्क्रिप्ट पहले पोज़िशनल तर्क के रूप में लक्ष्य FQDN स्वीकार करती हैं। वे config.env को सीधे नहीं पढ़तीं — केवल रनर ऐसा करता है। स्टैंडअलोन चलाते समय, आपको FQDN स्पष्ट रूप से पास करना होगा।

क्रम में सभी सूट चलाना

Section titled “क्रम में सभी सूट चलाना”

प्रत्येक सूट को एक के बाद एक चलाने के लिए:

Terminal window
for suite in web-app-attacks api-attacks bot-simulation reconnaissance ssl-scanning javascript-exploits traffic-generation; do
echo "========================================="
echo "Starting suite: ${suite}"
echo "========================================="
/opt/traffic-generator/suites/runner.sh "$suite"
echo ""
done

यह सभी F5 XC सुरक्षा सुविधाओं में व्यापक ट्रैफ़िक उत्पन्न करता है। लक्ष्य के प्रतिक्रिया समय के आधार पर पूर्ण रन में 45-80 मिनट लग सकते हैं।

SSH के माध्यम से रिमोट निष्पादन

Section titled “SSH के माध्यम से रिमोट निष्पादन”

SSH सत्र बनाए रखे बिना अपनी लोकल मशीन से सूट चलाएँ:

Terminal window
TGEN_IP=$(terraform output -raw public_ip)
# Run a single suite
ssh azureuser@${TGEN_IP} '/opt/traffic-generator/suites/runner.sh web-app-attacks'
# Run a suite with target override
ssh azureuser@${TGEN_IP} 'TARGET_FQDN=staging.example.com /opt/traffic-generator/suites/runner.sh api-attacks'
# Run in background (disconnection-safe)
ssh azureuser@${TGEN_IP} 'nohup /opt/traffic-generator/suites/runner.sh web-app-attacks > /tmp/web-app-attacks.log 2>&1 &'
# Check results later
ssh azureuser@${TGEN_IP} 'ls -la /opt/traffic-generator/results/ | tail -5'
ssh azureuser@${TGEN_IP} 'cat /opt/traffic-generator/results/$(ls -t /opt/traffic-generator/results/ | head -1)/meta.json'

लंबे समय तक चलने वाले सूट के लिए, SSH डिस्कनेक्शन से प्रक्रिया को मारने से बचाने के लिए nohup या tmux का उपयोग करें:

Terminal window
ssh azureuser@${TGEN_IP} 'tmux new-session -d -s traffic "/opt/traffic-generator/suites/runner.sh reconnaissance"'
# Reattach later to watch progress
ssh -t azureuser@${TGEN_IP} 'tmux attach-session -t traffic'

निष्पादन प्रवाह

Section titled “निष्पादन प्रवाह”
  1. कॉन्फ़िगरेशन लोड करें — रनर config.env (या CONFIG_FILE ओवरराइड) पढ़ता है, फिर एनवायरनमेंट में TARGET_FQDN की जाँच करता है।

  2. सूट सत्यापित करें — पुष्टि करता है कि नामित सूट डायरेक्टरी सूट डायरेक्टरी के अंतर्गत मौजूद है। न मिलने पर उपलब्ध सूट सूचीबद्ध करता है।

  3. रिज़ल्ट्स डायरेक्टरी बनाएँ/opt/traffic-generator/results/<timestamp>-<suite>/ बनाता है और status: running के साथ प्रारंभिक meta.json लिखता है।

  4. स्क्रिप्ट निष्पादित करें — सूट डायरेक्टरी में [0-9]* से मेल खाने वाली फ़ाइलों के माध्यम से, नाम से क्रमबद्ध, पुनरावृत्ति करता है। गैर-निष्पादन योग्य फ़ाइलें छोड़ देता है। पहले तर्क के रूप में TARGET_FQDN पास करता है। आउटपुट को <script-name>.log में कैप्चर करता है।

  5. परिणाम रिकॉर्ड करेंmeta.json को पूर्णता टाइमस्टैम्प और पास/फेल/स्किप काउंट के साथ अपडेट करता है।