اگر شما نیاز به تجزیه و تحلیل بسته های شبکه را در لینوکس داشته باشید، بهتر است از ابزار کنسول برای این استفاده کنید. tcpdump. اما مشکل در مدیریت پیچیده آن بوجود می آید. این امر برای یک کاربر معمولی برای کار با این ابزار ناخوشایند خواهد بود، اما این فقط در نگاه اول است. مقاله توضیح می دهد که چگونه tcpdump سازماندهی شده است، چه نحو آن چگونه است، چگونه از آن استفاده کند، و نمونه های متعددی از استفاده از آن داده می شود.
همچنین نگاه کنید به: آموزش برای راه اندازی اتصال به اینترنت در اوبونتو، دبیان، سرور اوبونتو
نصب و راه اندازی
اکثر توسعه دهندگان سیستم عامل های مبتنی بر لینوکس شامل ابزار tcpdump در لیست از پیش نصب شده هستند، اما اگر به دلایلی در توزیع شما نیست، همیشه می توانید از طریق آن دانلود و نصب کنید "ترمینال". اگر سیستم عامل شما بر اساس دبیان است و این اوبونتو، لینوکس مینت، لینوکس کالی و مانند آن است، شما باید این دستور را اجرا کنید:
sudo apt install tcpdump
هنگام نصب باید رمز عبور را وارد کنید. لطفا توجه داشته باشید که هنگام تایپ کردن آن نمایش داده نمی شود، همچنین برای تایید نصب، باید شخصیت را وارد کنید "D" و مطبوعات وارد شوید.
اگر شما 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]، طول 594
جایی که رنگ برجسته شده است:
- آبی - زمان دریافت بسته؛
- نارنجی - نسخه پروتکل؛
- سبز - آدرس فرستنده؛
- بنفش - آدرس گیرنده؛
- خاکستری - اطلاعات اضافی در مورد tcp؛
- قرمز - اندازه بسته (نمایش داده شده در بایت).
این نحو توانایی خروجی در پنجره را دارد "ترمینال" بدون استفاده از گزینه های اضافی.
ضبط ترافیک با گزینه -v
همانطور که از جدول شناخته شده است، گزینه -v به شما اجازه می دهد مقدار اطلاعات را افزایش دهید. اجازه بدهید یک نمونه را در نظر بگیریم همان رابط را بررسی کنید:
sudo tcpdump -v -i ppp0
مثال:
در اینجا می توانید ببینید که خط زیر در خروجی نمایش داده می شود:
IP (tos 0x0، ttl 58، id 30675، offset 0، پرچم ها [DF]، proto TCP (6)، طول 52
جایی که رنگ برجسته شده است:
- نارنجی - نسخه پروتکل؛
- آبی - زندگی پروتکل؛
- سبز - طول هدر فیلد؛
- بنفش - نسخه بسته tcp؛
- قرمز - اندازه بسته
همچنین در نحو فرمان میتوانید گزینه را بنویسید -vv یا -vvv، که بیشتر مقدار اطلاعات نمایش داده شده روی صفحه را افزایش می دهد.
گزینه -w و -r
جدول گزینه های ذکر شده امکان ذخیره تمام داده های خروجی را در یک فایل جداگانه به طوری که آنها را می توان بعدا مشاهده کرد. گزینه این مسئولیت است. -w. استفاده بسیار ساده است، فقط آن را در فرمان وارد کنید و سپس نام فایل آینده با پسوند را وارد کنید ".pcap". تمام مثالها را در نظر بگیرید:
sudo tcpdump -i ppp0 -w file.pcap
مثال:
لطفا توجه داشته باشید: هنگام نوشتن سیاهههای مربوط به یک فایل، در صفحه "Terminal" هیچ متن نمایش داده نمی شود.
وقتی می خواهید خروجی ضبط شده را مشاهده کنید، باید از گزینه استفاده کنید -rبه دنبال نام فایل قبلا ثبت شده است. این بدون گزینه ها و فیلترها اعمال می شود:
sudo tcpdump -r file.pcap
مثال:
هر دوی این گزینه ها در مواردی که شما نیاز دارید حجم زیادی از متن را برای تجزیه و تحلیل های بعدی ذخیره کنید، کاملا مناسب است.
فیلتر کردن IP
از جدول فیلتر، ما این را می دانیم دقت اجازه می دهد تا روی صفحه نمایش کنسول فقط آن دسته از بسته هایی را که توسط آدرس مشخص شده در فرمان دستور دریافت می شوند، نمایش داده شود. بنابراین، بسیار راحت است که بسته های دریافت شده توسط کامپیوتر شما را مشاهده کنید. برای انجام این کار، تیم فقط باید آدرس IP خود را مشخص کند:
sudo tcpdump -i ppp0 ip dst 10.0.6.67
مثال:
همانطور که می بینید، علاوه بر این دقت، در تیم، ما همچنین فیلتر را ثبت کردیم آی پی. به عبارت دیگر، ما به کامپیوتر گفتیم که هنگام انتخاب بسته ها، او به آدرس آی پی خود و نه به سایر پارامترها توجه می کند.
با IP، می توانید بسته ها را فیلتر کنید و ارسال کنید. در مثال ما دوباره به IP خودمان می دهیم. به این ترتیب، ما اکنون خواهیم دید که بسته ها از طریق رایانه ما به آدرس های دیگر ارسال می شوند. برای انجام این کار، دستور زیر را اجرا کنید:
sudo tcpdump -i ppp0 ip src 10.0.6.67
مثال:
همانطور که می بینید، ما فیلتر را در نحو فرمان تغییر دادیم. دقت بر روی src، به این ترتیب دستگاه را برای جستجوی فرستنده توسط آی پی بررسی می کند.
فیلتر کردن HOST
با مقایسه با IP در تیم، می توانیم یک فیلتر را مشخص کنیم میزبانبا استفاده از میزهای مورد علاقه، بستهها را از بین ببرید. به عبارت دیگر، در نحو، به جای آدرس IP فرستنده / گیرنده، شما باید میزبان خود را مشخص کنید. این به نظر می رسد:
sudo tcpdump -i ppp0 dst host google-public-dns-a.google.com
مثال:
در تصویر می توانید ببینید که در "ترمینال" فقط آن دسته از بسته های ارسال شده از IP ما به میزبان google.com نمایش داده می شوند. همانطور که می بینید، به جای میزبان گوگل، می توانید هر نوع دیگری را وارد کنید.
همانطور که با فیلتر کردن IP، نحو است: دقت می تواند جایگزین شود 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 یا ip src 95.47.144.254
مثال:
از دستور syntax می توانید ببینید که ما می خواهیم نمایش بدهیم "ترمینال" تمام بسته های ارسال شده به آدرس 95.47.144.254 و بسته های دریافت شده توسط همان آدرس. شما همچنین می توانید تعدادی متغیر را در این عبارت تغییر دهید. به عنوان مثال، به جای IP، HOST را مشخص کنید یا آدرسهای خود را مستقیما جایگزین کنید.
پورت فیلتر و بندر
فیلتر کردن بندر مناسب برای زمانی که شما نیاز به دریافت اطلاعات در مورد بسته با یک پورت خاص. بنابراین، اگر فقط نیاز به دیدن پاسخ ها یا نمایش داده ها DNS دارید، باید پورت 53 را مشخص کنید:
sudo tcpdump -vv -i ppp0 port 53
مثال:
اگر میخواهید بستههای HTTP را مشاهده کنید، باید پورت 80 را وارد کنید:
sudo tcpdump -vv -i ppp0 port 80
مثال:
در میان چیزهای دیگر، ممکن است بلافاصله ردیابی دامنه های پورت. برای انجام این کار، فیلتر را اعمال کنید پرتغال:
sudo tcpdump portrange 50-80
همانطور که می بینید، در رابطه با فیلتر پرتغال لازم نیست گزینه های اضافی را مشخص کنید. محدوده را فقط تنظیم کنید.
فیلتر پروتکل
شما همچنین می توانید تنها ترافیک مربوط به هر پروتکل را نمایش دهید. برای انجام این کار از نام پروتکل به عنوان یک فیلتر استفاده کنید. بیایید به مثال نگاه کنیم udp:
sudo tcpdump -vvv -i ppp0 udp
مثال:
همانطور که می توانید در تصویر ببینید، پس از اجرای دستور در "ترمینال" فقط بسته های پروتکل نمایش داده شدند 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 - این یک ابزار عالی است که با آن می توانید هر بسته داده ای را که از طریق اینترنت منتقل شده است، ردیابی کنید. اما برای این تنها کافی نیست که وارد فرمان خود شوید "ترمینال". برای رسیدن به نتیجه مطلوب فقط در صورت استفاده از انواع گزینه ها و فیلترها و همچنین ترکیب آنها به دست می آید.