
مستودع لإنشاء وتحديث سلسلة من صور Docker تلقائيًا عبر GitHub Actions.
RAUDI (صور Docker يتم تحديثها بانتظام وتلقائياً) يقوم بإنشاء وتحديث سلسلة من صور Docker تلقائياً عبر إجراءات GitHub للأدوات التي لا يوفرها المطورون.
RAUDI هو ما سينقذك من إنشاء وإدارة الكثير من صور Docker يدوياً. في كل مرة يتم تحديث برنامج ما، تحتاج إلى تحديث صورة Docker إذا كنت تريد استخدام أحدث الميزات، وقد تصبح التبعيات غير صالحة للعمل.
هذا أمر فوضوي ويستغرق وقتاً طويلاً.
لا تقلق بعد الآن، لقد قمنا بتغطيتك.
يمكنك إما عمل نسخة (fork) من هذا المستودع واستخدام سير عمل GitHub بنفسك، أو استخدامه محلياً (وإدارة تنفيذه بالطريقة التي تريدها).
إذا كنت ترغب في عمل نسخة (fork) من هذا المستودع، فيجب عليك أيضاً إعداد بعض الأسرار (Secrets) لتتمكن من دفع صورك إلى حساب Docker Hub الشخصي الخاص بك. يجب تعيين سرين (Secrets) من GitHub:
بعد تعيين هذه الأسرار، يجب عليك تعديل متغير organization المحدد في ملف tools/main.py لأنه مهيأ للدفع إلى Docker Hub لـ SecSI.
هذا كل شيء يا رفاق: انتقل إلى Action، وقم بتمكينه لمستودعك المنسوخ، وانتظر حتى منتصف الليل، وسيقوم سير العمل بالعمل الشاق!
يمكن أيضاً تنفيذ هذا المستودع محلياً. المتطلبات الواجب توفرها هي التالية:
إليك وثائق العمل مع BuildX: https://docs.docker.com/buildx/working-with-buildx/
مرحلة الإعداد بسيطة جداً، كل ما تحتاجه هو الأوامر التالية:
git clone https://github.com/cybersecsi/RAUDI
cd RAUDI
pip install -r requirements.txt
أنت جاهز للانطلاق!
لتشغيل الاختبار، تحتاج إلى تثبيت pytest باستخدام الأمر pip install pytest (ليس موجوداً في requirements.txt لأنه مطلوب فقط لأغراض الاختبار) ثم يمكنك تشغيل:
pytest -s
أو
python -m pytest -s
لتشغيل الاختبارات.
يمكن لـ RAUDI بناء ودفع جميع الأدوات الموجودة في دليل tools. هناك خيارات مختلفة يمكن استخدامها عند تشغيله. قبل استخدامه محلياً، يجب عليك إنشاء ملف .env (يمكنك فقط نسخ ملف .env.sample) وإضافة رمز الوصول الشخصي GitHub الخاص بك لتجنب تحديد المعدل (Rate Limiting). بالنسبة للمستخدمين غير المصادقين، يسمح GitHub بما يصل إلى 60 طلباً في الساعة، بينما يُسمح للمستخدمين المصادقين بما يصل إلى 15,000 طلب في الساعة. لهذا السبب ننصحك بإضافته! يمكنك أيضاً إنشاء رمز وصول شخصي دون أي نطاق (scope) لأن كل ما نقوم به هو قراءة بعض المعلومات لكل مستودع GitHub.
في هذا الوضع، يحاول RAUDI بناء جميع الأدوات إذا لزم الأمر. الأمر لتشغيله ببساطة هو:
python3 ./raudi.py --all
في هذا الوضع، يحاول RAUDI بناء الأداة المحددة فقط. الأمر في هذه الحالة هو:
python3 ./raudi.py --single <tool_name>
tool_name يجب أن يكون اسم الدليل داخل مجلد tools.
نظراً لأنه تمت إضافة المعامل tests إلى هيكل تكوين الأداة، فقد يكون من المفيد اختبار ما إذا كانت الأوامر المدرجة تُرجع كود حالة 0. الأمر لاختبار أداة معينة هو:
python3 ./raudi.py --test <tool_name>
tool_name يجب أن يكون اسم الدليل داخل مجلد tools.
إذا كنت تريد معرفة الأدوات المتاحة، يمكنك تشغيل هذا الأمر:
python3 ./raudi.py --list
إذا كنت تريد إضافة مجلد أداة جديد بسرعة بدءاً من أحد القوالب المتاحة، يمكنك تشغيل هذا الأمر:
python3 ./raudi.py --bootstrap <new_tool_name>
| الخيار | الوصف | القيمة الافتراضية |
|---|---|---|
| --push | الدفع تلقائياً إلى Docker Hub | False |
| --remote | التحقق من Docker Hub بدلاً من Docker المحلي قبل البناء | False |
| --force | البناء أو عدمه إذا تم العثور على صورة بنفس اسم العلامة |
هذه هي القائمة الحالية للأدوات التي تمت إضافتها. كل هذه الأدوات لا تحتوي على صورة Docker رسمية مقدمة من المطور:
كل أداة في دليل الأدوات تحتوي على ملفين على الأقل:
إذا كنت تريد إضافة أداة جديدة، ما عليك سوى إنشاء مجلد لهذه الأداة داخل دليل tools. في هذا المجلد، يجب عليك إدراج ملف Dockerfile مع وسائط بناء (build args) محددة لتخصيص وأتمتة البناء. بمجرد إنشاء Dockerfile، يجب عليك إنشاء ملف config.py في نفس الدليل مع دالة تسمى get_config(organization, common_args). كن حذراً: يجب تسمية الدالة بهذه الطريقة ويجب أن تحتوي على هاتين المعاملتين (حتى لو لم تستخدمهما). القيمة المعادة هي config لتلك الأداة ولها الهيكل التالي:
config = {
'name': organization+'/<name_of_the_image>',
'version': '', # يجب أن تكون دالة مساعدة
'buildargs': {
},
'tests': []
}
المفاتيح الأربعة هي:
بعد القيام بذلك، أنت جاهز للانطلاق! فقط كن حذراً من أن اسم الأداة يجب أن يكون نفس اسم الدليل الذي وضعت فيه Dockerfile الخاص بها.
هناك اتفاقية تسمية للإصدارات: استخدم فقط النقاط والأرقام؛ لذا يرجى إزالة أي 'v' زائدة من الإصدار في ملف config.py الخاص (للحصول على مثال عملي تحقق من tools/dirsearch/config.py).
للحصول على أحدث الإصدارات والمعلومات حول الأدوات و الصور الأساسية، تم تنفيذ مجموعة من المساعدات. إذا كنت تريد إضافة أداة جديدة، يجب عليك استخدام هذه المساعدات للحصول على صورة Docker يتم تحديثها تلقائياً بواسطة RAUDI.
get_latest_pip_versionيستخدم هذا المساعد لاسترداد أحدث إصدار من حزمة pip. كل ما يحتاجه هو اسم الحزمة ويعيد رقم الإصدار. مثال:
VERSION = helper.get_latest_pip_version(package_name)
get_latest_npm_registry_versionيستخدم هذا المساعد لاسترداد أحدث إصدار من حزمة npm. كل ما يحتاجه هو اسم الحزمة ويعيد رقم الإصدار. مثال:
VERSION = helper.get_latest_npm_registry_version(package_name)
get_latest_github_releaseيستخدم هذا المساعد لاسترداد معلومات حول مستودع GitHub يستخدم الإصدارات (Releases) وله أنواع متعددة من الأصول (مثل الملفات التنفيذية لأنظمة تشغيل مختلفة). يأخذ هذا المساعد المستودع (بصيغة user/repo) وسلسلة هدف لتحديد الأصل الصحيح للتحميل. يعيد قاموساً يحتوي على مفتاحين (url و version). مثال:
VERSION = helper.get_latest_github_release("user/repo", "linux_amd64")
get_latest_github_release_no_browser_downloadيستخدم هذا المساعد لاسترداد معلومات حول مستودع GitHub يستخدم الإصدارات (Releases) وله فقط الكود المصدري (مما يعني وجود zipball و tarball). يأخذ هذا المساعد المستودع (بصيغة user/repo) ويعيد قاموساً يحتوي على مفتاحين (url و version). مثال:
VERSION = helper.get_latest_github_release_no_browser_download("user/repo")
get_latest_github_tag_no_browser_downloadيستخدم هذا المساعد لاسترداد معلومات حول مستودع GitHub يستخدم العلامات (Tags) وله فقط الكود المصدري (مما يعني وجود zipball و tarball). يأخذ هذا المساعد المستودع (بصيغة user/repo) ويعيد قاموساً يحتوي على مفتاحين (url و version). مثال:
VERSION = helper.get_latest_github_tag_no_browser_download("user/repo")
get_latest_github_commitيستخدم هذا المساعد لاسترداد معلومات حول مستودع GitHub لا يستخدم العلامات (Tags) أو الإصدارات (Releases). في هذه الحالة، الهدف هو استرداد أحدث commit. يأخذ هذا المساعد المستودع (بصيغة user/repo) ويعيد سلسلة تمثل تاريخ آخر commit بصيغة YYYYYMMDD.
VERSION = helper.get_latest_github_commit("user/repo")
يقدم هذا القسم أمثلة لأدوات أمان الشبكات المضافة حالياً. كما ترى، الصور توفر الأداة فقط، لذلك إذا كنت بحاجة إلى استخدام قائمة كلمات (wordlist)، يجب عليك تركيبها.
docker run -it --rm secsi/<tool> <command>
docker run -it --rm -v <wordlist_src_dir>:<wordlist_container_dir> secsi/dirb <url> <wordlist_container_dir>/<wordlist_file>
نحن إيطاليون، لذلك من المحتمل أننا ننطقها بطريقة مختلفة عن طريقتك. النطق الصحيح (باستخدام الترجمة الصوتية) هو التالي:
/ˈraʊdi/
وإلا فكر في الكلب المحشو في البرنامج التلفزيوني الشهير Scrubs: Rowdy
الجميع مدعوون للمساهمة! لقد أنشأنا مستنداً مفصلاً جداً يصف كيفية المساهمة في RAUDI.
تم تطوير RAUDI بفخر @SecSI بواسطة:
مساهمون آخرون:
RAUDI هو برنامج مفتوح المصدر ومجاني تم إصداره بموجب GNU GPL v3.
| False |
| الاسم | صورة Docker | المصدر |
|---|