
Stenographer is a packet capture solution which aims to quickly spool all packets to disk, then provide simple, fast access to subsets of those packets. Discussion/announcements at [email protected]
Stenographer एक पूर्ण-पैकेट-कैप्चर उपयोगिता है जो पैकेटों को डिस्क पर बफर करने के लिए है, जो अनधिकृत प्रवेश का पता लगाने और घटना प्रतिक्रिया उद्देश्यों के लिए है। यह NIC-से-डिस्क पैकेट लेखन का उच्च-प्रदर्शन कार्यान्वयन प्रदान करता है, डिस्क भर जाने पर उन फ़ाइलों को हटाने का प्रबंधन करता है, और विशिष्ट पैकेटों के सेट को जल्दी और आसानी से वापस पढ़ने के तरीके प्रदान करता है।
यह इसके लिए डिज़ाइन किया गया है:
यह इसके लिए डिज़ाइन नहीं किया गया है:
जटिल पैकेट प्रसंस्करण (TCP स्ट्रीम पुनःसंयोजन, आदि)
यह तेज़ है क्योंकि यह ऐसा नहीं करता। हमारे द्वारा किए जाने वाले न्यूनतम, सिंगल-पास पैकेट प्रसंस्करण के साथ भी, अकेले अनुक्रमण के लिए ~1Gbps प्रसंस्करण एकल कोर का >75% ले सकता है।
डिस्क से डेटा को वापस पढ़कर संसाधित करना भी काम नहीं करता: अगला बुलेट पॉइंट देखें।
बड़ी मात्रा में पैकेट वापस पढ़ना (> 1% लिखे गए पैकेट)
यहाँ मुख्य अवधारणा यह है कि डिस्क रीड, डिस्क राइट के साथ प्रतिस्पर्धा करते हैं… आप डिस्क गति के 90% पर लिख सकते हैं, लेकिन यह आपको पढ़ने के लिए अपनी डिस्क का केवल 10% समय देता है। साथ ही, हम अत्यधिक अनुक्रमिक डेटा लिख रहे हैं, जिसे डिस्क बहुत तेज़ी से करने में सक्षम हैं, और आमतौर पर कई सीक के साथ विरल डेटा वापस पढ़ते हैं, जो डिस्क धीमे करते हैं।
आगे पढ़ने के लिए, stenographer के डिज़ाइन की चर्चा के लिए DESIGN.md देखें, या मशीन पर stenographer स्थापित करने के तरीके के लिए INSTALL.md पढ़ें।
उपयोगकर्ता stenographer से पैकेट का अनुरोध एक बहुत ही सरल क्वेरी भाषा के साथ निर्दिष्ट करके करता है। यह भाषा BPF का एक सरल उपसमूह है, और इसमें प्रिमिटिव शामिल हैं:
host 8.8.8.8 # एकल IP पता (होस्टनाम अनुमति नहीं)
net 1.0.0.0/8 # CIDR के साथ नेटवर्क
net 1.0.0.0 mask 255.255.255.0 # मास्क के साथ नेटवर्क
port 80 # पोर्ट नंबर (UDP या TCP)
ip proto 6 # IP प्रोटोकॉल नंबर 6
icmp # 'ip proto 1' के समतुल्य
tcp # 'ip proto 6' के समतुल्य
udp # 'ip proto 17' के समतुल्य
# Stenographer-विशिष्ट समय जोड़:
before 2012-11-03T11:05:00Z # एक विशिष्ट समय से पहले के पैकेट (UTC)
after 2012-11-03T11:05:00-07:00 # एक विशिष्ट समय के बाद के पैकेट (समय क्षेत्र के साथ)
before 45m ago # एक सापेक्षिक समय से पहले के पैकेट
after 3h ago # एक सापेक्षिक समय के बाद के पैकेट
नोट: सापेक्षिक समय को ऊपर दर्शाए अनुसार घंटे या मिनट के पूर्णांक मानों में मापा जाना चाहिए।
प्रिमिटिव को and/&& और or/|| के साथ जोड़ा जा सकता है, जिनकी समान प्राथमिकता होती है और बाएँ से दाएँ मूल्यांकन करते हैं। समूह बनाने के लिए कोष्ठक का भी उपयोग किया जा सकता है।
(udp and port 514) or (tcp and port 8080)
The stenoread कमांड लाइन स्क्रिप्ट Stenographer से पैकेट खींचने और उन्हें विश्लेषकों के लिए उपयोगी प्रारूप में प्रस्तुत करने को स्वचालित करती है। यह stenographer से कच्चे पैकेट का अनुरोध करती है, फिर उन्हें tcpdump के माध्यम से चलाकर अधिक पूर्ण-विशेषताओं वाला फ़ॉर्मेटिंग/फ़िल्टरिंग अनुभव प्रदान करती है। stenoread का पहला तर्क एक stenographer क्वेरी है (ऊपर 'क्वेरी भाषा' देखें)। अन्य सभी तर्क tcpdump को पास किए जाते हैं। उदाहरण के लिए:
# IP 1.2.3.4 पोर्ट 6543 से सभी पैकेट का अनुरोध करें, फिर TCP फ़्लैग द्वारा अतिरिक्त फ़िल्टरिंग करें, जो सामान्य stenographer समर्थन नहीं करता।
$ stenoread 'host 1.2.3.4 and port 6543' 'tcp[tcpflags] & tcp-push != 0'
# पोर्ट 8765 पर पैकेट का अनुरोध करें, IP रिज़ॉल्यूशन अक्षम करें (-n) और प्रिंट करते समय लिंक-स्तरीय हेडर दिखाएँ (-e)।
$ stenoread 'port 8765' -n -e
# 1.1.1.0-1.1.1.255 रेंज में किसी भी IP के लिए पैकेट का अनुरोध करें, उन्हें एक स्थानीय PCAP फ़ाइल में लिखें ताकि उन्हें Wireshark में खोला जा सके।
$ stenoread 'net 1.1.1.0/24' -w /tmp/output_for_wireshark.pcap
स्रोत कोड डाउनलोड करने के लिए, Go को स्थानीय रूप से स्थापित करें, फिर चलाएँ:
$ go get github.com/google/stenographer
Go उन सभी Go लाइब्रेरियों को डाउनलोड और स्थापित करेगा जिन पर stenographer निर्भर करता है। stenotype बनाने के लिए, stenotype निर्देशिका में जाएँ और make चलाएँ।
आपको निम्नलिखित Ubuntu पैकेज स्थापित करने की आवश्यकता हो सकती है (या अन्य Linux वितरणों पर उनके समकक्ष):
यह एक आधिकारिक Google उत्पाद नहीं है (प्रयोगात्मक या अन्यथा), यह सिर्फ कोड है जो संयोगवश Google के स्वामित्व में है।
यह कोड Google के उपयोगकर्ताओं पर नजर रखने के लिए अभिप्रेत (या उपयोग) नहीं है। इसका उद्देश्य हमारी आंतरिक निगरानी क्षमताओं को बढ़ाकर हमारे नेटवर्क पर सुरक्षा बढ़ाना है।