
Go-आधारित वेब एप्लीकेशन फ़ायरवॉल लाइब्रेरी जो ModSecurity SecLang नियमों और OWASP कोर रूल सेट v4 के साथ संगत है, वेब एप्लीकेशन और API के लिए रीयल-टाइम HTTP ट्रैफ़िक निरीक्षण और अटैक ब्लॉकिंग प्रदान करती है।
Coraza - वेब एप्लीकेशन फ़ायरवॉल
Coraza एक ओपन सोर्स, एंटरप्राइज़-ग्रेड, उच्च प्रदर्शन वाला वेब एप्लीकेशन फ़ायरवॉल (WAF) है जो आपके प्रिय अनुप्रयोगों की सुरक्षा के लिए तैयार है। यह Go में लिखा गया है, ModSecurity SecLang नियम सेट का समर्थन करता है और OWASP कोर रूल सेट v4 के साथ 100% संगत है।
प्रमुख विशेषताएँ:
⇲ ड्रॉप-इन - Coraza एक वैकल्पिक इंजन है जो Trustwave OWASP ModSecurity Engine के साथ आंशिक संगतता रखता है और उद्योग-मानक SecLang नियम सेट का समर्थन करता है।
🔥 सुरक्षा - Coraza OWASP CRS v4 (पूर्व में कोर रूल सेट) चलाता है ताकि आपके वेब एप्लीकेशन को व्यापक हमलों से बचाया जा सके, जिसमें OWASP टॉप टेन भी शामिल है, और न्यूनतम झूठी अलर्ट के साथ। CRS कई सामान्य हमले श्रेणियों से बचाता है, जिनमें शामिल हैं: SQL इंजेक्शन (SQLi), क्रॉस साइट स्क्रिप्टिंग (XSS), PHP और जावा कोड इंजेक्शन, HTTPoxy, Shellshock, स्क्रिप्टिंग/स्कैनर/बॉट डिटेक्शन और मेटाडेटा और त्रुटि लीकेज। ध्यान दें कि CRS के पुराने संस्करण संगत नहीं हैं।
🔌 विस्तारणीय - Coraza मूल रूप से एक पुस्तकालय है, जिसमें ऑन-प्रिमाइसेस वेब एप्लीकेशन फ़ायरवॉल इंस्टेंस तैनात करने के लिए कई एकीकरण हैं। ऑडिट लॉगर, पर्सिस्टेंस इंजन, ऑपरेटर, एक्शन; अपनी स्वयं की कार्यक्षमताएँ बनाएँ ताकि Coraza को अपनी इच्छानुसार विस्तारित किया जा सके।
🚀 प्रदर्शन - विशाल वेबसाइटों से लेकर छोटे ब्लॉग तक, Coraza न्यूनतम प्रदर्शन प्रभाव के साथ भार को संभाल सकता है। हमारे बेंचमार्क देखें।
﹡ सरलता - कोई भी Coraza स्रोत कोड को समझ और संशोधित कर सकता है। नई कार्यक्षमता के साथ Coraza का विस्तार करना आसान है।
💬 समुदाय - Coraza एक सामुदायिक परियोजना है, योगदान स्वीकार किए जाते हैं और सभी विचारों पर विचार किया जाएगा। CONTRIBUTION दस्तावेज़ में योगदानकर्ता मार्गदर्शन पाएँ।
Coraza परियोजना निम्नलिखित सर्वरों के लिए कार्यान्वयन और प्लगइन्स बनाए रखती है:
Coraza को आपके Go प्रोग्राम के लिए एक पुस्तकालय के रूप में उपयोग किया जा सकता है ताकि एक सुरक्षा मिडलवेयर लागू किया जा सके या इसे मौजूदा एप्लीकेशन और वेबसर्वरों के साथ एकीकृत किया जा सके।
package main
import (
"fmt"
"github.com/corazawaf/coraza/v3"
)
func main() {
// First we initialize our waf and our seclang parser
waf, err := coraza.NewWAF(coraza.NewWAFConfig().
WithDirectives(`SecRule REMOTE_ADDR "@rx .*" "id:1,phase:1,deny,status:403"`))
// Now we parse our rules
if err != nil {
fmt.Println(err)
}
// Then we create a transaction and assign some variables
tx := waf.NewTransaction()
defer func() {
tx.ProcessLogging()
tx.Close()
}()
tx.ProcessConnection("127.0.0.1", 8080, "127.0.0.1", 12345)
// Finally we process the request headers phase, which may return an interruption
if it := tx.ProcessRequestHeaders(); it != nil {
fmt.Printf("Transaction was interrupted with status %d\n", it.Status)
}
}
Examples/http-server Coraza के साथ अभ्यास करने के लिए एक उदाहरण प्रदान करता है।
Go बिल्ड टैग कंपाइल-टाइम पर कुछ कार्यक्षमताओं को समायोजित कर सकते हैं। ये केवल उन्नत उपयोग के मामलों के लिए हैं और छोटे संस्करणों में संगतता गारंटी प्रदान नहीं करते - सावधानी से उपयोग करें।
coraza.disabled_operators.* - निर्दिष्ट ऑपरेटर को संकलन से बाहर करता है। यह विशेष रूप से उपयोगी है यदि बाइनरी आकार/स्टार्टअप ओवरहेड को कम करने के लिए plugins.RegisterOperator के साथ ऑपरेटर को ओवरराइड किया जा रहा है।coraza.rule.multiphase_evaluation - नियम चर का मूल्यांकन उन चरणों में सक्षम करता है जिनमें वे तैयार हैं, न कि केवल उस चरण के लिए जिसके लिए नियम परिभाषित है।coraza.no_memoize - regex और aho-corasick बिल्डर्स के डिफ़ॉल्ट मेमोइज़ेशन को अक्षम करता है। मेमोइज़ेशन डिफ़ॉल्ट रूप से सक्षम है और संकलित पैटर्न को WAF इंस्टेंसेस में पुन: उपयोग करने के लिए एक वैश्विक कैश का उपयोग करता है, जिससे मेमोरी खपत और स्टार्टअप ओवरहेड कम होता है। लंबे समय तक चलने वाली प्रक्रियाओं में जो लाइव रीलोड करती हैं, कैश की गई प्रविष्टियों को जारी करने के लिए WAF.Close() ( experimental.WAFCloser के माध्यम से) का उपयोग करें जब WAF नष्ट हो जाता है, या मेमोइज़ेशन से पूरी तरह बाहर निकलने के लिए इस टैग का उपयोग करें।no_fs_access - इंगित करता है कि लक्ष्य वातावरण में FS तक पहुंच नहीं है ताकि OS की फ़ाइल सिस्टम संबंधित कार्यक्षमता जैसे फ़ाइल बॉडी बफ़र्स का लाभ न उठाया जा सके।coraza.rule.case_sensitive_args_keys - ARGS कुंजियों के लिए केस-संवेदी मिलान को सक्षम करता है, Coraza व्यवहार को RFC 3986 विनिर्देश के साथ संरेखित करता है। यह अगले प्रमुख संस्करण में डिफ़ॉल्ट रूप से सक्षम होगा।coraza.rule.no_regex_multiline - ऑपरेटर में डिफ़ॉल्ट रूप से regex मल्टीलाइन मॉडिफायर को सक्षम करने से अक्षम करता है। यह CRS अपेक्षित व्यवहार के साथ संरेखित होता है, झूठी सकारात्मकता को कम करता है और प्रदर्शन में सुधार कर सकता है। अगले प्रमुख संस्करण में डिफ़ॉल्ट रूप से कोई मल्टीलाइन regex सक्षम नहीं होगा। अधिक संदर्भ के लिए देखें।http/e2e/ e2e परीक्षण चलाने के लिए एक उपयोगिता प्रदान करता है।
इसका उपयोग आपके अपने waf तैनाती के विरुद्ध स्वतंत्र रूप से किया जा सकता है:
go run github.com/corazawaf/coraza/v3/http/e2e/cmd/httpe2e@main --proxy-hostport localhost:8080 --httpbin-hostport localhost:8081
या आयात करके एक पुस्तकालय के रूप में:
"github.com/corazawaf/coraza/v3/http/e2e"
पुस्तकालय उपयोग के संदर्भ के लिए, testing/e2e/e2e_test.go देखें।
अपेक्षित निर्देश जिन्हें लोड किया जाना चाहिए और उपलब्ध झंडे http/e2e/cmd/httpe2e/main.go में पाए जा सकते हैं।
Coraza के विकास के लिए केवल Go की आवश्यकता है। आप विकास कमांड जारी करने के लिए mage.go चला सकते हैं।
कमांड की सूची देखें
$ go run mage.go -l
लक्ष्य:
check lint और परीक्षण चलाता है।
coverage कवरेज और रेस डिटेक्टर सक्षम के साथ परीक्षण चलाता है।
doc godoc चलाता है, http://localhost:6060 पर पहुँचे।
format इस रिपॉजिटरी में कोड को फॉर्मेट करता है।
fuzz फ़ज़ परीक्षण चलाता है।
lint कोड गुणवत्ता सत्यापित करता है।
precommit कमिट करते समय चेक चलाने के लिए एक git हुक स्थापित करता है।
test सभी परीक्षण चलाता है।
उदाहरण के लिए, सबमिशन से पहले अपने कोड को फॉर्मेट करने के लिए, चलाएँ
go run mage.go format
योगदान का स्वागत है! कृपया मार्गदर्शन के लिए CONTRIBUTING.md देखें।
किसी सुरक्षा मुद्दे की रिपोर्ट करने के लिए, कृपया इस लिंक का अनुसरण करें और मुद्दे का विवरण, मुद्दा बनाने के लिए आपने जो कदम उठाए, प्रभावित संस्करण और यदि ज्ञात हो तो मुद्दे के शमन का वर्णन करें।
हमारी भेद्यता प्रबंधन टीम आपकी रिपोर्ट के 3 कार्य दिवसों के भीतर जवाब देगी। यदि मुद्दे की भेद्यता के रूप में पुष्टि होती है, तो हम एक सुरक्षा सलाहकार खोलेंगे। यह परियोजना 90 दिन के प्रकटीकरण समयरेखा का पालन करती है।
दान के लिए, दान साइट देखें।
सबसे पहले और सबसे महत्वपूर्ण, जुआन पाब्लो टोसो को इस परियोजना को शुरू करने और Coraza के आसपास एक अद्भुत समुदाय बनाने के लिए भारी धन्यवाद!
आज हमारे पास कई अद्भुत योगदानकर्ता हैं, हम आपके बिना ऐसा नहीं कर पाते!
contrib.rocks के साथ बनाया गया।
@rxcoraza.rule.mandatory_rule_id_check - सख्त नियम आईडी जाँच को सक्षम करता है जहाँ सभी SecRule/SecAction के लिए id क्रिया आवश्यक है।coraza.rule.rx_prefilter - SecRxPreFilter निर्देश के डिफ़ॉल्ट मान को On पर सेट करता है। @rx ऑपरेटर को अनुकूलित करता है, जब कोई इनपुट मेल नहीं खा सकता है तो पूर्ण regex को छोड़ देता है। यह बिल्ड टैग केवल परीक्षण उद्देश्यों के लिए है, रनटाइम कॉन्फ़िगरेशन और इस सुविधा पर व्यापक दस्तावेज़ीकरण के लिए SecRxPreFilter निर्देश पर भरोसा करें।