اگر نیاز به تجزیه و تحلیل یا رهگیری بسته های شبکه در لینوکس دارید ، بهتر است از ابزار کنسولی استفاده کنید tcpdump. اما مشکل در مدیریت نسبتاً پیچیده آن بوجود آمده است. به نظر می رسد برای کاربر معمولی کار با ابزار کار ناخوشایند است ، اما این فقط در نگاه اول است. در این مقاله توضیح داده خواهد شد که tcpdump چگونه کار می کند ، چه نحو آن را دارد ، چگونه از آن استفاده می کند و نمونه های زیادی از کاربرد آن ارائه خواهد شد
همچنین ببینید: راهنماهایی برای برقراری ارتباط اینترنتی در Ubuntu ، Debian ، Ubuntu Server
نصب
اکثر توسعه دهندگان سیستم عامل های مبتنی بر لینوکس شامل برنامه tcpdump در لیست سیستم های از پیش نصب شده هستند ، اما اگر به دلایلی در توزیع شما نیست ، همیشه می توانید آن را بارگیری و نصب کنید. "ترمینال". اگر سیستم عامل شما مبتنی بر Debian است و اینها Ubuntu ، Linux Mint ، Kali Linux و موارد مشابه هستند ، باید این دستور را اجرا کنید:
sudo apt نصب tcpdump
هنگام نصب ، باید یک رمز عبور وارد کنید. لطفاً توجه داشته باشید که هنگام شماره گیری ، نمایش داده نمی شود ، همچنین برای تأیید تنظیم مورد نیاز برای وارد کردن کاراکتر د و کلیک کنید وارد شوید.
اگر Red Hat ، Fedora یا CentOS دارید ، دستور نصب به این شکل ظاهر می شود:
sudo yam نصب tcpdump
پس از نصب ابزار ، بلافاصله می توان از آن استفاده کرد. این و موارد دیگر بعداً در متن مورد بحث قرار خواهد گرفت.
همچنین ببینید: راهنمای نصب PHP در سرور اوبونتو
نحو
tcpdump مانند هر دستور دیگر ، نحوی خاص خود را دارد. با شناختن او می توانید تمام پارامترهای لازم را که هنگام اجرای دستور در نظر گرفته می شود ، تنظیم کنید. نحو به شرح زیر است:
گزینه های tcpdump - فیلترهای رابط
هنگام استفاده از دستور ، شما باید رابط را برای ردیابی مشخص کنید. فیلترها و گزینه ها متغیرهای اختیاری هستند اما امکان سفارشی سازی انعطاف پذیر را فراهم می آورند.
گزینه ها
اگرچه نیازی به نشان دادن گزینه نیست ، اما هنوز هم باید موارد موجود را لیست کنید. جدول کل لیست آنها ، فقط محبوب ترین آنها را نشان نمی دهد ، اما آنها برای حل بسیاری از کارها بیش از حد کافی هستند.
گزینه | تعریف |
---|---|
-A | به شما امکان می دهد بسته ها را با فرمت ASCII مرتب کنید |
-l | عملکرد پیمایش را اضافه می کند. |
-ی | پس از وارد کردن ، شما باید رابط شبکه ای را که نظارت می شود مشخص کنید. برای شروع نظارت بر همه رابط ها ، کلمه "هر" را بعد از گزینه وارد کنید |
-C | پس از بررسی تعداد مشخص شده بسته ها ، روند ردیابی را پایان می دهد |
-و | یک پرونده متنی با گزارش تأیید تولید می کند |
-ه | سطح اتصال به اینترنت اتصال داده را نشان می دهد |
-ل | فقط پروتکل هایی که رابط شبکه مشخص شده پشتیبانی می کند را نمایش می دهد. |
-C | اگر اندازه آن بزرگتر از مقدار مشخص شده باشد ، پرونده دیگری را هنگام ضبط بسته ایجاد می کنید |
-ر | یک پرونده read را که با استفاده از گزینه -w ایجاد شده است ، باز می کند |
-ج | از قالب TimeStamp برای ضبط بسته ها استفاده می شود |
-جو | به شما امکان می دهد تمام قالب های موجود در TimeStamp را مشاهده کنید |
-G | برای ایجاد یک پرونده log خدمت می کند. این گزینه همچنین به یک مقدار موقت نیاز دارد ، پس از آن یک سیاهه جدید ایجاد می شود |
-v ، -vv ، -vvv | بسته به تعداد کاراکترهای موجود ، خروجی فرمان دقیق تر می شود (افزایش مستقیماً با تعداد نویسه متناسب است) |
-ف | خروجی نام دامنه آدرسهای IP را نشان می دهد |
-F | اجازه می دهد تا اطلاعات را نه از رابط شبکه بلکه از پرونده مشخص شده بخوانید |
-D | تمام رابط های شبکه ای که قابل استفاده هستند را نشان می دهد. |
-نه | نمایش نام دامنه را غیرفعال می کند |
-Z | کاربر مورد نظر خود را که تمام پرونده ها ایجاد می شوند را مشخص می کند. |
-K | تجزیه و تحلیل جستجوی چک |
-ق | خلاصه ویترین |
-ه | هدر 802.11s را تشخیص می دهد |
-من | هنگام گرفتن بسته ها در حالت مانیتور استفاده می شود |
با بررسی گزینه ها ، کمی پایین تر مستقیم به برنامه های آنها خواهیم رفت. در این بین فیلترها در نظر گرفته می شوند.
فیلترها
همانطور که در همان ابتدای مقاله بیان شد ، می توانید فیلترها را به نحو tcpdump اضافه کنید. اکنون محبوب ترین آنها در نظر گرفته خواهد شد:
فیلتر | تعریف |
---|---|
میزبان | نام میزبان را مشخص می کند |
خالص | زیر شبکه ها و شبکه های IP را نشان می دهد |
IP | آدرس پروتکل را مشخص می کند |
src | بسته هایی را که از آدرس مشخص شده ارسال شده را نشان می دهد |
DST | بسته هایی را که توسط آدرس مشخص شده دریافت شده ، نشان می دهد |
آرپی ، عود ، tcp | فیلتر توسط یکی از پروتکل ها |
بندر | اطلاعات مربوط به یک پورت خاص را نشان می دهد |
یا ، یا | چندین فیلتر را در یک فرمان ترکیب می کند. |
کمتر بیشتر | بسته های خروجی کوچکتر یا بزرگتر از اندازه مشخص شده است |
همه فیلترهای فوق می توانند با یکدیگر ترکیب شوند ، بنابراین در صدور فرمان فقط اطلاعات مورد نظر خود را مشاهده خواهید کرد. برای درک دقیق تر استفاده از فیلترهای فوق ، ارزش ذکر مثال دارد.
همچنین ببینید: دستورات متداول در ترمینال لینوکس
مثال های استفاده
اکنون گزینه های نحوی متداول برای دستور tcpdump استفاده می شود. همه آنها قابل ذکر نیستند ، زیرا تعداد نامتناهی از تغییرات آنها وجود دارد.
لیستی از رابط ها را مشاهده کنید
توصیه می شود هر کاربر در ابتدا لیست تمام رابط های شبکه خود را که قابل ردیابی است بررسی کند. از جدول بالا می دانیم که برای این کار شما باید از گزینه استفاده کنید -Dبنابراین در ترمینال دستور زیر را اجرا کنید:
sudo tcpdump -D
مثالی:
همانطور که مشاهده می کنید ، مثال دارای هشت رابط است که با استفاده از دستور tcpdump قابل مشاهده است. در این مقاله مثالهایی ارائه خواهد شد ppp0می توانید از هر نوع دیگری استفاده کنید.
ضبط ترافیک عادی
اگر نیاز به ردیابی یک رابط شبکه دارید ، می توانید این کار را با استفاده از گزینه انجام دهید -ی. فراموش نکنید که پس از وارد کردن نام رابط کاربری خود را وارد کنید. در اینجا نمونه ای از چنین دستوری آورده شده است:
sudo tcpdump -i ppp0
لطفاً توجه داشته باشید: قبل از دستور شما باید "sudo" را وارد کنید ، زیرا به حقوق فوق العاده احتیاج دارد.
مثالی:
توجه: پس از فشار دادن Enter در "Terminal" ، بسته های رهگیری شده به طور مداوم نمایش داده می شوند. برای متوقف کردن جریان آنها ، باید کلید ترکیبی Ctrl + C را فشار دهید.
اگر دستور را بدون گزینه های اضافی و فیلترها اجرا کنید ، فرمت زیر را برای نمایش بسته های مانیتور شده مشاهده خواهید کرد:
22: 18: 52.597573 IP vrrp-topf2.p.mail.ru.https> 10.0.6.67.35482: Flags [P.]، Seq 1: 595، ack 1118، برنده 6494، گزینه ها [nop، nop، TS val 257060077 ecr 697597623] ، طول 594
جایی که رنگ برجسته شده است:
- آبی - زمان دریافت بسته؛
- نارنجی - نسخه پروتکل؛
- آدرس سبز - فرستنده؛
- بنفشه - آدرس گیرنده؛
- خاکستری - اطلاعات اضافی در مورد tcp؛
- اندازه قرمز - بسته (نمایش داده شده در بایت).
این نحو قابلیت نمایش در یک پنجره را دارد. "ترمینال" بدون استفاده از گزینه های اضافی
ضبط ترافیک با گزینه -v
همانطور که از جدول مشخص است ، گزینه -و به شما امکان می دهد مقدار اطلاعات را افزایش دهید. بیایید مثالی بزنیم. همان رابط را بررسی کنید:
sudo tcpdump -v -i ppp0
مثالی:
در اینجا می توانید ببینید که خط زیر در خروجی ظاهر شده است:
IP (tos 0x0، ttl 58، id 30675، افست 0، پرچم ها [DF] ، پروتئین TCP (6) ، طول 52
جایی که رنگ برجسته شده است:
- نارنجی - نسخه پروتکل؛
- آبی - طول عمر پروتکل؛
- سبز - طول هدر میدان؛
- نسخه بسته بنفش - TCP؛
- اندازه قرمز - بسته.
همچنین در نحو فرمان می توانید گزینه ای بنویسید -vv یا -vvv، که باعث افزایش بیشتر اطلاعات نمایش داده شده روی صفحه می شود.
گزینه -w و -r
در جدول گزینه ها امکان ذخیره تمام خروجی ها در یک پرونده جداگانه وجود دارد تا بتوانید بعداً آن را مشاهده کنید. گزینه مسئول این امر است. -و. استفاده از آن بسیار ساده است ، فقط آن را در دستور مشخص کنید و سپس با پسوند نام فایل آینده را وارد کنید ".pcap". بیایید به یک مثال نگاه کنیم:
sudo tcpdump -i ppp0 -w file.pcap
مثالی:
لطفاً توجه داشته باشید: هنگام نوشتن سیاهههای مربوط به یک پرونده ، هیچ متنی در صفحه "پایانه" نمایش داده نمی شود.
وقتی می خواهید خروجی ضبط شده را مشاهده کنید ، باید از گزینه استفاده کنید -رو پس از آن نام پرونده ضبط شده قبلی را بنویسید. بدون گزینه ها و فیلترهای دیگر استفاده می شود:
sudo tcpdump -r file.pcap
مثالی:
هر دوی این گزینه ها در مواردی که شما نیاز به ذخیره مقادیر زیادی از متن برای تجزیه بعدی دارید ، عالی هستند.
فیلتر IP
از جدول فیلترها این را می دانیم DST این امکان را به شما می دهد تا روی صفحه کنسول فقط آن دسته از بسته هایی را که توسط آدرس دریافت شده در نحو فرمان دریافت شده است ، نمایش دهید بنابراین ، مشاهده بسته های دریافت شده توسط رایانه بسیار راحت است. برای این کار ، تیم فقط باید آدرس IP خود را مشخص کند:
sudo tcpdump -i ppp0 ip dst 10.0.6.67
مثالی:
همانطور که می بینید ، علاوه بر این DST، ما همچنین یک فیلتر در تیم ثبت کردیم IP. به عبارت دیگر ، ما به رایانه گفتیم که هنگام انتخاب بسته ها ، به آدرس IP آنها توجه می شود ، و نه به پارامترهای دیگر.
با استفاده از IP ، می توانید بسته های خروجی را نیز فیلتر کنید. ما به طور مثال IP خود را ارائه می دهیم. یعنی اکنون پیگیری خواهیم کرد که کدام بسته ها از رایانه ما به آدرس های دیگر ارسال می شوند. برای انجام این کار ، دستور زیر را اجرا کنید:
sudo tcpdump -i ppp0 ip src 10.0.6.67
مثالی:
همانطور که مشاهده می کنید ، در نحو فرمان فیلتر را تغییر داده ایم DST در src، از این طریق به دستگاه می گویید که به دنبال یک فرستنده از طریق IP باشد.
فیلتر HOST
با قیاس با IP در دستور ، می توانیم یک فیلتر را مشخص کنیم میزبانبرای فیلتر کردن بسته ها با میزبان مورد علاقه. یعنی در نحو ، به جای آدرس IP فرستنده / گیرنده ، باید میزبان آن را مشخص کنید. به نظر می رسد مانند این:
sudo tcpdump -i ppp0 میزبان میزبان google-public-dns-a.google.com
مثالی:
در تصویر می توانید آن را در داخل مشاهده کنید "ترمینال" فقط آن دسته از بسته های ارسال شده از IP ما به میزبان google.com نمایش داده می شوند. همانطور که می دانید ، به جای میزبان google ، می توانید هر مورد دیگری را وارد کنید.
مانند فیلتر IP ، نحو DST می تواند جایگزین شود srcبرای دیدن بسته های ارسال شده به رایانه:
sudo tcpdump -i ppp0 src میزبان google-public-dns-a.google.com
توجه: فیلتر میزبان باید پس از dst یا src باشد ، در غیر اینصورت این خطا خطا را پرتاب می کند. در مورد فیلتر کردن توسط IP ، برعکس ، dst و src در جلوی فیلتر ip قرار دارند.
با استفاده از و یا فیلتر
اگر لازم است چندین فیلتر را در یک فرمان به طور همزمان استفاده کنید ، پس باید یک فیلتر اعمال کنید و یا یا (به پرونده بستگی دارد) با مشخص کردن فیلترها در نحو و جدا کردن آنها با این اپراتورها ، باعث می شوید که آنها به عنوان یکی کار کنند. به عنوان مثال ، به نظر می رسد:
sudo tcpdump -i ppp0 ip dst 95.47.144.254 یا ip src 95.47.144.254
مثالی:
نحو فرمان آنچه را که می خواهیم نمایش دهیم را نشان می دهد "ترمینال" تمام بسته های ارسال شده به آدرس 95.47.144.254 و بسته های دریافت شده توسط همان آدرس. همچنین می توانید متغیرهایی را در این عبارت تغییر دهید. به عنوان مثال ، به جای IP ، HOST را مشخص کنید یا مستقیماً آدرس خود را جایگزین کنید.
فیلتر پورت و پرتره
فیلتر بندر در مواردی که نیاز به کسب اطلاعات در مورد بسته ها با درگاه خاص دارید عالی است. بنابراین ، اگر فقط نیاز به پاسخ یا نمایش داده های DNS دارید ، باید پورت 53 را مشخص کنید:
sudo tcpdump -vv -i ppp0 درگاه 53
مثالی:
اگر می خواهید بسته های http را مشاهده کنید ، باید پورت 80 را وارد کنید:
sudo tcpdump -vv -i ppp0 درگاه 80
مثالی:
از جمله موارد دیگر ، می توان فوراً دامنه پورت ها را ردیابی کرد. فیلتر برای این کار اعمال می شود. پرتره:
sudo tcpdump پرتره 50-80
همانطور که مشاهده می کنید ، در رابطه با فیلتر پرتره گزینه های اختیاری مورد نیاز است. فقط محدوده را تنظیم کنید.
فیلتر کردن پروتکل
همچنین می توانید فقط ترافیکی را که مطابق با هر پروتکل است نمایش دهید. برای این کار از نام این پروتکل به عنوان فیلتر استفاده کنید. بیایید به یک مثال نگاه کنیم udp:
sudo tcpdump -vvv -i ppp0 udp
مثالی:
همانطور که در تصویر مشاهده می کنید ، پس از اجرای دستور in "ترمینال" فقط بسته هایی با پروتکل نمایش داده می شدند udp. بر این اساس ، شما می توانید توسط دیگران فیلتر کنید ، قوس:
sudo tcpdump -vvv -i ppp0 arp
یا tcp:
sudo tcpdump -vvv -i ppp0 tcp
فیلتر خالص
عملگر خالص بسته فیلترها را بر اساس تعیین شبکه آنها کمک می کند. استفاده از آن به همان اندازه بقیه ساده است - باید در نحو یک ویژگی را مشخص کنید خالص، سپس آدرس شبکه را وارد کنید. در اینجا نمونه ای از چنین دستوری آورده شده است:
sudo tcpdump -i ppp0 net 192.168.1.1
مثالی:
فیلتر اندازه بسته
ما دو فیلتر جالب دیگر در نظر نگرفتیم: کمتر و بزرگتر. از جدول با فیلترها ، می دانیم که آنها برای خروجی بیشتر بسته های داده ((کمتر) یا کمتر (بزرگتر) اندازه مشخص شده پس از وارد کردن صفت.
فرض کنید می خواهیم فقط بسته هایی را کنترل کنیم که از علامت 50 بیتی تجاوز نکنند ، این دستور به این صورت خواهد بود:
sudo tcpdump -i ppp0 کمتر از 50
مثالی:
اکنون بیایید نمایش دهیم "ترمینال" بسته های بزرگتر از 50 بیت:
sudo tcpdump -i ppp0 بیشتر از 50
مثالی:
همانطور که مشاهده می کنید ، آنها به همان روش اعمال می شوند ، تنها تفاوت آن در نام فیلتر است.
نتیجه گیری
در پایان مقاله می توان نتیجه گرفت که تیم tcpdump - این یک ابزار عالی است که با استفاده از آن می توانید بسته های داده منتقل شده از طریق اینترنت را ردیابی کنید. اما برای این کافی نیست که خود فرمان را وارد کنید "ترمینال". نتیجه مطلوب فقط در صورت استفاده از انواع گزینه ها و فیلترها و همچنین ترکیبات آنها حاصل می شود.