
Gixy-Next v0.7.1
Gixy-Next: NGINX कॉन्फ़िगरेशन सुरक्षा स्कैनर और प्रदर्शन जाँचकर्ता
Gixy-Next: सुरक्षा ऑडिट के लिए NGINX कॉन्फ़िगरेशन सुरक्षा स्कैनर
अवलोकन
Gixy-Next (Gixy) एक ओपन-सोर्स NGINX कॉन्फ़िगरेशन सुरक्षा स्कैनर और हार्डनिंग टूल है जो आपकी nginx.conf का स्थिर विश्लेषण करके सुरक्षा गलत कॉन्फ़िगरेशन, हार्डनिंग कमियों, और सामान्य प्रदर्शन समस्याओं का पता लगाता है — इससे पहले कि वे प्रोडक्शन तक पहुँचें। यह Yandex के Gixy का सक्रिय रूप से अनुरक्षित फोर्क है। Gixy-Next का सोर्स कोड GitHub पर उपलब्ध है।
Gixy-Next को ब्राउज़र में भी इस पेज पर चलाया जा सकता है। किसी डाउनलोड की आवश्यकता नहीं है; आप वेबसाइट पर अपनी कॉन्फ़िगरेशन स्कैन कर सकते हैं (स्थानीय रूप से, WebAssembly का उपयोग करके)।
त्वरित शुरुआत
Gixy-Next (gixy या gixy-next CLI) 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 Hub या GitHub Registry से Docker इमेज के रूप में उपलब्ध है।
स्थानीय कॉन्फ़िग फ़ाइल को कंटेनर में माउंट करके स्कैन करें:
# 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.conf और शामिल कॉन्फ़िगरेशन फ़ाइलों में NGINX सुरक्षा और प्रदर्शन संबंधी गलत कॉन्फ़िगरेशन की एक विस्तृत श्रृंखला का पता लगा सकता है। निम्नलिखित प्लगइन समर्थित हैं:
- [add_header_content_type] Setting Content-Type via add_header
- [add_header_multiline] Multiline response headers
- [add_header_redefinition] Redefining of response headers by "add_header" directive
- [alias_traversal] Path traversal via misconfigured alias
- [allow_without_deny] Allow specified without deny
- [default_server_flag] Missing default_server flag
- [error_log_off]
error_logset tooff - [hash_without_default] Missing default in hash blocks
- [host_spoofing] Request's Host header forgery
- [http2_misdirected_request] Missing HTTP/2 misdirected-request safeguard
- [http_splitting] HTTP Response Splitting
- [if_is_evil] If is evil when used in location context
- [invalid_regex] Invalid regex capture groups
- [low_keepalive_requests] Low
keepalive_requests - [missing_worker_processes] Missing
worker_processes - [mixed_case_variable] Mixed-case variable references
- [origins] Problems with referer/origin header validation
- [overlapping_captures] Overlapping captures in rewrite redirect/args context
- [proxy_buffering_off] Disabling
proxy_buffering - [proxy_pass_normalized]
proxy_passpath normalization issues - [proxy_set_header_redefinition] Redefining of proxied request headers by "proxy_set_header" directive
- [quic_bpf_reuseport] QUIC connections silently dropped after reload
- [regex_redos] Regular expression denial of service (ReDoS)
- [resolver_external] Using external DNS nameservers
- [return_bypasses_allow_deny] Return directive bypasses allow/deny restrictions
- [ssl_ecdh_curve] Post-quantum groups stop NGINX from starting on older OpenSSL
- [ssl_stapling_letsencrypt] OCSP stapling does nothing for a Let's Encrypt certificate
- [ssl_stapling_without_resolver] OCSP stapling silently fails without a resolver
- [ssrf] Server Side Request Forgery
- [stale_dns_cache] Outdated/stale cached DNS records used in proxy_pass
- [status_page_exposed] Ensures that status_page is not exposed to the world
- [try_files_is_evil_too]
try_filesdirective is evil without open_file_cache - [unanchored_regex] Unanchored regular expressions
- [unnamed_groups] Unnamed capture groups in rewrite query string
- [valid_referers] none/blocked in valid_referers
- [version_disclosure] Using insecure values for server_tokens
- [worker_rlimit_nofile_vs_connections]
worker_rlimit_nofilemust be at least twiceworker_connections
कुछ पता नहीं चला? कृपया GitHub पर एक issue खोलें और बताएं कि क्या छूट रहा है!
उपयोग (फ्लैग)
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
या --skips के साथ कुछ शोर करने वाली जाँचों को छोड़ सकते हैं:
# Run everything except these checks
gixy --skips low_keepalive_requests,worker_rlimit_nofile_vs_connections
केवल एक निश्चित गंभीरता या उससे अधिक के मुद्दों की रिपोर्ट करने के लिए, संयोजक -l फ्लैग का उपयोग करें:
# -l for LOW severity issues and higher, -ll for MEDIUM and higher, and -lll for only HIGH severity issues
gixy -ll
डिफ़ॉल्ट रूप से, gixy का आउटपुट ANSI-रंगीन होता है; एक संगत टर्मिनल में सबसे अच्छा दिखता है। बिना रंग का आउटपुट पाने के लिए आप --format (-f) फ्लैग का उपयोग text मान के साथ कर सकते हैं:
$ gixy -f text
==================== Results ===================
Problem: [http_splitting] Possible HTTP-Splitting vulnerability.
Description: Using variables that can contain "\n" may lead to http injection.
Additional info: https://gixy.io/plugins/http_splitting/
Reason: At least variable "$action" can contain "\n"
Pseudo config:
include /etc/nginx/sites/default.conf;
server {
location ~ /v1/((?<action>[^.]*)\.json)?$ {
add_header X-Action $action;
}
}
==================== Summary ===================
Total issues:
Informational: 0
Low: 0
Medium: 0
High: 1
आप पुनरुत्पादनीय, मशीन-पठनीय JSON आउटपुट पाने के लिए -f json का भी उपयोग कर सकते हैं:
$ gixy -f json
[{"config":"\nserver {\n\n\tlocation ~ /v1/((?<action>[^.]*)\\.json)?$ {\n\t\tadd_header X-Action $action;\n\t}\n}","description":"Using variables that can contain \"\\n\" or \"\\r\" may lead to http injection.","file":"/etc/nginx/nginx.conf","line":4,"path":"/etc/nginx/nginx.conf","plugin":"http_splitting","reason":"At least variable \"$action\" can contain \"\\n\"","reference":"https://gixy.io/plugins/http_splitting/","severity":"HIGH","summary":"Possible HTTP-Splitting vulnerability."}]
आप SARIF 2.1.0 लॉग पाने के लिए -f sarif का भी उपयोग कर सकते हैं, उदाहरण के लिए GitHub कोड स्कैनिंग पर अपलोड करने के लिए:
# Write a SARIF report to a file, e.g. for `github/codeql-action/upload-sarif`
gixy -f sarif -o gixy-results.sarif
उपयोग के लिए अधिक फ्लैग gixy को --help पास करके पाए जा सकते हैं। आप Usage Guide में अधिक जानकारी भी पा सकते हैं।
कॉन्फ़िगरेशन और प्लगइन विकल्प
कुछ प्लगइन ऐसे विकल्प प्रदान करते हैं जिन्हें आप CLI फ्लैग या कॉन्फ़िगरेशन फ़ाइल के माध्यम से सेट कर सकते हैं। आप इनके बारे में अधिक Configuration guide में पढ़ सकते हैं।
NGINX सुरक्षा और अनुपालन के लिए Gixy-Next
केवल सिंटैक्स की जाँच करने वाले nginx -t चलाने के विपरीत, Gixy-Next वास्तव में आपकी कॉन्फ़िगरेशन का विश्लेषण करता है और अनहार्डन किए गए उदाहरणों और कमज़ोरियों का पता लगाता है।
Gixy-Next के साथ, आप एक स्वचालित NGINX कॉन्फ़िगरेशन सुरक्षा समीक्षा कर सकते हैं जो हर बदलाव पर स्थानीय रूप से चल सकती है, चाहे ऑडिटिंग, अनुपालन, या सामान्य परीक्षण के लिए हो, जिससे कार्रवाई योग्य निष्कर्ष निकालने में मदद मिलती है जो अस्थिर/धीमे NGINX सर्वर को रोकने में मदद करते हैं, और असुरक्षित निर्देशों और असुरक्षित डिफ़ॉल्ट से जोखिम को कम करते हैं।
योगदान
Gixy-Next का अनुरक्षण Joshua Rogers द्वारा किया जाता है, लेकिन योगदान का हमेशा स्वागत है! आप विभिन्न तरीकों से हमारी मदद कर सकते हैं, जैसे:
- बग की रिपोर्ट करना।
- पता लगाने के लिए नए प्लगइन सुझाना।
- दस्तावेज़ीकरण में सुधार करना।
- कोड को ठीक करना, रीफैक्टर करना, सुधारना, और नया कोड लिखना।
पुल रिक्वेस्ट में कोई भी बदलाव सबमिट करने से पहले, कृपया योगदान दिशानिर्देश दस्तावेज़, Contributing to Gixy-Next पढ़ें।
Gixy-Next का आधिकारिक होमपेज https://gixy.io/ है। Gixy-Next में दस्तावेज़ीकरण में किए गए कोई भी बदलाव स्वचालित रूप से उस वेबसाइट पर प्रतिबिंबित होंगे।
सोर्स कोड https://github.com/MegaManSec/Gixy-Next पर पाया जा सकता है।
Gixy क्या है? (पृष्ठभूमि)
Gixy एक NGINX कॉन्फ़िगरेशन विश्लेषक है जिसे मूल रूप से Yandex के Andrew Krasichkov द्वारा विकसित किया गया था। यह पहली बार 2017 में जारी किया गया था और तब से अनुरक्षित नहीं है। यह Python के आधुनिक संस्करणों का समर्थन नहीं करता है, इसमें कई बग हैं, और इसकी कार्यक्षमता और कमज़ोर NGINX कॉन्फ़िगरेशन का पता लगाने की क्षमता सीमित है। आज एक आधुनिक सिस्टम पर मूल Gixy चलाने से निम्नलिखित त्रुटि होगी:
File "gixy/core/sre_parse/sre_parse.py", line 61, in <module>
"t": SRE_FLAG_TEMPLATE,
^^^^^^^^^^^^^^^^^
NameError: name 'SRE_FLAG_TEMPLATE' is not defined. Did you mean: 'SRE_FLAG_VERBOSE'?
इसलिए, Gixy-Next एक फोर्क है जो आधुनिक सिस्टमों के लिए समर्थन जोड़ता है, नई जाँचें, प्रदर्शन सुधार, हार्डनिंग सुझाव, और आधुनिक Python और NGINX संस्करणों के लिए समर्थन जोड़ता है।
gixy-ng क्यों नहीं?
Gixy-Next वास्तव में gixy-ng का फोर्क है, जो स्वयं मूल gixy का फोर्क था। Gixy-Next तब बनाया गया था जब gixy-ng के अनुरक्षक ने बड़ी मात्रा में AI-सहायता प्राप्त परिवर्तन और स्वतः-जनित कोड बनाना शुरू किया जो समीक्षा के लिए बहुत बड़ा होने के साथ-साथ टूटा हुआ भी था।
कुछ समय बाद, gixy-ng के अनुरक्षक ने कोडबेस में AI-जनित परिवर्तन कमिट करना शुरू किया जिन्होंने स्पष्ट रिग्रेशन पेश किए, टूल के महत्वपूर्ण व्यवहार को तोड़ दिया (जिसे टूल का उपयोग करने वाला कोई भी व्यक्ति पकड़ लेता), यादृच्छिक AI-टूलिंग आर्टिफैक्ट जोड़े, और ऐसा कोड पेश किया जो बस वह नहीं करता था जो उसे करना चाहिए था। सबसे महत्वपूर्ण बात, अनुरक्षक ने gixy-ng के सभी दस्तावेज़ीकरण, सभी आउटपुट, और सभी सोर्स कोड में अपने व्यवसाय का विज्ञापन भी जोड़ा।
दूसरे शब्दों में, gixy-ng के अनुरक्षक ने मूल gixy लिया, AI से बदलाव करने को कहा, बहुत सारे बग (और अन्य AI स्लॉप) पेश किए, और फिर कोड में विज्ञापन जोड़ा। उन्होंने मर्ज रिक्वेस्ट के रूप में योगदान भी स्वीकार किए, लेकिन लेखक की जानकारी हटा दी (देखें यह पोस्ट और यह पोस्ट)।
Gixy-Next गुणवत्ता बहाल करने पर केंद्रित है, और इसे लगभग 100,000 पंक्तियों लंबी NGINX कॉन्फ़िगरेशन पर परखा गया है। यह gixy-ng में पेश किए गए परिवर्तनों द्वारा शुरू किए गए बग और गलत पहचान को ठीक करता है, AI टूल आर्टिफैक्ट/कचरा हटाता है, और कोडबेस को समीक्षा योग्य और अनुरक्षणीय बनाए रखने का प्रयास करता है। यह फोर्क उन लोगों के लिए है जो स्वच्छ कोड और दीर्घकालिक अनुरक्षणीयता में रुचि रखते हैं।
