اگر شما نیاز دارید که بسته های شبکه را در لینوکس تجزیه و تحلیل کنید یا از آن استفاده کنید، بهترین استفاده از tcpdump ابزار کنسول است. اما مشکل در مدیریت پیچیده آن بوجود می آید. این امر برای یک کاربر معمولی برای کار با این ابزار ناخوشایند خواهد بود، اما این فقط در نگاه اول است. مقاله توضیح می دهد که چگونه tcpdump سازماندهی شده است، چه نحو آن چگونه است، نحوه استفاده از آن، و نمونه های متعددی از استفاده از آن ارائه شده است.
همچنین نگاه کنید به: راهنمایی برای راه اندازی اتصال به اینترنت در اوبونتو ، دبیان ، سرور اوبونتو
محتوا
اکثر توسعه دهندگان سیستم عامل های مبتنی بر لینوکس شامل ابزار tcpdump در لیست از پیش نصب شده هستند، اما اگر به دلایلی در توزیع تو نیست، همیشه می توانید آن را از طریق ترمینال دانلود و نصب کنید. اگر سیستم عامل شما مبتنی بر دبیان است و این اوبونتو، لینوکس مینت، لینوکس کالی و مانند آن است، شما باید این دستور را اجرا کنید:
sudo apt install tcpdump
هنگام نصب باید رمز عبور را وارد کنید. لطفا توجه داشته باشید که هنگام تایپ کردن آن نمایش داده نمی شود، همچنین برای تایید نصب، باید نماد "D" را وارد کنید و Enter را فشار دهید.
اگر شما Red Hat، Fedora یا CentOS دارید، دستور نصب مانند این خواهد بود:
sudo yam install tcpdump
پس از نصب نرم افزار، شما می توانید بلافاصله از آن استفاده کنید. این و خیلی بیشتر بعدا در متن بحث خواهند شد.
همچنین ببینید: راهنمای نصب PHP برای سرور اوبونتو
مانند هر فرمان دیگر، tcpdump دارای نحو خاص خود است. دانستن او، شما می توانید تمام پارامترهای لازم را که هنگام اجرای فرمان مورد توجه قرار می گیرند تنظیم کنید. نحو به شرح زیر است:
tcpdump опции -i интерфейс фильтры
هنگام استفاده از دستور، باید رابط را برای پیگیری مشخص کنید. فیلترها و گزینه ها متغیرهای اجباری نیستند، اما برای تنظیمات انعطاف پذیر تر اجازه می دهند.
اگرچه لازم نیست که گزینه را مشخص کنید، هنوز لازم است که لیستهای موجود را فهرست کنید. جدول کامل لیست کامل خود را نشان نمی دهد، بلکه تنها محبوب ترین آنها است، اما برای اکثر وظایف آنها بیش از اندازه کافی است.
گزینه | تعریف |
---|---|
-A | به شما اجازه می دهد بسته بندی را در فرمت ASCII مرتب کنید |
-l | یک ویژگی اسکرول اضافه می کند |
-i | پس از وارد شدن باید مشخص کنید رابط شبکه ای که نظارت خواهد شد. برای شروع ردیابی تمام رابطها، پس از انتخاب کلمه "هر" را وارد کنید. |
-c | پس از بررسی تعداد مشخص شده بسته، روند ردیابی را تکمیل می کند. |
-w | یک فایل متنی را با یک گزارش معتبر ایجاد می کند. |
-ه | سطح اتصال داده اینترنت را نشان می دهد |
-L | تنها پروتکل هایی را که توسط رابط شبکه مشخص شده پشتیبانی می کنند را نمایش می دهد. |
-C | در هنگام نوشتن یک بسته، یک فایل دیگر ایجاد می کند اگر اندازه آن بزرگتر از مشخص شده باشد. |
-r | فایل را برای خواندن که با گزینه -w ایجاد شده باز می کند. |
-ج | فرمت TimeStamp برای ضبط بسته ها استفاده می شود. |
جی | به شما امکان می دهد تمامی فرمت های موجود TimeStamp را مشاهده کنید |
-G | مورد استفاده برای ایجاد یک فایل با سیاهههای مربوط این گزینه همچنین نیاز به مقدار موقت دارد، پس از آن یک ورود جدید ایجاد خواهد شد |
-v، -vv، -vvv | بسته به تعداد کاراکترهای موجود در گزینه، خروجی فرمان دقیق تر خواهد شد (افزایش به طور مستقیم با تعداد کاراکترها متناسب است) |
-f | خروجی نام دامنه آدرس IP را نشان می دهد |
-F | به شما امکان می دهد اطلاعاتی را که از رابط شبکه نیست، بخوانید، اما از فایل مشخص شده |
-D | همه ی رابط های شبکه ای را که می توان استفاده کرد نشان می دهد. |
-n | نمایش نام دامنه را غیرفعال می کند |
-Z | کاربر را تعیین می کند که در آن حساب همه فایل ها ایجاد می شوند. |
-K | امتحان کردن تجزیه و تحلیل چکشی |
-q | تظاهرات اطلاعات مختصر |
-H | اجازه می دهد تا هدر 802.11s را شناسایی کند |
من | هنگام ضبط بسته ها در حالت مانیتور مورد استفاده قرار می گیرد. |
پس از بررسی گزینه ها، در زیر ما به طور مستقیم به برنامه های خود را تبدیل. در ضمن، فیلترها در نظر گرفته خواهند شد.
همانطور که در ابتدای مقاله ذکر شد، می توانید فیلترها را به نحو tcpdump اضافه کنید. در حال حاضر محبوب ترین آنها در نظر گرفته خواهد شد:
فیلتر کردن | تعریف |
---|---|
میزبان | نام میزبان را مشخص می کند. |
خالص | زیر شبکه و شبکه را مشخص می کند |
آی پی | آدرس پروتکل را مشخص می کند |
src | بسته هایی را که از آدرس مشخص شده ارسال می کنند نمایش می دهد |
دقت | بسته هایی را که توسط آدرس مشخص شده دریافت می کنند نمایش می دهد. |
arp، udp، tcp | فیلتر کردن یکی از پروتکل ها |
بندر | نمایش اطلاعات مرتبط با یک پورت خاص |
و، یا | استفاده می شود برای ترکیب چندین فیلتر در یک فرمان. |
کمتر، بیشتر | بسته های خروجی کوچکتر یا بزرگتر از اندازه مشخص شده |
تمام فیلترهای بالا را می توان با یکدیگر ترکیب کرد، بنابراین در صدور فرمان شما تنها اطلاعاتی را که می خواهید مشاهده کنید مشاهده خواهید کرد. برای درک دقیقتر استفاده از فیلترهای فوق، ارزش نمونه دادن است.
همچنین ببینید: دستورات اغلب مورد استفاده در ترمینال لینوکس
گزینه های نحو اغلب استفاده شده از tcpdump اکنون لیست می شوند. غیر ممکن است همه آنها را فهرست کنید، زیرا تغییرات آنها ممکن است بی نهایت باشد.
توصیه می شود که هر کاربر ابتدا لیستی از تمام رابط های شبکه خود را که می تواند ردیابی شود، بررسی می کند. از جدول بالا می دانیم که برای انجام این کار از گزینه -D استفاده کنید، بنابراین در ترمینال، دستور زیر را اجرا کنید:
sudo tcpdump -D
مثال:
همانطور که می بینید، هشت رابط در این مثال وجود دارد که می تواند با استفاده از دستور tcpdump مشاهده شود. مقاله نمونه هایی را با ppp0 ارائه می دهد، شما می توانید از هر نوع دیگری استفاده کنید.
اگر شما نیاز به پیگیری یک رابط شبکه واحد دارید، می توانید این کار را با گزینه -i انجام دهید . فراموش نکنید که پس از ورود به نام رابط، وارد شوید. در اینجا یک مثال از اجرای یک فرمان است:
sudo tcpdump -i ppp0
لطفا توجه داشته باشید: شما باید قبل از خود تیم وارد "sudo" شوید، زیرا این نیاز به کاربر فوق العاده است.
مثال:
توجه: پس از فشار دادن Enter در "ترمینال"، بسته های متوقف شده به طور مداوم نمایش داده می شود. برای متوقف کردن جریان خود، باید کلید ترکیبی 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, win 6494, options [nop,nop,TS val 257060077 ecr 697597623], length 594
جایی که رنگ برجسته شده است:
این نحو توانایی نمایش در پنجره "Terminal" بدون استفاده از گزینه های اضافی است.
همانطور که از جدول شناخته شده، گزینه -v به شما اجازه می دهد میزان اطلاعات را افزایش دهید. بگذارید نمونه ای را در نظر بگیریم همان رابط را بررسی کنید:
sudo tcpdump -v -i ppp0
مثال:
در اینجا می توانید ببینید که خط زیر در خروجی نمایش داده می شود:
IP (tos 0x0, ttl 58 , id 30675, offset 0, flags [DF] , proto TCP (6) , length 52
جایی که رنگ برجسته شده است:
همچنین در نحو فرمان میتوانید گزینه -vv یا -vvv را بنویسید که مقدار اطلاعات نمایش داده شده روی صفحه را افزایش می دهد.
جدول گزینه ذکر شده امکان ذخیره تمام داده های خروجی را به یک فایل جداگانه به طوری که آنها را می توان بعدا مشاهده کرد. گزینه -w مسئول این است. استفاده از آن بسیار ساده است، فقط آن را در فرمان وارد کنید و سپس نام فایل آینده را با فرمت ".pcap" وارد کنید . تمام مثالها را در نظر بگیرید:
sudo tcpdump -i ppp0 -w file.pcap
مثال:
لطفا توجه داشته باشید: هنگام نوشتن سیاهههای مربوط به یک فایل، روی صفحه نمایش «ترمینال» هیچ متن نمایش داده نمی شود.
وقتی میخواهید خروجی ضبط شده را مشاهده کنید، باید از گزینه -r با نام پرونده قبلا ضبط شده استفاده کنید. این بدون گزینه ها و فیلترهای دیگر اعمال می شود:
sudo tcpdump -r file.pcap
مثال:
هر دوی این گزینه ها در مواردی که شما نیاز دارید حجم زیادی از متن را برای تجزیه و تحلیل بعدی ذخیره کنید کامل است.
از جدول فیلتر، ما می دانیم که 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 تغییر دادیم.
با تقسیم IP با دستور، می توانیم یک فیلتر میزبان را برای فیلتر کردن بسته ها با میزبان مورد علاقه مشخص کنیم. به عبارت دیگر، در نحو، به جای آدرس آی پی فرستنده / گیرنده، شما باید میزبان خود را مشخص کنید. این به نظر می رسد:
sudo tcpdump -i ppp0 dst host google-public-dns-a.google.com
مثال:
در تصویر شما می توانید ببینید که در "ترمینال" تنها آن دسته از بسته های ارسال شده از IP ما را به میزبان google.com نمایش می دهد. همانطور که می بینید، به جای میزبان گوگل، می توانید هر نوع دیگری را وارد کنید.
همانطور که با فیلتر کردن IP، در نحو DST ، شما می توانید آن را با src جایگزین کنید تا بسته هایی که به کامپیوتر شما ارسال می شوند را مشاهده کنید:
sudo tcpdump -i ppp0 src host google-public-dns-a.google.com
توجه: فیلتر میزبان باید بعد از dst یا src باشد، در غیر این صورت دستور خطایی ایجاد می کند. در مورد فیلتر کردن IP، برعکس، dst و src در مقابل فیلتر ip قرار دارند.
اگر شما نیاز به استفاده از چند فیلتر در یک بار در یک فرمان دارید، باید از فیلتر استفاده کنید و یا (بسته به مورد). مشخص کردن فیلترها در نحو و جداسازی آنها با این اپراتورها، شما آنها را "به عنوان" کار می کنید. به عنوان مثال، به نظر می رسد این است:
sudo tcpdump -i ppp0 ip dst 95.47.144.254 or ip src 95.47.144.254
مثال:
نحو دستورالعمل نشان می دهد که ما می خواهیم "ترمینال" تمام بسته هایی را که به آدرس 95.47.144.254 ارسال شده اند و بسته های دریافت شده توسط همان آدرس نمایش داده شوند، نمایش دهند. شما همچنین می توانید تعدادی متغیر را در این عبارت تغییر دهید. برای مثال، به جای IP، HOST را مشخص کنید یا آدرسهای خود را مستقیما جایگزین کنید.
فیلتر پورت عالی است، زمانی که شما نیاز دارید اطلاعات مربوط به بسته ها را با یک پورت خاص دریافت کنید. بنابراین، اگر فقط نیاز به دیدن پاسخ ها یا نمایش داده ها DNS دارید، باید پورت 53 را مشخص کنید:
sudo tcpdump -vv -i ppp0 port 53
مثال:
اگر میخواهید بستههای HTTP را مشاهده کنید، باید پورت 80 را وارد کنید:
sudo tcpdump -vv -i ppp0 port 80
مثال:
در میان چیزهای دیگر، ممکن است بلافاصله ردیابی دامنه های پورت. برای انجام این کار، از فیلتر portrange استفاده کنید:
sudo tcpdump portrange 50-80
همانطور که می بینید، در رابطه با فیلتر portrange ، لازم نیست که گزینه های اضافی را مشخص کنید. محدوده را فقط تنظیم کنید
شما همچنین می توانید تنها ترافیک مربوط به هر پروتکل را نمایش دهید. برای انجام این کار از نام پروتکل به عنوان یک فیلتر استفاده کنید. بیایید به مثال udp نگاه کنیم :
sudo tcpdump -vvv -i ppp0 udp
مثال:
همانطور که در تصویر دیده می شود، پس از اجرای فرمان در ترمینال ، تنها بسته هایی با پروتکل udp نمایش داده می شوند. بر این اساس، میتوانید بر روی دیگران فیلتر کنید، به عنوان مثال arp :
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 less 50
مثال:
حالا بگذارید در بسته های Terminal که بیش از 50 بیت هستند نمایش داده شود:
sudo tcpdump -i ppp0 greater 50
مثال:
همانطور که می بینید، آنها به طور یکسان اعمال می شوند، تنها تفاوت در نام فیلتر است.
در انتهای مقاله می توان نتیجه گرفت که دستور tcpdump یک ابزار بسیار عالی است که می توانید هر بسته داده ای را که از طریق اینترنت پخش می شود، ردیابی کنید. اما برای این تنها کافی نیست که وارد تیم خود در "ترمینال" شوید . دستیابی به نتیجه مورد نظر تنها زمانی حاصل خواهد شد که شما از تمام انواع گزینه ها و فیلترها و همچنین ترکیب آنها استفاده کنید.