
الأداة الوحيدة مفتوحة المصدر لتحليل الثغرات الأمنية ومشكلات التهيئة في حاويات Docker العاملة وشبكات Docker.
DockerENT هي أداة فحص أمني نشطة في وقت التشغيل (RAST tool). وهي إطار عمل قابل للتوسيع مكتوب بلغة Python. تأتي مع تطبيق CLI وواجهة ويب نظيفة مكتوبة باستخدام StreamLit.
تم تصميم DockerENT لاكتشاف التكوينات الأمنية الضعيفة في عمليات النشر الإنتاجية التي قد تؤدي إلى عواقب وخيمة. يتصل هذا التطبيق بالحاويات الجارية في النظام ويجلب قائمة بالتكوينات الضعيفة والقابلة للاستغلال في وقت التشغيل، ثم يُنشئ تقريراً. إذا تم تشغيله عبر واجهة الويب، فيمكنه عرض تقرير الفحص والتدقيق في الواجهة نفسها.
هل أنت مستعجل لاختبار هذا؟ قم بتنزيل أحدث إصدار مستقر من PyPi وقم بتشغيل تطبيق الويب، كل شيء بديهي.
pip install DockerENT
ثم قم بتشغيل التطبيق كالتالي:
DockerENT -w
هذا كل شيء.
تم تصميم DockerENT مع مراعاة البساطة وسهولة الاستخدام. حالياً، كل ما عليك فعله هو استنساخ المستودع وتنزيل التبعيات أو بناء Dockerfile. بمجرد تثبيت التبعيات على النظام المحلي، يمكننا تشغيل الأداة وتحليل التكوينات الجارية للحاويات.
# التحميل والإعداد
git clone https://github.com/r0hi7/DockerENT.git
cd DockerENT
make venv
source venv/bin/activate
# التشغيل
python -m DockerENT --help
usage: Find the vulnerabilities hidden in your running container(s).
[-h] [-d [DOCKER_CONTAINER]] [-p [DOCKER_PLUGINS]]
[-d-nw [DOCKER_NETWORK]] [-p-nw [DOCKER_NW_PLUGINS]] [-w]
[-n [PROCESS_COUNT]] [-a] [-o [OUTPUT]]
optional arguments:
-h, --help show this help message and exit
-w, --web-app Run DockerENT in WebApp mode. If this parameter is
enabled, other command line flags will be ignored.
-n [PROCESS_COUNT], --process [PROCESS_COUNT]
Run scans in parallel (Process pool count).
-a, --audit Flag to check weather to audit results or not.
-d [DOCKER_CONTAINER], --docker [DOCKER_CONTAINER]
Run scan against the running container.
-p [DOCKER_PLUGINS], --plugins [DOCKER_PLUGINS]
Run scan with only specified plugins.
-p-nw [DOCKER_NW_PLUGINS], --nw-plugins [DOCKER_NW_PLUGINS]
Run scan with only specified plugins.
-d-nw [DOCKER_NETWORK], --docker-network [DOCKER_NETWORK]
Run scan against running docker-network.
-o [OUTPUT], --output [OUTPUT]
Output plugin to write data to.
# أو عبر الحاوية
docker build . -t dockerent
docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 8501:8501 --name dockerent dockerent
# ثم افتح متصفحك على http://localhost:8051
شاهد هذا الفيديو السريع للبدء.
html وfile.demo الخاصة بك.cp DockerENT/docker_plugins/docker_sample_plugin.py DockerENT/docker_plugins/docker_demo_plugin.py
_plugin_name = 'demo_plugin'
def scan(container, output_queue, audit=False, audit_queue=None):
_log.info('Staring {} Plugin ...'.format(_plugin_name_))
res = {}
result = {
'test_class': {
'TEST_NAME': ['good']
}
}
res[container.short_id] = {
_plugin_name_: result
}
# Do something magical.
_log.info('Completed execution of {} Plugin.'.format(_plugin_name_))
'''Make Sure you put dict of following structure in Q.
{
'contiainer_id': {
'plugin_name': {
'test_name_demo1': {
resultss:[]
},
'test_name_demo2': {
results: []
}
}
}
}
'''
output_queue.put(res)
if audit:
_audit(container, res, audit_queue)
def _audit(container, results, audit_queue):
'''Make Sure to add dict of following structure to Audit Q
res = {
"container_id": [
"_plugin_name_, WARN/INFO/ERROR, details"
]
}
'''
# Magical logic to perform Audit.
audit_queue.put(res)
| اسم الإضافة | ملف الإضافة | الميزة | التدقيق |
|---|---|---|---|
| CMD_HISTORY | ملف | تحديد سجل الأوامر | سجل الجذر وسجل الأوامر للمستخدم |
| FILESYSTEM | ملف | تحديد أنظمة الملفات القابلة للكتابة | في حالة وجود أنظمة ملفات قابلة للكتابة. |
| NETWORK | ملف | تحديد حالة الشبكة | تحديد جميع المنافذ المعينة. |
| PLAINTEST_PASSWORD | ملف | تحديد كلمات المرور في ملفات مختلفة | |
| SECURITY_PROFILES | ملف | تحديد ملفات الأمان الضعيفة | قائمة بملفات الأمان الضعيفة. |
| USER_INFO | ملف | تحديد معلومات المستخدم | قائمة بالأذونات في passwd والملفات الحساسة الأخرى |
| SYSTEM_INFO | ملف | تحديد معلومات نظام دوكر | لا يوجد تدقيق |
| FILES_INFO | ملف | تحديد الدلائل والملفات القابلة للكتابة عالمياً | قائمة بكل هذه الملفات. |
| PROC_INFO | ملف | تحديد قائمة العمليات في نظام دوكر |
-n <count> لتحديد عدد المعالجات بالتوازي.JSON وHTML.JSON ضخمة.