আমি কীভাবে আমার মেশিনের সমস্ত আউটগোয়িং অনুরোধ / সংযোগগুলি পর্যবেক্ষণ করতে পারি?


71

আমার মেশিনটি একটি সার্ভার তাই আমি আমার সার্ভারের সাথে সংযোগগুলি বর্জন করতে চাই (যেমন কেউ যখন আমার ওয়েবসাইটে যান) visits আমি আমার সার্ভার দ্বারা অন্য স্থানে কেবল সংযোগ / অনুরোধগুলি দেখতে চাই ।

আমি কেবল সেই বহির্গামী সংযোগগুলি কীভাবে দেখব ?

সম্পাদনা: আমি এই ধরণের জিনিসগুলিতে নতুন। আমি যা করার চেষ্টা করছি তা হ'ল কেবলমাত্র আমার ওয়েব অ্যাপ্লিকেশনগুলির ডেটা বাদে আমার সার্ভার থেকে কোনও কিছু পাঠানো হচ্ছে কিনা। উদাহরণস্বরূপ, যদি কেউ আমার ওয়েবসাইটগুলিতে যান তবে স্পষ্টতই আমার সার্ভার ক্লায়েন্টের ব্রাউজারে ডেটা প্রেরণ করবে। তবে ধরুন আমার ওয়েব অ্যাপের ফ্রেমওয়ার্কে কোথাও এমন একটি কোডও রয়েছে যা অন্য কোথাও পরিসংখ্যান সংক্রান্ত ডেটা প্রেরণ করে আমি অবগত নই। আমি আমার সার্ভার সেই জায়গাগুলিতে দেখতে চাই যদি কোনও হয় data সম্ভবত এটি সম্ভবত না, তবে ধরুন আপনি কোনও পিএইচপি বা নোডেজ ফ্রেমওয়ার্ক ব্যবহার করার সিদ্ধান্ত নিয়েছেন যা আপনি লেখেন নি: এটির একটি ছোট্ট সুযোগ আছে এটি কোথাও কোনও ধরণের ডেটা প্রেরণ করতে পারে। যদি তা হয় তবে আমি এটি দেখতে চাই।

উত্তর:


76

ব্যবহার netstat। উদাহরণ স্বরূপ

$ netstat -nputw
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
[...]
tcp        0      0 192.168.25.222:22       192.168.0.134:42903     ESTABLISHED 32663/sshd: gert [p

সমস্ত ইউডিপি ( u), টিসিপি ( t) এবং আরএডাব্লু ( w) বহির্গামী সংযোগগুলি (ব্যবহার না করা ) lবা aএকটি সংখ্যক আকারে তালিকাভুক্ত করে ( n, সম্ভাব্য দীর্ঘকালীন চলমান ডিএনএস কোয়েরিগুলি প্রতিরোধ করে) এবং এর pসাথে যুক্ত প্রোগ্রাম ( ) অন্তর্ভুক্ত করে ।

cঅবিচ্ছিন্নভাবে আউটপুট আপডেট হওয়ার বিকল্পটি যোগ করার বিষয়ে বিবেচনা করুন ।


ধন্যবাদ। এটা ভাল তথ্য। আপনি আমার আপডেট করা প্রশ্নটি একবার দেখে নিতে পারেন?
trusktr

1
সম্পূর্ণরূপে অনুপযুক্ত হাইজ্যাক (এই উত্তরটি ভালভাবে গুগল করা ব্যতীত): উইন্ডোজের সাথেও এই উত্তরটি কাজ করে। netstatসেখানে "অবিচ্ছিন্ন মোড" ব্যবহার করার জন্য , -cকাজ করে না। আপনি পরিবর্তে নম্বর ব্যবহার করুন, netstat -na 1 | find "[Scan_Host_IP_Addr]"এটি প্রতি 1সেকেন্ড আপডেট করার জন্য পছন্দ করুন (এই উদাহরণে)। ( উত্স )
ruffin

4
এই পোলগুলি, যাতে এটি সর্বদা সমস্ত সংযোগ ধরা যায় না ।
পুনরায় পোস্টার

ডোমেন নাম, আইপি সম্পর্কে তথ্য হিসাবে আরও ব্যবহারকারী-বান্ধব তথ্য প্রদর্শন করার কোন উপায় আছে? সম্ভবত একটি কাস্টম স্ক্রিপ্ট ব্যবহার করছেন?
awm

@ অওম ওয়েল, straceএটি প্রক্রিয়াটি সহ কার্যকর হবে, নেমসার্ভার লুকআপগুলির জন্য ফিল্টারিং (কোনও বিবরণ নেই, এটি এর সম্পূর্ণ উত্তর নয়)। বিকল্পভাবে, আপনি আমার উত্তরের অন্তর্ভুক্ত বিকল্পটি netstatবাদ দিয়ে তালিকাভুক্ত আইপিগুলির বিপরীত ডিএনএস প্রদর্শন করতে পারেন n
gertvdijk

11

আপনি যদি কেবল সংযোগের প্রতিটি চেষ্টা লগ করতে চান তবে iptables LOGলিনাক্সের উপর সম্ভবত সবচেয়ে সহজ লক্ষ্য (বা আপনার সিস্টেমে সমতুল্য ফায়ারওয়াল লগিং বৈশিষ্ট্য)।

আপনার যদি সংযোগের সময়কাল এবং উভয় দিকের বিনিময় হওয়া ডেটার পরিমাণের মতো আরও তথ্যের প্রয়োজন conntrackdহয় তবে সম্ভবত (লিনাক্সে) সেরা বিকল্প।

তবে নোট করুন যে উপরের দুটি এই নেটফিল্টার দিয়ে যাওয়া ট্র্যাফিকটিকে কেবল লগইন করে, যা সাধারণত সমস্ত ট্র্যাফিক তবে ব্যবহারকারীর স্পেসে আইপি স্ট্যাকের দ্বারা উত্পাদিত ট্র্যাফিককে অ্যাকাউন্ট করে না (ভার্চুয়াল মেশিন বা কাঁচা সকেট ব্যবহার করে এমন কিছু) বা ব্রিজড ট্র্যাফিক।

আরও সাধারণ সমাধান, যদি আপনি ভালো জিনিস কটাক্ষপাত থাকতে পারে argus, bro-ids, sancpবা ntopট্রাফিককে তারা একটি ইন্টারফেসে শোঁকা ভিত্তিতে তথ্য সমস্ত প্রকারের লগ ইন করুন।


8

আমি সরঞ্জামের একটি গুচ্ছ চেষ্টা করেছি সহ iftop, ntop, iptraf, এবং অবশ্যই খুব দরকারী বিল্ট-ইন netstat -tupln, কিন্তু আমার ব্যবহারের ক্ষেত্রে সবচেয়ে ব্যবহারিক নিষ্কাশিত হতে (সমর্থিত অপশন ওএস নির্ভর) nethogs- এটি সংযোগ একত্রিত করে উদ্ভব দ্বারা অ্যাপ্লিকেশন এবং এটি সর্বনিম্ন গোলমাল।

এর মাধ্যমে ইনস্টলযোগ্য:

sudo apt-get install nethogs

রুট হিসাবে চালান:

sudo nethogs

যদি আপনার লক্ষ্যটি কেবল কোনও অ্যাপ্লিকেশন দ্বারা শুরু করা সমস্ত টিসিপি সংযোগগুলি দেখতে হয় তবে আপনি ব্যবহার করতে পারেন:

sudo tcpdump -i lo -A | grep Host:

6

আমার মনে হয় আপনি যা করতে চান তা হল শ্রবণ পোর্টগুলির একটি তালিকা পাওয়া এবং তারপরে অন্য কোনও টিসিপি সংযোগগুলি থেকে সেগুলি সরিয়ে ফেলা, তারপরে সেগুলি বহির্গামী সংযোগগুলির মধ্যে থাকবে। Ss (সকেট স্থিতি) কমান্ডটি "স্থানীয় ঠিকানা: পোর্ট" এবং "পিয়ার ঠিকানা: পোর্ট" কলামগুলি আউটপুট দেয়, আমাদের "পিয়ের ঠিকানা: পোর্ট" কলামটি নয়, "স্থানীয় ঠিকানা: পোর্ট" কলাম থেকে শ্রবণ পোর্টগুলি সরিয়ে ফেলতে হবে, অন্যথায় আপনি কিছু বহির্গামী সংযোগ মিস করতে পারেন। সুতরাং এটি অর্জন করতে যে আমি \s{2}+"স্থানীয় ঠিকানা: পোর্ট" কলামের পিছনে থাকা ফাঁকা জায়গাগুলির সাথে ম্যাচ করার জন্য গ্রেপের ": $ পোর্ট" স্ট্রিংটি ব্যবহার করছি ; সেই কলামটির পিছনে দুটি বা ততোধিক সাদা স্পেস রয়েছে, যেখানে "পিয়ার অ্যাড্রেস: পোর্ট" এর একটি স্পেস এবং তারপরে একটি নতুন লাইন (গ্রার ... কেবল একটি নতুন লাইন থাকা উচিত, আইএমও,\s+\s{2}+।) সাধারণত আমি এস এর ফিল্টারিং কার্যকারিতা ব্যবহার করার চেষ্টা করতে পারি ss -tn state established '(sport != :<port1> and sport !=:<port2>)' src <ip address>। তবে দেখা যাচ্ছে যে স্ট্রিংটি কত দীর্ঘ হতে পারে তার একটি সীমা রয়েছে, এটি এমন একটি সিস্টেমে বোমা ফাটিয়েছিল যেখানে আমার প্রচুর শ্রবণ পোর্ট ছিল। তাই আমি গ্রেপ দিয়ে একই জিনিস করার চেষ্টা করছি। আমি বিশ্বাস করি যে নিম্নলিখিতগুলি কাজ করবে:

FILTER=$(ss -tn state listening | gawk 'NR > 1 {n=split($3,A,":"); B[NR-1]=A[n]} END {for (i=1; i<length(B); i++) printf ":%s\\s{2}+|", B[i]; printf ":%s\\s{2}+", B[i]}')

ss -tn state established dst :* | grep -P -v "$FILTER"

নোট করুন এটি আপনি ব্যবহার করছেন ss এর সংস্করণটির উপর নির্ভর করে, পুরানো সংস্করণগুলির (যেমন: ss ইউটিলিটি, আইপ্রউট 2-এসএস 111117) এর আলাদা আউটপুট ফর্ম্যাট রয়েছে, তাই আপনাকে জোর করে $ 4 এর পরিবর্তে $ 3 ব্যবহার করতে হতে পারে। আরো উল্লেখ্য ss -tlnএবং ss -tn state listeningআপনি বিভিন্ন আউটপুট, যা একটু পাল্টা স্বজ্ঞাত আমাকে দেয়। YMMV।

আমি কিছুটা আরও মার্জিত সমাধান পেয়েছি যার জন্য হোস্টের আইপি জানার দরকার নেই, ss -tn state established dst :*ভাল কাজ করে, আমি উপরের কমান্ড লাইনগুলিকে সংশোধন করেছি।


আপনি কী দয়া করে এটির কিছু ব্যাখ্যা যুক্ত করবেন? ( উত্তরটি সম্পাদনা করুন; মন্তব্য হিসাবে স্পষ্ট করে তথ্য পোস্ট করবেন না)) আমি মনে করি আমি এটি আংশিকভাবে বের করেছি। মনে হচ্ছে এর জন্য আরও কিছুটা কাজের প্রয়োজন হতে পারে। আমি দৌড়ে ss -tn state listeningএকটি হোস্ট FTP সার্ভার রান করে, এবং স্বাভাবিকভাবেই কমান্ড দেখিয়েছেন যে মেশিন বন্দর 21 শোনা সুতরাং যে অর্থ এই নয় যে ছিল egrep -vকোনো দূরবর্তী হোস্ট যার IP ঠিকানা অন্তর্ভুক্ত "21" ফিল্টার হবে (সহ "210 "," 211 "," 212 ", ...)? এছাড়াও, asortসত্যিই প্রয়োজনীয়, বা কেবল উইন্ডো-ড্রেসিং?
জি-ম্যান

আমাকে বেশ কয়েকটি পুরো জিনিস ঠিক করতে হয়েছিল, সংশোধিত স্ক্রিপ্টটি উপরে রয়েছে।
ডেল

শেষ পর্যন্ত, এসএস বা নেটস্যাট যদি এই কার্যকারিতাটি কেবল এতে অন্তর্ভুক্ত করে তবে এটি অনেক সুন্দর n একটি কি ss --outবিদায়ী সংযোগ একটি তালিকা পাবেন।
ডালে

ভাল লাগল, আমি এই উত্তরটি পছন্দ করি। আমি আমার সার্ভারে সুরক্ষার উন্নতিতে ফিরে এলে এটি চেষ্টা করব। : ডি
trusktr

দেখে মনে হচ্ছে এটি ইউডিপির জন্যও ব্যবহার করা যেতে পারে তবে অবশ্যই আপনাকে অবশ্যই বিভিন্ন পতাকা এবং রাজ্য ব্যবহার করতে হবে।
ডেল

4

tcpdumpনির্দিষ্ট মানদণ্ডের উপর ভিত্তি করে ফিল্টার করার ক্ষমতা সহ একটি নির্দিষ্ট ইন্টারফেসে / থেকে প্রবাহিত সমস্ত আইপি ট্র্যাফিক আপনাকে দেখতে দেয়। tcpdumpসাধারণত * ডিফল্টরূপে বেশিরভাগ * নিক্স সিস্টেমে ইনস্টল করা থাকে, যদি না থাকে তবে আপনার নির্দিষ্ট ডিস্ট্রোতে এটি ধরার জন্য সাধারণত কোনও বন্দর নেই।


2

netstat একটি ভাল বিকল্প required প্রয়োজনীয় হিসাবে প্যারামিটারগুলি ব্যবহার করুন its (এর ম্যান পৃষ্ঠাগুলি দেখুন) উদাহরণস্বরূপ

নেটস্যাটট্যান্টআপ

এখানে এটি সমস্ত (ক) শোনার সংখ্যার (এন) টিসিপি (টি) এবং ইউডিপি (ইউ) প্রক্রিয়া (পি) নিরীক্ষণ করতে পারে।

আপনি ssকমান্ডটি ব্যবহার করে দেখতে পারেন । রেফারেন্স ব্যবহারের জন্য:

এসএস লিনাক্স টিসিপি / ইউডিপি নেটওয়ার্ক এবং সকেট সম্পর্কিত তথ্য


1

আপনি যদি সোলারিস বা একটি ডেরাইভেটিভ চালান তবে কনট্র্যাকটি দেখুন


চমৎকার, এটি আর্চ লিনাক্সেও উপলব্ধ: আর্কলিনাক্স.আর / প্যাকেজস / কম্যুনিটি / আই 666 / কনট্র্যাক- টোলস - আপনি কীভাবে স্থানীয় থেকে শুরু হওয়া সংযোগগুলি দেখার জন্য কনট্র্যাক ব্যবহার করেছেন তবে অন্যত্র থেকে সংযোগ শুরু হয়নি তা উদাহরণ দিতে পারেন?
trusktr
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.