آیا می خواهید در مورد ترافیک شبکه خود بیشتر بدانید؟ با استفاده از این مثال ها نحوه استفاده از tcpdump را در لینوکس یاد بگیرید.

دستور tcpdump در لینوکس

آیا برای تجزیه و تحلیل ترافیک شبکه خود، سعی دارید بسته های داده را کپچر کنید؟ شاید شما مالک سروری باشید که با مشکلی روبرو شده است و می خواهد داده های ارسالی در شبکه را کنترل کند. وضعیت هر چه که باشد؛ ابزار tcpdump در لینوکس همان چیزی است که نیاز دارید. در این مثاله ما به طور مفصل در مورد دستور tcpdump و همچنین برخی راهنمایی ها در مورد نحوه نصب و استفاده از دستور tcpdump در لینوکس صحبت خواهیم کرد.

دستور tcpdump چیست؟ نحوه نصب آن در لینوکس

Tcpdump ابزاری قدرتمند برای نظارت بر شبکه است که به کاربر اجازه می دهد بسته ها و ترافیک شبکه را به طور موثر فیلتر کند. می توانید اطلاعات دقیق مربوط به TCP/IP و بسته های انتقال داده شده در شبکه خود را بدست آورید. Tcpdump یک ابزار خط فرمان است و این بدان معناست که می توانید آن را روی سرورهای لینوکس بدون صفحه نمایش اجرا کنید.

مدیران سیستم همچنین می توانند ابزار tcpdump را با cron ادغام کنند تا کارهای مختلفی مانند ورود به سیستم را خودکار کنند. از آنجا که ویژگی های زیادی آن را کاملا همه کاره کرده است، tcpdump  به عنوان عیب یابی و همچنین به عنوان یک ابزار امنیتی کار می کند.

در حالی که اکثر اوقات tcpdump از قبل روی سیستم شما نصب شده است، برخی از توزیع های لینوکس با این پکیج ارائه نمی شوند، بنابراین ممکن است مجبور شوید ابزار را به صورت دستی روی سیستم خود نصب کنید.

با استفاده از دستور which شما می توانید بررسی کنید که آیا ابزار TCPDump روی سیستم شما نصب شده است یا خیر:

which tcpdump

اگر خروحی مسیر دایرکتور را نشان می دهد (مانند /usr/bin/tcpdump) پس این پکیج روی سیستم شما نصب شده است. اگر نه می توانید این کار را به راحتی با استفاده از پکیج منیجر پیش فرض روی سیستم انجام دهید.

برای نصب tcpdump در توزیع های مبتنی بر دبیان مانند اوبونتو از دستور زیر استفاده کنید:

sudo apt-get install tcpdump

برای نصب tcpdump در CentOS از دستور زیر استفاده کنید:

sudo yum install tcpdump

در توزیع های مبتنی بر Arch از دستور زیر استفاده کنید:

sudo pacman -S tcpdump

و برای نصب در Fedora از دستور زیر استفاده کنید:

sudo dnf install tcpdump

توجه داشته باشید که پکیج tcpdump به libcap به عنوان یک وابستگی نیاز دارد، بنابراین مطمئن شوید که آن را روی سیستم خود نیز نصب کرده اید.

مثال هایی در مورد نحوه استفاده از Tcpdump برای کپچر بسته های شبکه در لینوکس

حالا که با موفقیت tcpdump را روی دستگاه لینوکس خود نصب کردید، زمان نظارت برخی از بسته ها فرا رسیده است. از آنجا که tcpdump برای اجرای بیشتر عملیات به مجوزهای superuser نیاز دارد ، باید sudo را به دستورات خود اضافه کنید.

#1 لیست کردن تمام اینترفیس های شبکه

برای بررسی اینکه کدام رابط یا اینترفیس های شبکه برای کپچر وجود دارد از فلاگ یا پرچم –D با دستور tcpdump استفاده کنید.

tcpdump –D

از فلاگ –list-interfaces به عنوان آرگومان استفاده کنید تا همان خروجی را برگرداند.

tcpdump –list-interfaces

در تصویر زیر شما خروجی لیستی از تمام اینترفیس های شبکه ای که در سیستم شما وجود دارد را مشاهده می کنید.

دستور tcpdump چیست؟ نحوه استفاده از آن با 6 مثال

حالا وقت آن است که لیست اینترفیس های شبکه را بدست آورید؛ وقت آن است که با کپچر بسته های موجود در سیستم؛ شبکه خود را کنترل کنید. اگر چه می توانید مشخص کنید که از کدام اینترفیس استفاده می کنید، هر آرگومان به tcpdump دستور می دهد تا بسته های شبکه را با استفاده از هر اینترفیس فعال کپچر کند.

tcpdump –interface any

حالا سیستم خروجی زیر را نمایش می دهد.

دستور tcpdump چیست؟ نحوه استفاده از آن با 6 مثال

#2 فرمت خروجی tcpdump

با شروع خط سوم؛ هر خط خروجی نشان دهنده یک بسته خاص است که توسط tcpdump کپچر شده است. در اینجا خروجی یک بسته را مشاهده می کنید.

17:00:25.369138 wlp0s20f3 Out IP localsystem.40310 > kul01s10-in-f46.1e100.net.https: Flags [P.], seq 196:568, ack 1, win 309, options [nop,nop,TS val 117964079 ecr 816509256], length 33

به خاطر داشته باشید که همه بسته ها به این روش کپچر نمی شوند، اما این فرمت کلی است.

خروجی شامل اطلاعات زیر است:

  • برچسب زمانی بسته دریافت شده
  • نام اینترفیس / رابط
  • جریان بسته
  • نام پروتکل شبکه
  • آدرس IP و جزئیات پورت
  • فلاگ های TCP
  • تعداد توالی داده ها در بسته
  • تایید داده ها
  • اندازه پنجره
  • طول بسته

قسمت اول (17:00:25.369138) زمان ارسال یا دریافت بسته از سیستم را نشان می دهد. زمان ثبت شده از زمان محلی سیستم شما استخراج می شود.

قسمت دوم و سوم نشان دهنده اینترفیس یا رابط استفاده شده و جریان بسته است. در بخش بالا؛ wlp0s20f3 نام رابط بی سیم و Out جریان بسته است.

قسمت چهارم شامل اطلاعات مربوط به نام پروتکل شبکه است. به طور کلی، شما دو پروتکل پیدا خواهید کرد – IP و IP6 ، جایی که IP نشان دهنده IPV4 و IP6 نشان دهنده IPV6 است.

قسمت بعدی شامل آدرسهای IP یا نام سیستم مبدا و مقصد است. آدرس IP با شماره پورت دنبال می شود.

قسمت ششم در خروجی از فلاگ های TCP تشکیل شده است. فلاگ های مختلفی وجود دارد که در خروجی tcpdump استفاده می شود.

نام فلاگ مقدار توضیحات
SYN S اتصال شروع شده است.
FIN F اتصال پایان یافته است.
PUSH P اطلاعات پوش شد.
RST R اتصال ریست شد.
ACK . تصدیق

همچنین خروجی می تواند حاوی ترکیبی از چندین فلاگ TCP باشد به عنوان مثال FLAG [f.] مخفف FIN-ACK است.

در قطعه خروجی پیش بروید؛ قسمت بعدی حاوی شماره توالی (seq 196:568) از داده های بسته است. بسته اول همیشه یک مقدار صحیح مثبت دارد و بسته بعدی از شماره توالی نسبی برای بهبود جریان داده استفاده می کند.

قسمت بعدی دارای شماره تصدیق یا تایید (ack 1) یا Ack با یک عدد است. بسته کپچر شده در دستگاه فرستنده از 1 به عنوان شماره تایید استفاده می کند. در سمت گیرنده، شماره Ack مقدار بسته بعدی است.

قسمت نهم در خروجی اندازه پنجره (Win 309) را در خود جای می دهد که تعداد بایت های موجود در بافر گیرنده است. چندین فیلد دیگر وجود دارد که از اندازه پنجره پیروی می کنند که از این بین می توان به Maximum Segment Size (MSS) اشاره کرد.

قسمت آخر (طول 33) شامل طول بسته کلی کپچر شده توسط tcpdump است.

#3 تعداد بسته های کپچر شده را محدود کنید

هنگام اجرای دستور tcpdump برای اولین بار، ممکن است متوجه شوید که سیستم همچنان بسته های شبکه را کپچر می کند این کار تا زمانی که سیگنال وقفه را انتقال دهید انجام می شود. با تعیین تعداد بسته هایی که می خواهید کپچر کنید با استفاده از پرچم -c می توانید این رفتار پیش فرض را نادیده بگیرید.

tcpdump –interface any -c 10

دستور فوق ده بسته از هر اینترفیس شبکه فعال را کپچر می کند.

#4 فیلتر بسته ها بر اساس فیلدها

زمانی که در هنگام عیب یابی مشکلی دارید ، دریافت یک بلاک بزرگ از متن در ترمینال کار ساده ای نیست. اینجاست که ویژگی فیلتر در tcpdump وارد عمل می شود. شما می توانید بسته ها را با توجه به زمینه های مختلف از جمله میزبان ، پروتکل، شماره پورت و موارد دیگر فیلتر کنید.

برای کپچر فقط بسته های TCP دستور زیر را تایپ کنید:

tcpdump –interface any -c 5 tcp

به همین ترتیب، اگر می خواهید خروجی را با استفاده از شماره پورت فیلتر کنید از دستور زیر استفاده کنید:

tcpdump –interface any -c 5 port 50

دستور فوق فقط بسته های ارسال شده از طریق پورت مشخص را بازیابی می کند.

برای دریافت جزئیات بسته برای یک میزبان / هاست خاص از دستور زیر استفاده کنید:

tcpdump –interface any -c 5 host 112.123.13.145

اگر می خواهید بسته های ارسالی یا دریافت شده توسط یک هاست خاص را فیلتر کنید، از آرگومان src یا dst همراه با دستور استفاده کنید.

tcpdump –interface any -c 5 src 112.123.13.145

tcpdump –interface any -c 5 dst 112.123.13.145

شما همچنین می توانید از عملگرهای منطقی استفاده کنید و دو یا چند عبارت را با هم ترکیب کنید. به عنوان مثال، برای دریافت بسته های متعلق به منبع IP 112.123.13.145 و استفاده از پورت 80  از دستور زیر استفاده کنید:

tcpdump –interface any -c 10 src 112.123.13.145 and port 80

عبارات پیچیده را می توان با استفاده از پرانتز به صورت زیر گروه بندی کرد :

tcpdump –interface any -c 10 “(src 112.123.13.145 or src 234.231.23.234) and (port 45 or port 80)”

#5 مشاهده محتوای بسته

برای تجزیه و تحلیل محتوای بسته شبکه می توانید از پرچم های -A و -x با دستور tcpdump استفاده کنید. -A  پرچم مخفف ASCII فرمت و -x نشان دهنده فرمت هگزادسیمال است.

برای مشاهده محتوای بسته شبکه بعدی گرفته شده توسط سیستم از دستورات زیر استفاده کنید:

tcpdump –interface any -c 1 -A

tcpdump –interface any -c 1 -x

#6 ذخیره داده های کپچر شده در یک فایل

اگر می خواهید داده های ضبط را برای اهداف مرجع ذخیره کنید، tcpdump برای کمک به شما وجود دارد. فقط پرچم -w را با دستور پیش فرض استفاده کنید تا خروجی را به جای نمایش در صفحه، در یک فایل داشته باشید:

tcpdump –interface any -c 10 -w data.pcap

.pcap پسوند فایل مخفف packet capture است. همچنین می توانید با استفاده از پرچم -v دستور فوق را در حالت verbose اجرا کنید:

tcpdump –interface any -c 10 -w data.pcap -v

برای خواندن یک فایل .pcap با استفاده از tcpdump ، از پرچم -r و به دنبال آن مسیر فایل استفاده کنید. -r مخفف Read است.

tcpdump -r data.pcap

همچنین می توانید بسته های شبکه را از داده های بسته ذخیره شده در فایل فیلتر کنید.

tcpdump -r data.pcap port 80

جمع بندی

اگر وظیفه مدیریت سرور لینوکس به شما محول شده است؛ دستور tcpdump ابزاری عالی برای استفاده است. با کپچر بسته های انتقال یافته در شبکه (در همان لحظه) می توانید به راحتی مشکلات مربوط به شبکه را رفع کنید. اما قبل از همه اینها  دستگاه شما باید به اینترنت متصل باشد.

منبع: makeuseof

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.