यह गाइड बताएगी कि Linux में अपने इंटरनेट और नेटवर्क कनेक्शन को मॉनिटर करने के लिए netstat कमांड का उपयोग कैसे करें।
Netstat एक अत्यंत उपयोगी Linux कमांड लाइन टूल है जो आपको यह जांचने की अनुमति देता है कि कौन सी सर्विस आपकी मशीन पर किसी पोर्ट से कनेक्ट हो रही है। जब आप इस पर हमले का सामना कर रहे हों या इसे रोकने की कोशिश कर रहे हों तो यह विश्लेषण करने के लिए बहुत उपयोगी है कि आपकी मशीन पर क्या हो रहा है। आप ऐसी जानकारी पा सकते हैं जैसे किसी पोर्ट पर कितने कनेक्शन किए जा रहे हैं, ये कनेक्शन किन IP पतों से उत्पन्न हो रहे हैं, और बहुत कुछ। Netstat Linux के अधिकांश डिस्ट्रीब्यूशन के साथ आता है इसलिए यह आपके पर पहले से इंस्टॉल होना चाहिए।
अपनी मशीन पर एक शेल टर्मिनल लॉन्च करें और निम्न कमांड चलाएं:
# netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 ::ffff:192.168.1.19:80 ::ffff:192.168.1.240:63049 TIME_WAIT
tcp 0 0 ::ffff:192.168.0.19:80 ::ffff:192.168.1.240:62793 TIME_WAIT
tcp 0 0 ::ffff:192.168.1.19:80 ::ffff:192.168.1.240:62795 TIME_WAIT
आउटपुट बहुत लंबा होने की संभावना है। मैंने ऊपर आउटपुट का केवल एक स्नैपशॉट दिया है। जैसा कि आप ऊपर के डेटा में देख सकते हैं, 192.168.1.240 से मेरे सर्वर के पोर्ट 80 पर TCP प्रोटोकॉल का उपयोग करके एक कनेक्शन बनाया गया है और कनेक्शन TIME_WAIT स्थिति में है। आपके सर्वर के लिए आपको जो आउटपुट मिलेगा उसमें आपकी मशीन के सभी पोर्ट के बारे में जानकारी होगी, न कि केवल पोर्ट 80।
पहली चीज़ जो आप महसूस करते हैं वह यह है कि इतना बड़ा आउटपुट ज्यादा उपयोगी नहीं है। तो आइए इसे थोड़ा व्यवस्थित करें। यहां कुछ ट्रिक्स हैं जिनका उपयोग मैं अपने सर्वर से या उससे किए जा रहे कनेक्शन की प्रकृति का विश्लेषण करने के लिए करता हूं। पहली चीज़ जो मैं करता हूं वह यह पता लगाना है कि मैं किन सेवाओं का विश्लेषण करना चाहता हूं। आमतौर पर यह पोर्ट 80 है क्योंकि यह वेब सर्वर के चलने का डिफ़ॉल्ट पोर्ट है, और पोर्ट 3306 जो MySQL के चलने का डिफ़ॉल्ट पोर्ट है। इसलिए मैं पोर्ट 80 पर क्या हो रहा है यह देखने के लिए निम्न क्वेरी का उपयोग करता हूं:
# netstat -ant | grep 80
फिर मुझे कनेक्शन की एक बड़ी सूची मिलती है, पहले से छोटी, लेकिन फिर भी समझने के लिए बहुत बड़ी। इसलिए मैं आउटपुट में लाइनों की संख्या गिनने के लिए "wc -l" कमांड का उपयोग करता हूं ताकि लगभग पता चल सके कि मेरे पोर्ट 80 पर कितने कनेक्शन हैं:
# netstat -ant | grep 80 | wc -l
625
और फिर मैं MySQL के लिए भी ऐसा ही करता हूं:
# netstat -ant | grep 3306 | wc -l
61
अब, यदि मैं अपने सर्वर पर कनेक्शन की स्थिति की प्रकृति के संदर्भ में क्या हो रहा है इसकी पूरी तस्वीर प्राप्त करना चाहता हूं तो यहां मैं क्या करता हूं:
# netstat -ant | awk '{print $6}' | sort | uniq -c | sort -n
1 established)
1 Foreign
4 FIN_WAIT2
8 LISTEN
16 CLOSE_WAIT
134 ESTABLISHED
409 TIME_WAIT
यह मुझे बताता है कि मेरी मशीन पर विभिन्न प्रकार की स्थिति के कितने कनेक्शन हैं। मैं अपने वेब सर्वर पर किए गए सभी कनेक्शन की स्थिति की पूरी तस्वीर देखने के लिए एक समान कमांड चला सकता हूं:
netstat -ant | grep 80 | awk '{print $6}' | sort | uniq -c | sort -n
1 FIN_WAIT1
4 LISTEN
6 FIN_WAIT2
17 CLOSE_WAIT
94 ESTABLISHED
534 TIME_WAIT
आप Netstat के साथ अन्य Linux कमांड लाइन टूल का उपयोग करके बहुत अधिक जटिल चीजें कर सकते हैं। इस तरह की जानकारी प्राप्त करने के लिए Netstat का उपयोग करने के कुछ ट्रिक्स से परिचित होना उपयोगी हो सकता है, विशेष रूप से जब आप अपने सर्वर पर हमले का सामना कर रहे हों, क्योंकि आप इस जानकारी का उपयोग अपने फ़ायरवॉल में कर सकते हैं।