- الرئيسية
- مولد حركة المرور
- المُشغِّل
المُشغِّل
نظرة عامة
Section titled “نظرة عامة”runner.sh هو منسق المجموعات الذي ينفّذ جميع السكريبتات المُرقَّمة في دليل المجموعة بالترتيب، ويلتقط المخرجات، ويسجّل البيانات الوصفية للنتائج. يتم تثبيته في /opt/traffic-generator/suites/runner.sh على الجهاز الافتراضي.
الاستخدام
Section titled “الاستخدام”runner.sh <suite-name> [--dry-run]المعاملات:
| المعامل | مطلوب | الوصف |
|---|---|---|
suite-name | نعم | اسم دليل المجموعة (مثل: web-app-attacks، api-attacks) |
--dry-run | لا | طباعة ما سيتم تنفيذه دون تشغيل أي سكريبتات |
أمثلة:
# تشغيل مجموعة web-app-attacks/opt/traffic-generator/suites/runner.sh web-app-attacks
# تشغيل تجريبي لمعاينة سكريبتات api-attacks/opt/traffic-generator/suites/runner.sh api-attacks --dry-run
# تشغيل محاكاة البوت/opt/traffic-generator/suites/runner.sh bot-simulationالإعداد
Section titled “الإعداد”config.env
Section titled “config.env”يقرأ المُشغِّل الإعداد من /opt/traffic-generator/config.env:
# مطلوب: النطاق المؤهل بالكامل للهدف (نطاق موازن التحميل F5 XC)TARGET_FQDN=demo.example.com
# اختياري: عنوان IP المباشر للخادم الأصلي لاختبار الأساس (يتجاوز F5 XC)TARGET_ORIGIN_IP=يُكتب هذا الملف تلقائيًا أثناء توفير Terraform من متغيرات target_fqdn وtarget_origin_ip. لتغيير الهدف بعد النشر، يمكن تعديل هذا الملف مباشرةً على الجهاز الافتراضي.
تجاوز متغيرات البيئة
Section titled “تجاوز متغيرات البيئة”يمكن تجاوز أي متغير في config.env بتصديره قبل تشغيل المجموعة:
# تجاوز النطاق المؤهل بالكامل للهدف لتشغيل واحدTARGET_FQDN=staging.example.com /opt/traffic-generator/suites/runner.sh web-app-attacks
# التجاوز عبر التصديرexport TARGET_FQDN=staging.example.com/opt/traffic-generator/suites/runner.sh web-app-attacksيمكن أيضًا تجاوز مسار ملف الإعداد نفسه:
CONFIG_FILE=/tmp/my-config.env /opt/traffic-generator/suites/runner.sh web-app-attacksوضع التشغيل التجريبي
Section titled “وضع التشغيل التجريبي”يُطبع الراية --dry-run كل سكريبت كان سيتم تنفيذه دون تشغيله فعليًا:
/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: 6Results: /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يُلتقط الإخراج القياسي والإخراج القياسي للأخطاء لكل سكريبت في ملف .log يحمل اسم السكريبت.
تنسيق meta.json
Section titled “تنسيق meta.json”يسجّل ملف 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 | النطاق المؤهل بالكامل للهدف المستخدم في التشغيل |
started | الطابع الزمني بتوقيت UTC عند بدء المجموعة |
completed | الطابع الزمني بتوقيت UTC عند انتهاء المجموعة |
status | running أثناء التنفيذ، وcompleted عند الانتهاء |
passed | عدد السكريبتات التي خرجت بالرمز 0 |
failed | عدد السكريبتات التي خرجت برمز غير صفري |
skipped | عدد السكريبتات التي تم تخطيها (غير قابلة للتنفيذ أو في وضع التشغيل التجريبي) |
تشغيل السكريبتات الفردية
Section titled “تشغيل السكريبتات الفردية”يمكن تنفيذ كل سكريبت بشكل مستقل دون المُشغِّل:
# تشغيل سكريبت واحد مباشرةً/opt/traffic-generator/suites/web-app-attacks/01-sqli.sh demo.example.com
# تشغيل هجوم API محدد/opt/traffic-generator/suites/api-attacks/01-vampi-owasp-top10.sh demo.example.comتقبل السكريبتات النطاق المؤهل بالكامل للهدف كأول معامل موضعي. لا تقرأ config.env مباشرةً — يفعل ذلك المُشغِّل فقط. عند التشغيل المستقل، يجب تمرير النطاق المؤهل بالكامل صراحةً.
تشغيل جميع المجموعات بالتسلسل
Section titled “تشغيل جميع المجموعات بالتسلسل”لتشغيل كل مجموعة واحدة تلو الأخرى:
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:
TGEN_IP=$(terraform output -raw public_ip)
# تشغيل مجموعة واحدةssh azureuser@${TGEN_IP} '/opt/traffic-generator/suites/runner.sh web-app-attacks'
# تشغيل مجموعة مع تجاوز الهدفssh azureuser@${TGEN_IP} 'TARGET_FQDN=staging.example.com /opt/traffic-generator/suites/runner.sh api-attacks'
# التشغيل في الخلفية (آمن عند قطع الاتصال)ssh azureuser@${TGEN_IP} 'nohup /opt/traffic-generator/suites/runner.sh web-app-attacks > /tmp/web-app-attacks.log 2>&1 &'
# التحقق من النتائج لاحقًا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'للمجموعات طويلة التشغيل، استخدم nohup أو tmux لمنع قطع اتصال SSH من إيقاف العملية:
ssh azureuser@${TGEN_IP} 'tmux new-session -d -s traffic "/opt/traffic-generator/suites/runner.sh reconnaissance"'
# إعادة الاتصال لاحقًا لمتابعة التقدمssh -t azureuser@${TGEN_IP} 'tmux attach-session -t traffic'تدفق التنفيذ
Section titled “تدفق التنفيذ”-
تحميل الإعداد — يقرأ المُشغِّل
config.env(أو تجاوزCONFIG_FILE)، ثم يتحقق من وجودTARGET_FQDNفي البيئة. -
التحقق من المجموعة — يؤكد وجود دليل المجموعة المُسمَّى ضمن دليل المجموعات. يعرض المجموعات المتاحة إن لم يتم العثور عليها.
-
إنشاء دليل النتائج — ينشئ
/opt/traffic-generator/results/<timestamp>-<suite>/ويكتب ملفmeta.jsonالأولي بالحالةstatus: running. -
تنفيذ السكريبتات — يتكرر عبر الملفات المطابقة لـ
[0-9]*في دليل المجموعة، مرتبةً بالاسم. يتخطى الملفات غير القابلة للتنفيذ. يمررTARGET_FQDNكأول معامل. يلتقط المخرجات في<script-name>.log. -
تسجيل النتائج — يحدّث
meta.jsonبطابع زمني للإتمام وعدد النجاحات/الإخفاقات/المتخطَّيات.