मेरा लक्ष्य घुसपैठ का पता लगाने के उद्देश्य से क्लस्टरिंग / विसंगति का पता लगाने के लिए नेटवर्क लॉग्स (जैसे, अपाचे, syslog, सक्रिय निर्देशिका सुरक्षा ऑडिट और इतने पर) का विश्लेषण करना है।
लॉग से मेरे पास बहुत सारे पाठ फ़ील्ड हैं जैसे कि आईपी पता, उपयोगकर्ता नाम, होस्टनाम, गंतव्य पोर्ट, स्रोत पोर्ट, और इसी तरह (कुल 15-20 क्षेत्रों में)। मुझे नहीं पता कि लॉग्स में कुछ हमले हैं, और सबसे संदिग्ध घटनाओं (आउटलेयर) को उजागर करना चाहते हैं।
आमतौर पर, विसंगति का पता लगाने से विसंगतियों के रूप में कम संभावना / आवृत्ति के साथ अंक मिलते हैं। हालाँकि, लॉग रिकॉर्ड्स के आधे में फ़ील्ड्स का अनन्य संयोजन होता है। इसलिए, डेटासेट में रिकॉर्ड के आधे हिस्से में सबसे कम संभव आवृत्ति होगी।
यदि मैं क्लस्टरिंग के आधार पर विसंगति का पता लगाता हूं (उदाहरण के लिए, क्लस्टर ढूंढें और फिर उन बिंदुओं का चयन करें जो सभी क्लस्टर केंद्रों से दूर हैं), मुझे विभिन्न बिंदुओं के बीच की दूरी खोजने की आवश्यकता है। चूँकि मेरे पास 15-20 क्षेत्र हैं, यह एक बहु-स्थानिक स्थान होगा, जहाँ dimesions उपयोगकर्ता नाम, पोर्ट, IP पता इत्यादि हैं। हालांकि, महालनोबिस दूरी केवल सामान्य रूप से वितरित सुविधाओं के लिए लागू की जा सकती है। इसका मतलब है कि डेटा बिंदुओं और निर्माण क्लस्टर के बीच दूरी खोजने का कोई तरीका नहीं है ...
उदाहरण के लिए, आइए कल्पना करें कि 20 रिकॉर्ड के डेटासेट में मेरे पास ऐलिस, बॉब, कैरोल, डेव, ईव और फ्रैंक हैं। वे डेटाबेस में निम्न संख्याएँ हो सकते हैं: 2,5,2,5,1,5। अगर मैं बस संख्या के लिए उपयोगकर्ता नाम मैप करता हूं, उदाहरण के लिए
Alice --> 1
Bob --> 2
Carol --> 3
Dave --> 4
Eve --> 5
Frank --> 6
फिर, उपयोगकर्ता नाम के लिए मेरी संभावना वितरण निम्नानुसार होगा:
p (1) = 0.1, p (2) = 0.25, p (3) = 0.1, p (4) = 0.25, p (5) = 0.05, p (6) = 0.25
बेशक, यह एक सामान्य वितरण नहीं है, और यह भी बहुत मायने नहीं रखता है, क्योंकि मैं किसी भी अलग तरीके से उपयोगकर्ता नाम को मैप कर सकता हूं ...
इस प्रकार, यूजरनेम, एक्शन, पोर्ट नंबर, आईपी एड्रेस इत्यादि जैसे क्षेत्रों की सरल मैपिंग कुछ भी नहीं लाती है।
इसलिए, मैं पूछना चाहता हूं कि आम तौर पर अनपेक्षित विसंगति / बाह्य विकृति का पता लगाने के लिए टेक्स्ट फ़ील्ड को कैसे संसाधित किया जाता है / सुविधाओं का निर्माण किया जाता है?
संपादित करें: डेटा संरचना।
मेरे पास डेटाबेस तालिका में लगभग 100 कॉलम हैं, जिसमें सक्रिय निर्देशिका ईवेंट की जानकारी है। इस 100 कॉलम में से मैं सबसे महत्वपूर्ण (अपने दृष्टिकोण से) का चयन करता हूं: सब्जेक्टयूजर, टारगेटयूजर, सोर्सपेड्रेस, सोर्सहोस्टनाम, सोर्सपॉर्ट, कंप्यूटर, डेस्टिनेशनपैड्रेस, डेस्टिनेशनहॉटनेम, डेस्टिनेशनपोर्ट, एक्शन, स्टेटस, फाइलपैथ, ईवेंटआईडी, वीकडे, डेटाइम।
ईवेंट्स सक्रिय निर्देशिका इवेंट्स हैं, जहां EventID परिभाषित करता है कि क्या लॉग किया गया था (उदाहरण के लिए, Kerberos टिकट का निर्माण, उपयोगकर्ता लॉगऑन, उपयोगकर्ता लॉगऑफ़, आदि)।
डेटा नमूना निम्न प्रकार दिखता है:
+ ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - + | ID | SubjectUser | TargetUser | SourceIPaddress | SourceHostName | SourcePost | कंप्यूटर | डेस्टिनेशनपैडड्रेस | DestinationHostName | डेस्टिनेशनपोर्ट | एक्शन | स्थिति | फ़ाइलपथ | EventID | WeekDay | DayTime + ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - + | 171390673 | |? |? |? |? | domaincontroller1.domain.com | 1.1.1.1 | domaincontroller1.domain.com | | / प्रमाणीकरण / सत्यापित करें | / सफलता |? | 4624 | 1 | 61293 | + ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - + | 173348232 | |? |? |? |? | domaincontroller2.domain.com | 2.2.2.2 | domaincontroller2.domain.com | | / प्रमाणीकरण / सत्यापित करें | / सफलता |? | 4624 | 1 | 61293 | + ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - + | 180176916 | |? |? |? |? | domaincontroller2.domain.com | 2.2.2.2 | domaincontroller2.domain.com | | / प्रमाणीकरण / सत्यापित करें | / सफलता |? | 4624 | 1 | 61293 | + ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - + | 144144725 | | John.Doe | 3.3.3.3 | domaincontroller3.domain.com | 2407 | domaincontroller3.domain.com | 3.3.3.4 | domaincontroller3.domain.com | | / प्रमाणीकरण / सत्यापित करें | / सफलता |? | 4624 | 3 | 12345 | + ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - +
कुल मिलाकर, मेरे पास लगभग 150 मिलियन इवेंट हैं। अलग-अलग घटनाओं में अलग-अलग फ़ील्ड्स भरे होते हैं, और सभी इवेंट उपयोगकर्ता लॉगऑन / लॉगऑफ़ से संबंधित नहीं होते हैं।