
Gixy-Next v0.6.0
Gixy-Next: ماسح أمان تهيئة NGINX ومدقق الأداء
Gixy-Next: ماسح أمان لإعدادات NGINX لتدقيق الأمان
نظرة عامة
Gixy-Next (Gixy) هو ماسح أمان وأداة تقوية مفتوحة المصدر لإعدادات NGINX، يقوم بتحليل ملف nginx.conf بشكل ساكن لاكتشاف سوء الإعدادات الأمنية وثغرات التقوية ومزالق الأداء الشائعة قبل وصولها إلى بيئة الإنتاج. وهو نسخة متفرعة تُصان بنشاط من أداة Gixy الخاصة بـ Yandex. الشيفرة المصدرية لـ Gixy-Next متاحة على GitHub.
يمكن أيضًا تشغيل Gixy-Next في المتصفح عبر هذه الصفحة. لا حاجة إلى أي تنزيل؛ يمكنك فحص إعداداتك على الموقع (محليًا، باستخدام WebAssembly).
البدء السريع
يُوزَّع Gixy-Next (واجهة سطر الأوامر gixy أو gixy-next) على PyPI. يمكنك تثبيته باستخدام pip أو uv:
# pip
pip3 install gixy-next
# uv
uv pip install gixy-next
يمكنك بعد ذلك تشغيله:
# gixy defaults to reading /etc/nginx/nginx.conf
gixy
# But you can also specify a path to the configuration
gixy /opt/nginx.conf
يمكنك أيضًا تصدير إعدادات NGINX الخاصة بك إلى ملف تفريغ واحد (انظر nginx -T Live Configuration Dump):
# Dumps the full NGINX configuration into a single file (including all includes)
nginx -T > ./nginx-dump.conf
# Scan the dump elsewhere (or via stdin):
gixy ./nginx-dump.conf
# or
cat ./nginx-dump.conf | gixy -
ماسح ضوئي قائم على الويب
بدلاً من تنزيل Gixy-Next وتشغيله محليًا، يمكنك استخدام هذه الصفحة وفحص إعدادات من متصفح الويب الخاص بك (محليًا، باستخدام WebAssembly).
الفحص باستخدام Docker
يتوفر Gixy-Next كصورة Docker من Docker Hub أو GitHub Registry.
افحص ملف إعدادات محليًا عن طريق تحميله (mount) داخل الحاوية:
# Use Github Registry
docker run --pull=always --rm -v "$PWD/nginx.conf:/nginx.conf:ro" ghcr.io/megamansec/gixy-next /nginx.conf
# Or Docker Hub
docker run --pull=always --rm -v "$PWD/nginx.conf:/nginx.conf:ro" megamansec/gixy-next /nginx.conf
افحص تفريغ إعدادات NGINX الحية:
# Dumps the full NGINX configuration into a single file (including all includes)
nginx -T > ./nginx-dump.conf
# Use Github Registry
docker run --pull=always --rm -v "$PWD/nginx-dump.conf:/nginx-dump.conf:ro" ghcr.io/megamansec/gixy-next /nginx-dump.conf
# Or Docker Hub
docker run --pull=always --rm -v "$PWD/nginx-dump.conf:/nginx-dump.conf:ro" megamansec/gixy-next /nginx-dump.conf
قراءة من stdin:
# Use Github Registry
nginx -T | docker run --pull=always --rm -i ghcr.io/megamansec/gixy-next gixy-next -
# Or Docker Hub
nginx -T | docker run --pull=always --rm -i megamansec/gixy-next gixy-next -
ما يمكنه فعله
يمكن لـ Gixy-Next اكتشاف مجموعة واسعة من حالات سوء التكوين الأمني والأداء في NGINX عبر nginx.conf وملفات التكوين المضمّنة. الإضافات التالية مدعومة:
- [add_header_content_type] تعيين Content-Type عبر add_header
- [add_header_multiline] رؤوس استجابة متعددة الأسطر
- [add_header_redefinition] إعادة تعريف رؤوس الاستجابة بواسطة توجيه "add_header"
- [alias_traversal] اجتياز المسار عبر alias مُهيأ بشكل خاطئ
- [allow_without_deny] allow محددة دون deny
- [default_server_flag] علامة default_server مفقودة
- [error_log_off]
error_logمضبوط علىoff - [filesystem_root_exposure] استخدام جذر نظام الملفات كجذر مستندات
- [hash_without_default] default مفقود في كتل hash
- [host_spoofing] تزوير رأس Host في الطلب
- [http2_misdirected_request] حماية مفقودة ضد الطلبات الموجّهة خطأً في HTTP/2
- [http_splitting] تقسيم استجابة HTTP
- [if_is_evil] If is evil عند استخدامه في سياق location
- [invalid_regex] مجموعات التقاط regex غير صالحة
- [low_keepalive_requests] قيمة
keepalive_requestsمنخفضة - [missing_worker_processes]
worker_processesمفقود - [mixed_case_variable] مراجع متغيرات بأحرف مختلطة الحالة
- [origins] مشكلات في التحقق من رأس referer/origin
- [overlapping_captures] عمليات التقاط متداخلة في سياق إعادة توجيه/وسائط rewrite
- [proxy_buffering_off] تعطيل
proxy_buffering - [proxy_pass_normalized] يمكن أن يرسل
proxy_passمسارًا غير مقصود إلى المنبع - [proxy_set_header_redefinition] إعادة تعريف رؤوس الطلبات المُمرَّرة عبر الوكيل بواسطة توجيه "proxy_set_header"
- [quic_bpf_reuseport] إسقاط اتصالات QUIC بصمت بعد إعادة التحميل
- [regex_redos] حجب الخدمة عبر التعبيرات النمطية (ReDoS)
- [resolver_external] استخدام خوادم أسماء DNS خارجية
- [return_bypasses_allow_deny] توجيه return يتجاوز قيود allow/deny
- [ssl_ecdh_curve] مجموعات ما بعد الكم تمنع NGINX من البدء على إصدارات OpenSSL الأقدم
- [ssl_stapling_letsencrypt] تدبيس OCSP لا يفعل شيئًا لشهادة Let's Encrypt
- [ssl_stapling_without_resolver] يفشل تدبيس OCSP بصمت دون resolver
- [ssrf] تزوير الطلبات من جانب الخادم
- [stale_dns_cache] سجلات DNS المخزنة مؤقتًا قديمة/منتهية الصلاحية مستخدمة في proxy_pass
- [status_page_exposed] يضمن عدم تعريض status_page للعالم الخارجي
- [try_files_is_evil_too] توجيه
try_filesضار بدون open_file_cache - [unanchored_regex] تعبيرات نمطية غير مثبّتة
- [unnamed_groups] مجموعات التقاط غير مسماة في سلسلة استعلام rewrite
- [valid_referers] none/blocked في valid_referers
- [version_disclosure] استخدام قيم غير آمنة لـ server_tokens
- [worker_rlimit_nofile_vs_connections] يجب أن تكون قيمة
worker_rlimit_nofileضعف قيمةworker_connectionsعلى الأقل
هل لم يتم اكتشاف شيء ما؟ يُرجى فتح issue على GitHub مع ذكر ما هو مفقود!
الاستخدام (الأعلام)
يقرأ gixy افتراضيًا إعدادات NGINX الخاصة بالنظام من /etc/nginx/nginx.conf. يمكنك أيضًا تحديد الموقع بتمريره إلى gixy:
# Analyze the configuration in /opt/nginx.conf
gixy /opt/nginx.conf
يمكنك تشغيل مجموعة فرعية مركّزة من الفحوصات باستخدام --tests:
# Only run these checks
gixy --tests http_splitting,ssrf,version_disclosure
