এই গাইড ব্যাখ্যা করবে কীভাবে netstat কমান্ড ব্যবহার করে লিনাক্সে আপনার ইন্টারনেট এবং নেটওয়ার্ক কানেকশন মনিটর করতে হয়।
Netstat হলো একটি অত্যন্ত উপকারী লিনাক্স কমান্ড লাইন টুল যা আপনাকে চেক করতে দেয় কোন সার্ভিস আপনার মেশিনের কোন পোর্টে কানেক্ট হচ্ছে। আপনার মেশিনে কী হচ্ছে সেটি অ্যানালাইজ করার জন্য এটি খুব উপকারী যখন আপনি একটি আক্রমণ মুখোমুখি করছেন বা আক্রমণ প্রতিরোধ করার চেষ্টা করছেন। আপনি ইনফরমেশন পেতে পারেন যেমন কোন পোর্টে কতগুলো কানেকশন হচ্ছে, এই কানেকশনগুলো কোন IP অ্যাড্রেস থেকে আ रहा, এবং অনেক কিছু। Netstat অধিকাংশ লিনাক্স ডিস্ট্রিবিউশনের সাথে আসে তাই এটি আপনার সিস্টেমে ইতিমধ্যে ইনস্টলড থাকা উচিত।
আপনার মেশিনে একটি শেল টার্মিনাল লঞ্চ করুন এবং নিচের কমান্ডটি রান করুন:
# 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 এবং অন্যান্য লিনাক্স কমান্ড লাইন টুলস ব্যবহার করে অনেক কমপ্লেক্স জিনিস করতে পারেন। এই টাইপের ইনফরমেশন netstat ব্যবহার করে পাওয়ার কিছু ট্রিকস জানা হেল্পফুল হতে পারে, বিশেষ করে যখন আপনি আপনার সার্ভারে আক্রমণ মুখোমুখি করছেন, কারণ আপনি এই ইনফরমেশন আপনার ফায়ারওয়ালে ব্যবহার করতে পারেন।