
maltrail v2.2
रीयल-टाइम दुर्भावनापूर्ण ट्रैफ़िक पहचान प्रणाली जो सार्वजनिक ब्लैकलिस्ट, स्थिर मैलवेयर निशान और ह्यूरिस्टिक विश्लेषण का उपयोग करके DNS, HTTP और IP ट्रैफ़िक में खतरों की पहचान करती है।

Maltrail
Maltrail एक नेटवर्क ट्रैफ़िक डिटेक्शन प्रणाली है जो ज्ञात दुर्भावनापूर्ण बुनियादी ढांचे के साथ संचार की पहचान करती है और चयनित ट्रैफ़िक विसंगतियों की रिपोर्ट करती है। यह नेटवर्क पर देखे गए डोमेन, URL, IP पते, IP:port जोड़े, और User-Agent मानों को trails नामक संकेतकों के एक सेट के विरुद्ध मिलाता है।
एक डिटेक्शन को एक एकल घटना के रूप में दर्ज किया जाता है जिसमें स्रोत, गंतव्य, प्रोटोकॉल, मिलान किया गया trail, वर्गीकरण, और trail स्रोत शामिल होते हैं:```text "2026-08-07 09:14:22.117034" gw 10.13.13.2 57809 1.1.1.1 53 UDP DNS malware.bakewithdavid.com "asyncrat (malware)" (static)
Maltrail को संकेत-आधारित नेटवर्क निगरानी के लिए डिज़ाइन किया गया है। इसकी अनुमानी (heuristic) पहचान ट्रेल मिलान को पूरक बनाती है, लेकिन यह एंडपॉइंट टेलीमेट्री या सामान्य-उद्देश्य वाले इंट्रूज़न प्रिवेंशन सिस्टम का विकल्प नहीं है।
## विशेषताएँ
- 3,000 से अधिक बंडल किए गए स्थिर फ़ाइलों, 42 सार्वजनिक-फ़ीड एकीकरणों, और वैकल्पिक ऑपरेटर-आपूर्ति किए गए ट्रेल्स को मिलाकर एक पूर्ण ट्रेल निर्माण।
- libpcap का उपयोग करने वाला एक मल्टीथ्रेडेड Rust सेंसर, जिसमें वैकल्पिक Linux `PACKET_FANOUT` कैप्चर वर्कर्स शामिल हैं।
- रिपोर्टिंग इंटरफ़ेस, इवेंट इनटेक, और HTTP API प्रदान करने वाला एक Python सर्वर।
- सादा-पाठ कस्टम ट्रेल्स और व्हाइटलिस्ट जिनकी समीक्षा की जा सकती है और जिन्हें संस्करण-नियंत्रित किया जा सकता है।
- स्कैनिंग, DNS थकावट, DGA-जैसी लुकअप, संदिग्ध डाउनलोड, प्रॉक्सी प्रोब, संदिग्ध User-Agent मान, और संबंधित नेटवर्क गतिविधि के लिए अनुमानी (heuristics)।
- स्थानीय इवेंट लॉगिंग, दूरस्थ Maltrail लॉगिंग, syslog पर CEF, और Logstash JSON आउटपुट।
- `maltrail-sensor -T` के साथ परिनियोजन सत्यापन और वैकल्पिक Prometheus मेट्रिक्स।
## सामग्री
- [आर्किटेक्चर](#architecture)
- [रिपोर्टिंग इंटरफ़ेस](#reporting-interface)
- [प्रदर्शन](#performance)
- [स्थापना](#installation)
- [इंस्टॉलर](#installer)
- [स्रोत से निर्माण](#building-from-source)
- [Systemd](#systemd)
- [Docker](#docker)
- [कॉन्फ़िगरेशन](#configuration)
- [ट्रेल्स](#trails)
- [इवेंट्स और API](#events-and-api)
- [संचालन](#operations)
- [निगरानी](#monitoring)
- [इवेंट प्रतिधारण](#event-retention)
- [दस्तावेज़ीकरण](#documentation)
- [योगदान](#contributing)
- [परियोजना](#project)
- [लाइसेंस](#license)
- [अनुरक्षक](#maintainers)
- [प्रायोजक](#sponsors)
- [प्रस्तुतियाँ और प्रकाशन](#presentations-and-publications)
- [व्युत्पन्न ब्लैकलिस्ट](#derived-blacklist)
- [तृतीय-पक्ष एकीकरण](#third-party-integrations)
- [आभार](#acknowledgements)
## आर्किटेक्चर
Maltrail में दो स्वतंत्र प्रक्रियाएँ शामिल हैं जो एक ही होस्ट पर या अलग-अलग होस्ट पर चल सकती हैं:```text
┌──────────┐ events (UDP or file) ┌──────────┐
│ sensor │ ───────────────────────► │ server │ ◄── browser
└──────────┘ └──────────┘
Rust Python
libpcap + PACKET_FANOUT reporting UI + API
trail matching + heuristics
सेंसर ट्रैफ़िक कैप्चर करता है, ट्रेल मिलान और ह्यूरिस्टिक विश्लेषण करता है, और इवेंट उत्पन्न करता है।
यह इवेंट को स्थानीय रूप से (LOG_DIR) लिख सकता है, उन्हें दूरस्थ Maltrail सर्वर (LOG_SERVER) पर भेज सकता है, या
दोनों कर सकता है। यह syslog पर CEF (SYSLOG_SERVER) और Logstash को JSON
(LOGSTASH_SERVER) भी भेज सकता है।
सर्वर दूरस्थ इवेंट प्राप्त करता है और संग्रहीत करता है, स्थानीय रूप से उपलब्ध इवेंट लॉग परोसता है, और वेब इंटरफ़ेस और API प्रदान करता है।
रिपोर्टिंग इंटरफ़ेस
Maltrail में पता लगाए गए ट्रैफ़िक की खोज के लिए एक ब्राउज़र-आधारित रिपोर्टिंग इंटरफ़ेस शामिल है, जिसमें लाइव अपडेट, फ़ील्ड-जागरूक खोज, रेट्रो हंटिंग, भौगोलिक दृश्य, ट्राइएज, सहेजे गए दृश्य और निर्यात शामिल हैं।

इंटरफ़ेस server.py द्वारा HTTP_ADDRESS:HTTP_PORT पर परोसा जाता है। यह एक सादा JavaScript है जिसमें
एकल तृतीय-पक्ष रनटाइम निर्भरता (PapaParse, CSV पार्सिंग के लिए) है और कोई बिल्ड चरण नहीं है। एक समय में
एक दिन देखा जाता है, जिसे एक दिनांक पिकर से चुना जाता है जो उपलब्ध दैनिक लॉग पर इवेंट-घनत्व ग्रिड के रूप में
दोगुना काम करता है। इवेंट /events से स्ट्रीम किए जाते हैं और ब्राउज़र में थ्रेट्स में एकत्रित किए जाते हैं —
प्रत्येक अलग (source, trail) के लिए एक पंक्ति — जो एक विवरण पैनल के साथ सॉर्ट करने योग्य ग्रिड में दिखाई जाती है।
| सुविधा | नोट्स |
|---|---|
| लाइव मोड | जोड़े गए इवेंट Server-Sent Events (/live) पर पुश किए जाते हैं और वर्तमान दृश्य में विलय कर दिए जाते हैं। SSE अनुपलब्ध होने पर, या उन सत्रों के लिए जिन्हें स्ट्रीम परोस नहीं सकती, दैनिक लॉग के बाइट रेंज को पोल करने पर वापस आ जाता है। नए उच्च-गंभीरता वाले थ्रेट डेस्कटॉप सूचना और श्रव्य अलर्ट उठा सकते हैं; दोनों को म्यूट किया जा सकता है |
| खोज | फ़ील्ड-स्कोप्ड टोकन (src: dst: port: proto: type: trail: info: family: tag: uid: sev: dir: status:; family:interlock interlock-1/-2 को खींचता है, वे शार्ड जिनमें एक फ़ीड डंप विभाजित होकर आता है) स्पेस के साथ AND के रूप में संयुक्त, बहिष्करण के लिए -, * वाइल्डकार्ड, CIDR (src:10.0.0.0/8), और संख्यात्मक रेंज और तुलना (port:>1024, count:>=100)। सक्रिय फ़िल्टर हटाने योग्य चिप्स के रूप में दिखाई देते हैं |
| रेट्रो हंट | केवल दृश्य में मौजूद दिन के लिए नहीं, बल्कि सभी संग्रहीत दैनिक लॉग में एक संकेतक (/hunt) खोजता है। दिन सीमा, वॉल-क्लॉक बजट और नमूना कैप द्वारा सीमित; जिस दिन बजट कम पड़ जाता है उसे पूर्ण दिनों से अलग रिपोर्ट किया जाता है, न कि पूर्ण कुल के रूप में गिना जाता है। एक प्रति-दिन साइडकार इंडेक्स (LOG_DIR/index/, USE_EVENT_INDEX) स्कैन को हर गैर-मिलान वाली पंक्ति को छोड़ने देता है और /counts को सटीक बनाता है |
| विश्व मानचित्र | चयनित दिन के लिए प्रति-देश इवेंट घनत्व (/geo), प्रत्येक इवेंट के बाहरी एंडपॉइंट को रखता है। जिन इवेंट को बाहरी पते से संबद्ध नहीं किया जा सकता, उन्हें अनुमान लगाने के बजाय अमैप्ड के रूप में रिपोर्ट किया जाता है। उत्पत्ति चाप खींचने के लिए HOME_LAT / HOME_LON सेट करें |
| ट्राइएज | प्रति-थ्रेट स्थिति (नया / जांच में / हल किया गया / गलत सकारात्मक), फ्री-टेक्स्ट नोट्स, टैग और छिपाना। व्हाइटलिस्ट नियम और OSINT पिवट पंक्ति संदर्भ मेनू से उपलब्ध हैं |
| सहेजे गए दृश्य | नामित फ़िल्टर प्रीसेट |
| निर्यात | वर्तमान फ़िल्टर किया गया दृश्य CSV, JSON, या डिफैंग्ड संकेतक के रूप में |
| दिखावट | डार्क और लाइट थीम, और अलग-अलग टेक्स्ट-आकार चरण |
ट्राइएज स्थिति, सहेजे गए दृश्य, टैग और दिखावट सेटिंग्स ब्राउज़र में संग्रहीत हैं
(localStorage), सर्वर पर नहीं: वे प्रति-ब्राउज़र और प्रति-ओरिजिन हैं, और विश्लेषकों के बीच
साझा नहीं किए जाते हैं।
नेटवर्क फ़िल्टर के साथ प्रतिबंधित सत्र केवल अपने स्वयं के नेटवर्क के इवेंट देखते हैं, और वह प्रतिबंध काउंट, मानचित्र और ब्लैकलिस्ट एंडपॉइंट के साथ-साथ इवेंट सूची पर भी लागू होता है।
व्यक्तिगत पतों के लिए देश और ASN संवर्धन सर्वर द्वारा stat.ripe.net पर देखा जाता है,
जो परिणामों को कैश करता है और उन्हें अपने स्वयं के /ripe एंडपॉइंट से इंटरफ़ेस को परोसता है;
ब्राउज़र Maltrail के अलावा किसी और से बात नहीं करता। आउटबाउंड लुकअप को पूरी तरह से बंद करने के लिए
DISABLE_RIPE_LOOKUPS सेट करें। उनके बिना — या इंटरनेट एक्सेस के बिना होस्ट पर — झंडे
स्थानीय RIR तालिका से आते हैं और इंटरफ़ेस में बाकी सब कुछ ऑफ़लाइन काम करता है।
प्रदर्शन
प्रदर्शन प्रोसेसर, ट्रैफ़िक संरचना, ट्रेल-सेट आकार, कैप्चर ड्राइवर और नेटवर्क इंटरफ़ेस पर निर्भर करता है। नीचे दिए गए आंकड़े सेंसर के पैकेट-प्रोसेसिंग पथ को अलगाव में मापते हैं; वे एंड-टू-एंड लाइव-कैप्चर माप नहीं हैं।
AMD Ryzen 7 PRO 4750U पर ह्यूरिस्टिक्स सक्षम और 1.5 मिलियन-पंक्ति ट्रेल सेट के साथ प्रतिनिधि माप:
| ट्रैफ़िक | प्रति पैकेट समय |
|---|---|
| ICMP इको, 58 बाइट्स | 101 ns |
| TCP SYN, 70 बाइट्स | 302 ns |
| बल्क TLS, 1,473 बाइट्स | 402 ns |
| गर्म कैश के साथ DNS क्वेरी, 93 बाइट्स | 452 ns |
| मिश्रित ट्रैफ़िक, 866-बाइट औसत | 552 ns |
| HTTP अनुरोध, 169 बाइट्स | 602 ns |
| अद्वितीय नाम के साथ DNS क्वेरी, 93 बाइट्स | 1,102 ns |
समान उत्पन्न कैप्चर, कॉन्फ़िगरेशन और ट्रेल सेट का उपयोग करके ऑफ़लाइन तुलना रन ने परीक्षण किए गए
सिस्टम में सेवानिवृत्त Python सेंसर की तुलना में 14–37× कम स्थिर-अवस्था प्रति-पैकेट लागत मापी।
वे आंकड़े पूरे-प्रक्रिया समय को स्थिर अवस्था से अलग करते हैं, क्योंकि ट्रेल लोडिंग एक छोटे
रीप्ले पर हावी होती है। पता लगाने का परीक्षण अलग से किया जाता है, sensor/tests/replay.rs में 42-मामले के कॉर्पस द्वारा।
इसे लक्ष्य प्रणाली पर मापें:```bash cargo bench --manifest-path sensor/Cargo.toml --bench hotpath
डिफ़ॉल्ट रूप से एक कैप्चर वर्कर उपयोग किया जाता है। अतिरिक्त वर्कर कैप्चर क्षमता बढ़ा सकते हैं, लेकिन Linux
फ्लो हैशिंग प्रति-स्रोत स्थिति को वर्करों के बीच विभाजित करती है और इसलिए कुछ स्कैन
ह्यूरिस्टिक्स की संवेदनशीलता को कम करती है। प्रलेखित परीक्षण में, 91% सिंगल-वर्कर ह्यूरिस्टिक अलर्ट दो
वर्करों के साथ बने रहे, चार के साथ 86%, और आठ के साथ 65%। सटीक ट्रेल मिलान अपरिवर्तित रहा। `CAPTURE_FANOUT` को केवल तभी बढ़ाएँ
जब कैप्चर-ड्रॉप मेट्रिक्स दिखाएँ कि यह आवश्यक है।
बेंचमार्क पद्धति, हार्डवेयर परिणाम, प्रोफाइलर आउटपुट, मेमोरी माप, और लाइव फैनआउट
जाँचें [`sensor/docs/REPORT.md`](https://github.com/stamparm/maltrail/blob/master/sensor/docs/REPORT.md) में प्रलेखित हैं।
## इंस्टॉलेशन
### इंस्टॉलर
इंस्टॉलर Debian, Ubuntu, Raspberry Pi OS, RHEL, Fedora, और openSUSE का समर्थन करता है:```bash
curl -fsSL https://raw.githubusercontent.com/stamparm/maltrail/master/install.sh | sudo sh
यह निर्भरताएँ स्थापित करता है, /opt/maltrail के अंतर्गत एक प्रबंधित चेकआउट बनाता है, पूर्व-निर्मित सेंसर के चेकसम की पुष्टि करता है, एक अन-विशेषाधिकार प्राप्त maltrail खाता बनाता है, systemd यूनिट्स स्थापित करता है, लॉग और स्टेट निर्देशिकाएँ तैयार करता है, और सेंसर तथा सर्वर को प्रारंभ करता है। इंस्टॉलर को दोबारा चलाने से प्रबंधित चेकआउट अपग्रेड हो जाता है।
इसे उन्नत विशेषाधिकारों के साथ चलाने से पहले स्क्रिप्ट की समीक्षा करें। किसी मौजूदा चेकआउट से, ड्राई रन सिस्टम को बदले बिना कमांड दिखाता है:```bash sh install.sh --dry-run
सामान्य इंस्टॉलर विकल्प:```bash
sh install.sh --role sensor # Install only the sensor
sh install.sh --ref 3.1.2 # Install a release tag instead of master
sh install.sh --no-service # Install without changing systemd
sh install.sh --dry-run # Print commands without applying them
sh install.sh --uninstall # Remove the managed installation; keep logs and state
डैशबोर्ड इंस्टॉलेशन के बाद http://127.0.0.1:8338 पर उपलब्ध है। ध्यान दें कि शिप किया गया
HTTP_ADDRESS 0.0.0.0 है, इसलिए यह केवल लूपबैक पर नहीं, बल्कि हर इंटरफ़ेस पर पहुंच योग्य है — और
डिफ़ॉल्ट क्रेडेंशियल admin / changeme! हैं। होस्ट को अविश्वसनीय नेटवर्क पर रखने से पहले USERS बदलें, और HTTP_ADDRESS को
127.0.0.1 पर सेट करें (या सर्वर को TLS के साथ रिवर्स प्रॉक्सी के पीछे रखें)।
प्रारंभिक ट्रेल बिल्ड में कई मिनट लग सकते हैं। सेंसर तब तक ट्रेल मैचों का पता नहीं लगाता जब तक कि
एक मान्य ट्रेल सेट उपलब्ध न हो। systemd यूनिट स्टार्टअप से पहले सेंसर का -T वैलिडेशन चलाता है ताकि
गायब विशेषाधिकार, एक अनलिखने योग्य लॉग निर्देशिका, या एक अमान्य ट्रेल सेट के कारण स्टार्टअप स्पष्ट रूप से विफल हो जाए।
इंस्टॉलर टेस्ट हार्नेस Ubuntu, Debian, Fedora, openSUSE, और Alpine कंटेनरों को कवर करता है। Alpine musl का उपयोग करता है और प्रीबिल्ट glibc सेंसर बाइनरी का उपयोग नहीं करता; वहां सेंसर को स्रोत से बनाएं।
स्रोत से निर्माण
सेंसर के लिए Rust 1.74 या नया, libpcap डेवलपमेंट हेडर, और सिस्टम की क्षमता टूल्स की आवश्यकता होती है। सर्वर और ट्रेल अपडेटर के लिए Python 3.6 या नया आवश्यक है।
वितरण पैकेज इंस्टॉल करें:```bash
Debian / Ubuntu / Raspberry Pi OS
sudo apt-get install cargo libpcap-dev libcap2-bin python3
RHEL / Fedora
sudo dnf install cargo libpcap-devel libcap python3
openSUSE / SLES
sudo zypper install cargo rust libpcap-devel libcap-progs python311
तब सेंसर को बनाएं और मान्य करें:```bash
git clone --depth 1 https://github.com/stamparm/maltrail.git
cd maltrail
cargo build --release --manifest-path sensor/Cargo.toml
sudo setcap cap_net_raw,cap_net_admin=eip \
sensor/target/release/maltrail-sensor
sudo install -d -o "$USER" -g "$(id -gn)" -m 750 /var/log/maltrail
sensor/target/release/maltrail-sensor -T
sensor/target/release/maltrail-sensor
सर्वर को दूसरे टर्मिनल या दूसरे होस्ट पर शुरू करें:```bash python3 server.py
पूर्व-निर्मित `x86_64` और `aarch64` सेंसर बाइनरी वर्तमान रिलीज़ के साथ SHA-256 चेकसम सहित संलग्न हैं।
वे libpcap को स्थिर रूप से लिंक करते हैं और glibc 2.28 को लक्षित करते हैं, इसलिए C लाइब्रेरी ही एकमात्र चीज़ है
जिसकी उन्हें आवश्यकता है — RHEL 8+, Debian 10+, Ubuntu 18.04+ और Leap 15.x पर कुछ भी इंस्टॉल करने की ज़रूरत नहीं।
Alpine Linux जैसे musl-आधारित सिस्टम पर, स्रोत से बिल्ड करें।
**3.1.1 और उससे पहले** के बाइनरी ऐसा नहीं करते थे: वे libpcap को गतिशील रूप से लिंक करते थे, और इसे उस
नाम से मांगते थे जो उनका AlmaLinux बिल्ड होस्ट उपयोग करता है। Debian और Ubuntu समान लाइब्रेरी को पुराने
नाम `libpcap.so.0.8` के तहत वितरित करते हैं, इसलिए वे बाइनरी शुरू होने से पहले ही रुक जाते हैं —```
./maltrail-sensor: error while loading shared libraries: libpcap.so.1: cannot open shared object file
— ऐसी मशीन पर जिसमें libpcap इंस्टॉल हो। install.sh आपके लिए गायब नाम को लिंक कर देता है। हाथ से:```bash
adjust the directory for your architecture: aarch64-linux-gnu, or /usr/lib64 on RPM distributions
sudo ln -sf /usr/lib/x86_64-linux-gnu/libpcap.so.0.8 /usr/lib/x86_64-linux-gnu/libpcap.so.1 sudo ldconfig
### Systemd
आपूर्ति की गई `packaging/systemd/` इकाइयाँ दोनों प्रक्रियाओं को
अन-विशेषाधिकार प्राप्त `maltrail` उपयोगकर्ता के रूप में चलाती हैं। Systemd `/var/log/maltrail` और `/var/lib/maltrail` बनाता है, फ़ाइलसिस्टम पहुँच को प्रतिबंधित करता है,
और सेंसर को `CAP_NET_RAW` और `CAP_NET_ADMIN` प्रदान करता है।
इंस्टॉलर इन इकाइयों को स्वचालित रूप से कॉन्फ़िगर करता है। मौजूदा स्रोत इंस्टॉलेशन के लिए, [`sensor/docs/INSTALL.md`](https://github.com/stamparm/maltrail/blob/master/sensor/docs/INSTALL.md) में दी गई
मैन्युअल सेवा प्रक्रिया का पालन करें।
सेवा की स्थिति और लॉग इस प्रकार जाँचें:```bash
systemctl status maltrail-sensor maltrail-server
journalctl -u maltrail-sensor -f
Docker
दिए गए Compose डिप्लॉयमेंट को इस प्रकार प्रारंभ करें:```bash docker compose -f docker/docker-compose.yml up -d
कंटेनर कॉन्फ़िगरेशन, स्टोरेज, विशेषाधिकार, और हेल्थ चेक्स [`docker/README.md`](https://github.com/stamparm/maltrail/blob/master/docker/README.md) में प्रलेखित हैं।
## कॉन्फ़िगरेशन
Maltrail `maltrail.conf` पढ़ता है, जिसमें अलग-अलग `[Sensor]` और `[Server]` सेटिंग्स होती हैं। इंस्टॉलर प्रबंधित कॉन्फ़िगरेशन को `/etc/maltrail.conf` पर रखता है।
अक्सर उपयोग किए जाने वाले सेंसर विकल्पों में शामिल हैं:
| विकल्प | उद्देश्य |
| --- | --- |
| `MONITOR_INTERFACE` | कैप्चर इंटरफ़ेस या इंटरफ़ेस; `any` सभी समर्थित इंटरफ़ेस का चयन करता है |
| `CAPTURE_FILTER` | BPF कैप्चर फ़िल्टर |
| `CAPTURE_FANOUT` | Linux कैप्चर सॉकेट्स की संख्या; डिफ़ॉल्ट एक है |
| `CAPTURE_WORKERS` | कैप्चर वर्कर्स, प्रत्येक एक सॉकेट; डिफ़ॉल्ट `CAPTURE_FANOUT` है, इसलिए एक जब तक कि इनमें से कोई एक सेट न हो |
| `LOG_DIR` | स्थानीय इवेंट-लॉग निर्देशिका |
| `TRAILS_FILE` | जनरेट की गई ट्रेल डेटाबेस |
| `LOG_SERVER` | रिमोट Maltrail इवेंट सर्वर |
| `SYSLOG_SERVER` | CEF syslog गंतव्य या गंतव्य |
| `LOGSTASH_SERVER` | Logstash JSON गंतव्य या गंतव्य |
| `STATS_ADDRESS` | Prometheus मेट्रिक्स लिसनर; कॉन्फ़िगर न होने तक अक्षम |
| `UPDATE_PERIOD` | ट्रेल रीफ़्रेश अंतराल |
| `STATIC_TRAILS_URL` | जहाँ से असेंबल किया गया स्टैटिक ट्रेल सेट लाया जाता है; नई सामग्री कब आए यह नियंत्रित करने के लिए इसे दिनांकित रिलीज़ पर पिन करें |
| `USER_WHITELIST` | ऑपरेटर-प्रबंधित संकेतक जिन्हें अलर्ट नहीं करना चाहिए |
| `CUSTOM_TRAILS_DIR` | ऑपरेटर-प्रबंधित ट्रेल निर्देशिका |
| `STATIC_TRAILS_DIR` | ट्रेल्स रिपॉज़िटरी का वैकल्पिक चेकआउट; केवल UI में ट्रेल के स्रोत उद्धरण दिखाने के लिए उपयोग किया जाता है |
`PROCESS_COUNT` सेवानिवृत्त Python सेंसर और लीगेसी इवेंट-लॉग थ्रॉटल पर लागू होता है; यह Rust सेंसर की वर्कर संख्या **नहीं** सेट करता है। इसके बजाय `CAPTURE_FANOUT` या `CAPTURE_WORKERS` के साथ कैप्चर वर्कर्स कॉन्फ़िगर करें।
कॉन्फ़िगरेशन बदलने के बाद डिप्लॉयमेंट चेक चलाएँ:```bash
sensor/target/release/maltrail-sensor -T
The check validates configuration, trails, whitelist entries, capture filter, privileges, log storage, update support, and worker settings. A successful check includes positive trail and whitelist counts rather than only confirming that files exist.
Trails
A trail is one indicator — a domain, URL, IP address, IP:port pair, User-Agent, JA3/JA4
fingerprint or certificate hash — together with what it means and where it came from. The updater
merges four sources into TRAILS_FILE, in this order:
| source | where it comes from |
|---|---|
| Feeds | feeds/*.py, fetched directly by your deployment from each publisher |
| Custom | CUSTOM_TRAILS_DIR and CUSTOM_TRAILS_URL, your own indicators |
| Static | the assembled set from stamparm/trails, fetched from STATIC_TRAILS_URL |
| Engine lists | data/mass_scanner*.txt, shipped here because they change rarely |
The static trails live in their own repository. Detection content changes tens of times a
day; the engine does not, and keeping them together meant updating detection required pulling code
and made this repository's history unusable. STATIC_TRAILS_URL points at the newest published
set:```text
STATIC_TRAILS_URL https://github.com/stamparm/trails/releases/latest/download/trails.csv.gz
इसे किसी विशिष्ट `content-YYYYMMDD-HHMM` रिलीज़ पर इंगित करें ताकि एक संस्करण पिन हो सके, ताकि एक खराब प्रकाशन तुरंत वैश्विक न हो जाए। सेट `TRAILS_FILE` के पास कैश किया जाता है, जो ऑफ़लाइन या एयर-गैप्ड रीबिल्ड को काम करने योग्य बनाता है; प्रकाशित `sha256` डाउनलोड करने से पहले जाँचा जाता है, इसलिए एक डिप्लॉयमेंट जो कंटेंट बदलने की तुलना में अधिक बार अपडेट होता है, 11 MB के बजाय 65 बाइट्स स्थानांतरित करता है, और एक पेलोड जो अपने डाइजेस्ट से मेल नहीं खाता, उसे कैश के पक्ष में अस्वीकार कर दिया जाता है।
`update_trails()` एक नया `TRAILS_FILE` परमाणु रूप से और केवल सफल बिल्ड के बाद प्रकाशित करता है। जो फ़ीड कुछ भी नहीं लौटाते हैं, उन्हें नाम से रिपोर्ट किया जाता है, ताकि एक डिप्लॉयमेंट चुपचाप किसी ऐसे स्रोत पर निर्भर न रहे जो चुपचाप सेवानिवृत्त हो गया है।
अपने स्वयं के संकेतक `CUSTOM_TRAILS_DIR` के अंतर्गत जोड़ें, और जो कुछ भी कभी भी कोई इवेंट नहीं उठाना चाहिए, उसे `USER_WHITELIST` में रखें। दोनों को इंस्टॉलेशन निर्देशिका के बाहर रखें ताकि कोई अपग्रेड उन्हें अधिलेखित न कर सके।
स्थिर ट्रेल योगदान [stamparm/trails](https://github.com/stamparm/trails) पर जाते हैं; नई फ़ीड यहाँ जाती हैं। किसी भी तरह, एक संकेतक को एक वर्गीकरण और एक स्रोत की आवश्यकता होती है जिसे कोई जाँच सके — देखें [Contributing](#contributing)।
## इवेंट्स और API
Maltrail प्रत्येक पहचान के लिए एक व्हाइटस्पेस-पृथक इवेंट रिकॉर्ड करता है, CSV कोटिंग का उपयोग करते हुए जहाँ किसी मान में स्पेस होते हैं:```text
"<time>" <sensor> <src_ip> <src_port> <dst_ip> <dst_port> <proto> <type> <trail> "<info>" <reference>
type फ़ील्ड पहचान करता है कि क्या मेल खाया, जिसमें DNS, IP, IPORT, URL, PATH, HTTP,
UA, PORT, CERT, JA3, और JA4 शामिल हैं। info फ़ील्ड में ट्रेल वर्गीकरण होता है, और
reference उस स्थिर सूची, फ़ीड, कस्टम स्रोत, या ह्यूरिस्टिक की पहचान करता है जिसने इसे उत्पन्न किया।
JA3/JA4 प्रकार TLS क्लाइंट फ़िंगरप्रिंट पर सक्रिय होते हैं: एक इम्प्लांट का TLS स्टैक हर
पते और डोमेन रोटेशन से बच जाता है, इसलिए इसका हैलो हैश तब भी मेल खाता रहता है जब बाकी सब कुछ जल चुका हो
(abuse.ch SSLBL JA3 फ़ीड द्वारा प्रकाशित)।
इंडिकेटर लुकअप
एक डोमेन, IP पता, या URL क्वेरी करने के लिए /check का उपयोग करें:```bash
curl 'http://127.0.0.1:8338/check?q=www.sub.evil.example'
यहाँ आपका अनुवाद है:
```markdown
यह सुनिश्चित करने के लिए कि आपका सिस्टम सुरक्षित है, निम्नलिखित कमांड चलाएँ:
```bash
sudo apt update && sudo apt upgrade -y
यदि आपको कोई समस्या आती है, तो कृपया GitHub Issues पर रिपोर्ट करें।
स्थापना
स्थापना के लिए, नीचे दिए गए चरणों का पालन करें:
- रिपॉजिटरी को क्लोन करें:
git clone https://github.com/example/repo.git - निर्भरताएँ स्थापित करें:
pip install -r requirements.txt - टूल चलाएँ:
python main.py --help
उपयोग
टूल का उपयोग करने के लिए, निम्नलिखित विकल्प उपलब्ध हैं:
| विकल्प | विवरण |
|---|---|
-h, --help | सहायता संदेश दिखाएँ |
-v, --verbose | विस्तृत आउटपुट सक्षम करें |
-o, --output | आउटपुट फ़ाइल निर्दिष्ट करें |
उदाहरण:
python main.py -v -o results.txt
लाइसेंस
यह परियोजना MIT लाइसेंस के अंतर्गत लाइसेंस प्राप्त है। विवरण के लिए LICENSE फ़ाइल देखें।
{
"query": "www.sub.evil.example",
"found": true,
"trail": "evil.example",
"info": "asyncrat (malware)",
"reference": "(static)",
"confidence": 100
}
```
`confidence` फ़ील्ड (0-100, या अनुपलब्ध होने पर `null`) बताता है कि स्रोत सूची का कितनी मज़बूती से समर्थन करते हैं: एकल फ़ीड के लिए 40, प्रत्येक अतिरिक्त स्वतंत्र रूप से सहमत फ़ीड के लिए +15 (100 तक), और ऑपरेटर के अपने कस्टम और स्थिर प्रविष्टियों के लिए पूर्ण अंक। इसकी गणना ट्रेल-अपडेट समय पर फ़ीड सहमति से `trails.csv` के बगल में एक `trails.confidence` साइडकार में की जाती है; `UPDATE_SERVER` से ट्रेल खींचने वाला सर्वर स्कोर करने के लिए कोई प्रोवेनेंस नहीं रखता और `null` रिपोर्ट करता है। इसका उपयोग ट्राइएज को प्राथमिकता देने के लिए करें - 40 पर एक एकल-फ़ीड सूची फ़ायरवॉल नियम अर्जित करने से पहले दूसरी नज़र की हक़दार है।
एक सबडोमेन लुकअप अपने सूचीबद्ध पैरेंट से मेल खा सकता है। URL लुकअप होस्ट अकेले जाँचने से पहले `host/path` जाँचते हैं। सर्वर मेमोरी-मैप्ड ट्रेल डेटाबेस पढ़ता है और बिना रीस्टार्ट के ट्रेल अपडेट देखता है।
सार्वजनिक स्थिर और फ़ीड ट्रेल्स बिना प्रमाणीकरण के उपलब्ध हैं, जो रिमोट सेंसर द्वारा उपयोग किए जाने वाले `/trails` एंडपॉइंट के अनुरूप हैं। कस्टम ट्रेल्स के लिए एक अधिकृत सत्र आवश्यक है; एक अनधिकृत कस्टम-केवल लुकअप को मिस के रूप में रिपोर्ट किया जाता है। इवेंट डेटा प्रमाणित रहता है।
## संचालन
### निगरानी
तैनाती और कॉन्फ़िगरेशन गेट के रूप में `maltrail-sensor -T` का उपयोग करें। आपूर्ति की गई systemd यूनिट इसे `ExecStartPre` के रूप में चलाती है।
यह पुष्टि करने के लिए कि डिटेक्शन स्वयं काम करता है — न कि केवल प्रक्रियाएँ शुरू होती हैं — चलाएँ:```bash
python3 server.py --detect-test
```
यह एक निर्मित दुर्भावनापूर्ण ट्रैफ़िक का pcap रीप्ले करता है (DNS क्वेरी, एक IP, एक `IP:port`, एक URL पथ और एक `Host` हेडर पर ट्रेल हिट, साथ ही SQL-इंजेक्शन, ट्रैवर्सल, RCE, XSS, प्रॉक्सी-प्रोब, सिंकहोल, मिसिंग-`Host` और पोर्ट/वेब/इंफेक्शन-स्कैनिंग ह्यूरिस्टिक्स) स्थापित सेंसर के माध्यम से और यह सुनिश्चित करता है कि हर अपेक्षित डिटेक्शन फायर हो। इसे किसी रूट, इंटरफ़ेस या अपने स्वयं के ट्रेल सेट की आवश्यकता नहीं है। एक स्वस्थ इंस्टॉल `20/20 डिटेक्शन फायर हुए` प्रिंट करता है।
जब `STATS_ADDRESS` कॉन्फ़िगर किया गया हो, तो कम से कम इन Prometheus मेट्रिक्स की निगरानी करें:
| मेट्रिक | परिचालन अर्थ |
| --- | --- |
| `maltrail_up == 0` | कोई कैप्चर वर्कर नहीं चल रहा है |
| बढ़ता हुआ `maltrail_capture_dropped_total` | कैप्चर रिंग पैकेट गिरा रही है |
| बढ़ता हुआ `maltrail_local_log_errors_total` | इवेंट उत्पन्न हुए लेकिन स्थानीय रूप से लिखे नहीं जा सके |
| बढ़ता हुआ `maltrail_remote_log_errors_total` | इवेंट रिमोट सिंक तक नहीं पहुँचाए जा सके; `DISABLE_LOCAL_LOG_STORAGE` के साथ वे खो जाते हैं |
| `maltrail_trail_generation` आगे नहीं बढ़ रहा | सक्रिय ट्रेल सेट रीफ़्रेश नहीं हो रहा है |
| `maltrail_log_dir_free_bytes` | स्थानीय इवेंट स्टोरेज के लिए शेष क्षमता |
| बढ़ता हुआ `maltrail_state_saturations_total` | एक ह्यूरिस्टिक स्टेट सीमा तक पहुँच गया |
| बढ़ता हुआ `maltrail_throttle_evictions_total` | इवेंट-थ्रॉटल टेबल अपनी सीमा पर है, इसलिए इवेंट कॉन्फ़िगर से पहले एकत्रित हो जाते हैं |
स्टेट सैचुरेशन संबंधित ह्यूरिस्टिक को प्रभावित करता है; सटीक ट्रेल मिलान सक्रिय रहता है।
ट्रेल रीलोड का अनुरोध करने के लिए `SIGHUP` भेजें या `systemctl reload maltrail-sensor` का उपयोग करें। किसी अन्य प्रक्रिया द्वारा अपडेट की गई ट्रेल फ़ाइलें स्वचालित रूप से पहचानी जाती हैं और सेंसर को पुनः आरंभ किए बिना वर्कर्स को प्रकाशित की जाती हैं।
संघनित अवलोकन स्टोर (`USE_CONDENSED_STORAGE`, `meta.sqlite`) सर्वर के नवीनता और रेट्रो-हंट दृश्यों का समर्थन करता है। प्रति-दिन इवेंट-लॉग साइडकार इंडेक्स (`USE_EVENT_INDEX`, `LOG_DIR/index/*.sqlite`, डिस्क पर लॉग आकार का लगभग दोगुना) वह है जो `/counts` को सटीक और `/hunt` को तेज़ बनाता है; इसे लॉग से ही वृद्धिशील रूप से बनाए रखा जाता है और `server.py --rebuild-index` के साथ पुनर्निर्मित किया जा सकता है। सेवानिवृत्त सेंसर के साथ संगतता [`sensor/docs/COMPATIBILITY.md`](https://github.com/stamparm/maltrail/blob/master/sensor/docs/COMPATIBILITY.md) में प्रलेखित है।
### इवेंट प्रतिधारण
Maltrail इवेंट लॉग को घुमाता या हटाता नहीं है। ऑपरेटर स्टोरेज आवश्यकताओं और संगठनात्मक नीति के अनुसार प्रतिधारण, संग्रह और विलोपन को परिभाषित करने के लिए जिम्मेदार हैं।
अनुशंसित प्रथाएँ:
- स्थायी इवेंट कॉपी को `LOG_SERVER`, `SYSLOG_SERVER`, या `LOGSTASH_SERVER` के साथ रिमोट Maltrail सर्वर या SIEM पर भेजें।
- अपेक्षित इवेंट दर के लिए पर्याप्त हेडरूम के साथ `maltrail_log_dir_free_bytes` पर अलर्ट करें।
- बाहरी टूलिंग का उपयोग करके स्थानीय दैनिक लॉग को घुमाएँ, संग्रहित करें, या हटाएँ।
- रिपोर्टिंग इंटरफ़ेस के लिए आवश्यक फ़ाइलों को `LOG_DIR` में असंपीड़ित रखें; संपीड़ित फ़ाइलों को कहीं और संग्रहित करें।
जब लॉग फ़ाइलसिस्टम भरा होता है, तो सेंसर इवेंट जोड़ नहीं सकता। इवेंट लॉग में IP पते और डोमेन भी हो सकते हैं जो कुछ क्षेत्राधिकारों में व्यक्तिगत डेटा के रूप में विनियमित हैं; प्रतिधारण नीति को लागू आवश्यकताओं का ध्यान रखना चाहिए।
## दस्तावेज़ीकरण
| दस्तावेज़ | सामग्री |
| --- | --- |
| [`sensor/docs/INSTALL.md`](https://github.com/stamparm/maltrail/blob/master/sensor/docs/INSTALL.md) | स्थापना, विशेषाधिकार, कॉन्फ़िगरेशन और समस्या निवारण |
| [`sensor/docs/ARCHITECTURE.md`](https://github.com/stamparm/maltrail/blob/master/sensor/docs/ARCHITECTURE.md) | सेंसर आंतरिक और डेटा प्रवाह |
| [`sensor/docs/COMPATIBILITY.md`](https://github.com/stamparm/maltrail/blob/master/sensor/docs/COMPATIBILITY.md) | सेवानिवृत्त Python सेंसर से जानबूझकर अंतर |
| [`sensor/docs/REPORT.md`](https://github.com/stamparm/maltrail/blob/master/sensor/docs/REPORT.md) | माप, प्रोफ़ाइल और परीक्षण परिणाम |
| [`sensor/docs/ROADMAP.md`](https://github.com/stamparm/maltrail/blob/master/sensor/docs/ROADMAP.md) | खुला सेंसर कार्य |
| [`SekuriPy Labs`](https://www.sekuripy.hr/labs/maltrail/) | इंजीनियरिंग नोट्स, बेंचमार्क और राइट-अप |
## योगदान
ट्रेल जोड़, फ़ीड रखरखाव, बग रिपोर्ट, दस्तावेज़ीकरण और सेंसर सुधार स्वागत योग्य हैं। ट्रेल सबमिशन में एक विश्वसनीय स्रोत शामिल होना चाहिए और सबसे संकीर्ण उपयुक्त वर्गीकरण का उपयोग करना चाहिए।
कोड सबमिट करने से पहले प्रासंगिक जाँच चलाएँ। पूर्ण सेंसर गेट है:```bash
bash sensor/tools/check.sh
```
यह फ़ॉर्मेटिंग, Clippy (चेतावनियों को अस्वीकार करते हुए), और डीबग तथा रिलीज़ टेस्ट सूट चलाता है। Python सर्वर सूट को इसके साथ चलाएँ:```bash
bash tests/run.sh python3
```
## परियोजना
### लाइसेंस
Maltrail MIT लाइसेंस के अंतर्गत वितरित किया जाता है। देखें [`LICENSE`](https://github.com/stamparm/maltrail/blob/master/LICENSE)।
### अनुरक्षक
- Miroslav Stampar ([@stamparm](https://github.com/stamparm))
- Mikhail Kasimov ([@MikhailKasimov](https://github.com/MikhailKasimov))
### प्रायोजक
- [Sansec](https://sansec.io/) (2024–2025)
- [Sansec](https://sansec.io/) (2020–2021)
### प्रस्तुतियाँ और प्रकाशन
- 47वीं TF-CSIRT बैठक, प्राग, 2016
([स्लाइड्स](https://web.archive.org/web/20161109135211/https://www.terena.org/activities/tf-csirt/meeting47/M.Stampar-Maltrail.pdf))
- _Maltrail के साथ अपने नेटवर्क पर हमलों का पता लगाएं_, Linux Magazine, 2022
([लेख](https://www.linux-magazine.com/Issues/2022/258/Maltrail))
- _सर्वश्रेष्ठ साइबर खतरा खुफिया फ़ीड_, Silent Push, 2022
([समीक्षा](https://www.silentpush.com/blog/best-cyber-threat-intelligence-feeds))
- _Maltrail पर आधारित नेटवर्क दुर्भावनापूर्ण ट्रैफ़िक पहचान प्रणाली पर शोध_, Nanotechnology
Perceptions, 2024
([पेपर](https://nano-ntp.com/index.php/nano/article/view/1915/1497))
### व्युत्पन्न ब्लैकलिस्ट
`malware/` स्थैतिक ट्रेल्स से व्युत्पन्न एक केवल-डोमेन सूची
[`maltrail-malware-domains.txt`](https://raw.githubusercontent.com/stamparm/aux/master/maltrail-malware-domains.txt) पर प्रकाशित की गई है।
इसे DNS फ़िल्टरिंग सिस्टम के इनपुट के रूप में उपयोग किया जा सकता है, लेकिन ऑपरेटरों को ब्लॉकिंग सक्षम करने से पहले इसकी समीक्षा और परीक्षण करना चाहिए।
खतरा-खुफिया सूचियों में गलत सकारात्मक या ऐसे संकेतक हो सकते हैं जो हर वातावरण के लिए उपयुक्त नहीं हैं।
### तृतीय-पक्ष एकीकरण
- [FreeBSD पोर्ट](https://www.freshports.org/security/maltrail)
- [OPNsense गेटवे प्लगइन](https://github.com/opnsense/plugins/pull/1257)
- [D4 प्रोजेक्ट](https://www.d4-project.org/2019/09/25/maltrail-integration.html)
- [BlackArch Linux](https://github.com/BlackArch/blackarch/blob/master/packages/maltrail/PKGBUILD)
- [Validin](https://x.com/ValidinLLC/status/1719666086390517762)
- [Splunk के लिए Maltrail ऐड-ऑन](https://splunkbase.splunk.com/app/7211)
- [Wazuh के लिए Maltrail डिकोडर और नियम](https://github.com/MikhailKasimov/maltrail-wazuh-decoder-and-rules)
- [GScan](https://github.com/grayddq/GScan) (केवल ट्रेल्स)
- [MalwareWorld](https://www.malwareworld.com/) (केवल ट्रेल्स)
- [oisd डोमेन ब्लॉकलिस्ट](https://oisd.nl/?p=inc) (केवल ट्रेल्स)
- [NextDNS](https://github.com/nextdns/metadata/blob/e0c9c7e908f5d10823b517ad230df214a7251b13/security/threat-intelligence-feeds.json) (केवल ट्रेल्स)
- [NoTracking](https://github.com/notracking/hosts-blocklists/blob/master/SOURCES.md) (केवल ट्रेल्स)
- [OWASP मोबाइल ऑडिट](https://github.com/mpast/mobileAudit#environment-variables) (केवल ट्रेल्स)
- [मोबाइल सुरक्षा फ्रेमवर्क MobSF](https://github.com/MobSF/Mobile-Security-Framework-MobSF/commit/12b07370674238fa4281fc7989b34decc2e08876) (केवल ट्रेल्स)
- [pfBlockerNG-devel](https://github.com/pfsense/FreeBSD-ports/blob/devel/net/pfSense-pkg-pfBlockerNG-devel/files/usr/local/www/pfblockerng/pfblockerng_feeds.json) (केवल ट्रेल्स)
- [Sansec eComscan](https://sansec.io/kb/about-ecomscan/ecomscan-license) (केवल ट्रेल्स)
- [Palo Alto Networks Cortex XSOAR](https://xsoar.pan.dev/docs/reference/integrations/github-maltrail-feed) (ट्रेल कनेक्टर)
### आभार
- Thomas Kristner
- Eduardo Arcusa Les
- James Lay
- Ladislav Baco (@laciKE)
- John Kristoff (@jtkdpu)
- Michael Münz (@mimugmail)
- David Brush
- @Godwottery
- Chris Wild (@briskets)
- Keith Irwin (@ki9us)
- Simon Szustkowski (@simonszu)