إذا كنت بحاجة إلى تحليل حزم الشبكات أو اعتراضها في Linux ، فمن الأفضل استخدام tcpdump أداة وحدة التحكم. لكن المشكلة تكمن في إدارة معقدة إلى حد ما. سوف يجد مستخدم عادي أن العمل مع المرفق غير مريح ، ولكن فقط للوهلة الأولى. ستخبرك المقالة عن كيفية تنظيم tcpdump ، والأصل الذي يحتوي عليه ، وكيفية استخدامه ، كما يقدم العديد من الأمثلة على استخدامه.

اقرأ أيضًا: أدلة لإعداد اتصال بالإنترنت في أوبونتو . ديبيان . خادم أوبونتو

تركيب

يتضمن معظم مطوري أنظمة التشغيل المستندة إلى Linux أداة tcpdump في القائمة المثبتة مسبقًا ، ولكن إذا لم يكن ذلك في حالة التوزيع الخاصة بك ، فيمكنك دومًا تنزيلها وتثبيتها من خلال "المحطة الطرفية" . إذا كان نظام التشغيل الخاص بك يستند إلى Debian ، وهذا هو Ubuntu و Linux Mint و Kali Linux وما شابه ، فستحتاج إلى تشغيل هذا الأمر:

sudo apt install tcpdump

عند التثبيت ، تحتاج إلى إدخال كلمة مرور. لاحظ أنه عند الكتابة ، لا يتم عرضها ، ويجب عليك إدخال الحرف "D" واضغط على Enter لتأكيد التثبيت.

إذا كان لديك Red Hat أو Fedora أو CentOS ، فسيبدو أمر التثبيت على النحو التالي:

sudo yam install tcpdump

بعد تثبيت الأداة ، يمكن استخدامها على الفور. حول هذا وأكثر سيتم مناقشة المزيد في النص.

اقرأ أيضا: دليل تركيب PHP لخادم Ubuntu

بناء الجملة

مثل أي أمر آخر ، فإن tcpdump له بنية خاصة به. معرفة ذلك ، يمكنك تعيين جميع المعلمات اللازمة التي ستؤخذ في الاعتبار عند تنفيذ الأمر. بناء الجملة كما يلي:

tcpdump опции -i интерфейс фильтры

عند استخدام الأمر ، يجب عليك تحديد واجهة التتبع. الفلاتر والخيارات ليست متغيرات إلزامية ، ولكنها تسمح بتخصيص أكثر مرونة.

خيارات

على الرغم من عدم ضرورة تحديد خيار ، فأنت بحاجة إلى سرد الخيارات المتاحة. لا يعرض الجدول كل قائمتهم ، ولكن فقط الأكثر شعبية ، لكنهم أكثر من كافية لحل معظم المهام.

خيار تعريف
-A يتيح لك فرز الحزم بتنسيق ASCII
-l يضيف وظيفة التمرير
-i بعد الدخول ، يجب عليك تحديد واجهة الشبكة التي سيتم مراقبتها. لبدء تتبع كل الواجهات ، أدخل كلمة "أي" بعد الخيار
-c إنهاء عملية التتبع بعد التحقق من عدد الحزم المحدد
-w يولد ملف نصي مع تقرير التحقق
-e يشير إلى مستوى اتصال الإنترنت الخاص بحزمة البيانات
-L يخرج فقط تلك البروتوكولات التي تدعم واجهة الشبكة المحددة
-C ينشئ ملفًا آخر أثناء كتابة الحزمة ، إذا كان حجمها أكبر من الحجم المحدد
-r يفتح ملف القراءة الذي تم إنشاؤه باستخدام الخيار -w
-j لتسجيل الحزم ، سيتم استخدام تنسيق TimeStamp
-J يسمح لك بعرض جميع تنسيقات TimeStamp المتوفرة
-G يعمل على إنشاء ملف مع سجلات. يتطلب الخيار أيضًا قيمة مؤقتة ، وبعد ذلك سيتم إنشاء سجل جديد
-v، -vv، -vvv اعتمادًا على عدد الأحرف في الخيار ، سيصبح إخراج الأمر أكثر تفصيلاً (الزيادة تتناسب طرديًا مع عدد الأحرف)
-f يظهر الإخراج اسم مجال عنوان IP
-F يسمح لك بقراءة المعلومات وليس من واجهة الشبكة ، ولكن من الملف المحدد
-D يوضح جميع واجهات الشبكة التي يمكنك استخدامها
-n يلغي تنشيط عرض أسماء النطاقات
-Z يحدد المستخدم الذي سيقوم حسابه بإنشاء كل الملفات
-K تحليل اختباري مفقود
-q مظاهرة من المعلومات موجزة
-H يكتشف رؤوس 802.11s
من أنا تستخدم عند التقاط الحزم في وضع الشاشة

بعد تفكيك الخيارات ، فقط أدناه سنذهب مباشرة إلى تطبيقاتهم. في غضون ذلك ، سيتم النظر في الفلاتر.

مرشحات

كما ذكر في بداية المقال ، يمكنك إضافة عوامل تصفية إلى بناء الجملة tcpdump. الآن سيتم النظر في الأكثر شعبية منهم:

فلتر تعريف
مضيف يحدد اسم المضيف
شبكة يحدد الشبكة الفرعية وشبكة IP
الملكية الفكرية يعمل لعنوان البروتوكول
SRC يعرض الحزم التي تم إرسالها من العنوان المحدد
التوقيت الصيفي يعرض الحزم التي تم استلامها بواسطة العنوان المحدد
ARP، udp، tcp تصفية بواسطة أحد البروتوكولات
ميناء يعرض المعلومات المتعلقة بمنفذ معين
و ، أو تستخدم لدمج مرشحات متعددة في أمر
أقل ، أكبر إخراج الحزم أصغر أو أكبر من الحجم المحدد

يمكن دمج جميع المرشحات المذكورة أعلاه مع بعضها البعض ، لذلك عند إصدار أمر سترى فقط المعلومات التي تريد رؤيتها. من أجل فهم استخدام المرشحات أعلاه بمزيد من التفصيل ، من الجدير إعطاء أمثلة.

اقرأ أيضا: الأوامر المستخدمة بشكل متكرر في لينكس "المحطة الطرفية"

أمثلة على الاستخدام

يتم الآن سرد خيارات بناء الجملة الشائعة للأمر tcpdump. لا يمكن إدراج كل منهم ، حيث يمكن أن تكون تنوعاتهم عددًا غير محدود.

عرض قائمة من الواجهات

من المستحسن أن يقوم كل مستخدم بالتحقق أولاً من قائمة جميع واجهات الشبكة الخاصة به التي يمكن تتبعها. من الجدول أعلاه ، نعلم أنك تحتاج إلى استخدام الخيار -D ، لذا قم بتشغيل الأمر التالي في المحطة الطرفية:

sudo tcpdump -D

على سبيل المثال:

قم بتشغيل الأمر tcpdump مع الخيار d في linux

كما ترى ، في المثال هناك ثمانية واجهات يمكنك عرضها باستخدام الأمر tcpdump. المادة سوف تعطي أمثلة مع ppp0 ، يمكنك استخدام أي دولة أخرى.

التقاط حركة المرور العادية

إذا كنت بحاجة إلى تتبع واجهة شبكة واحدة ، فيمكنك القيام بذلك باستخدام الخيار -i . لا تنس إدخال اسم الواجهة بعد إدخالها. في ما يلي مثال لتنفيذ أمر كهذا:

sudo tcpdump -i ppp0

ملاحظة: قبل الأمر نفسه ، تحتاج إلى إدخال "sudo" ، لأنه يتطلب حق المتميز.

على سبيل المثال:

مثال على تخطيط حركة مرور واجهة الشبكة باستخدام الأمر tcpdump بدون استخدام الخيارات والفلاتر

ملاحظة: بعد الضغط على 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

حيث يتم تمييز اللون:

  • أزرق - وقت استلام الحزمة ؛
  • برتقالي - إصدار البروتوكول ؛
  • أخضر - عنوان المرسل ؛
  • أرجواني - عنوان المستلم.
  • الرمادي - معلومات إضافية حول برنامج التعاون الفني.
  • أحمر - حجم الحزمة (المعروضة بالبايت).

يحتوي بناء الجملة هذا على القدرة على الإخراج في إطار "المحطة الطرفية" دون استخدام خيارات إضافية.

التقاط حركة المرور مع الخيار -v

كما تعلم من الجدول ، يتيح لك الخيار -v زيادة كمية المعلومات. سوف نقوم بتحليل على سبيل المثال. دعونا نتحقق من نفس الواجهة:

sudo tcpdump -v -i ppp0

على سبيل المثال:

مثال على تخطيط حركة واجهة شبكة الاتصال باستخدام الأمر tcpdump باستخدام الخيار -v في linux

هنا يمكنك أن ترى أن السطر التالي ظهر في الإخراج:

IP (tos 0x0, ttl 58 , id 30675, offset 0, flags [DF] , proto TCP (6) , length 52

حيث يتم تمييز اللون:

  • برتقالي - إصدار البروتوكول ؛
  • أزرق - متوسط ​​العمر المتوقع للبروتوكول؛
  • أخضر - طول حقل الرأس ؛
  • الأرجواني - نسخة من حزمة tcp.
  • أحمر - حجم الحزمة.

أيضا ، في بناء جملة الأمر ، يمكنك تحديد الخيار -vv أو -vvv ، والذي سيزيد من كمية المعلومات المعروضة على الشاشة.

الخيار -w و -r

ذكر جدول الخيارات إمكانية حفظ جميع بيانات الإخراج في ملف منفصل بحيث يمكن مشاهدتها لاحقًا. الخيار -w مسؤول عن هذا. لاستخدام بسيطة للغاية ، فقط أشر إلى الأمر ، ثم أدخل اسم ملف المستقبل مع التمديد ".pcap" . دعونا ننظر في كل على سبيل المثال:

sudo tcpdump -i ppp0 -w file.pcap

على سبيل المثال:

مثال على الخيار -w في الأمر tcpdump في linux

يرجى ملاحظة: أثناء تسجيل السجلات ، لا يتم عرض أي نص في الملف على شاشة "المحطة الطرفية".

عندما تريد عرض المخرجات المسجلة ، تحتاج إلى استخدام الخيار -r ، وبعد ذلك لكتابة اسم الملف المسجل مسبقًا. يتم استخدامه بدون خيارات وعوامل أخرى:

sudo tcpdump -r file.pcap

على سبيل المثال:

مثال على عرض ملف قيادة tcpdump محفوظ مسبقًا مع خيار w

كل من هذه الخيارات مثالية عندما تحتاج إلى حفظ كميات كبيرة من النص لأغراض التحليل في وقت لاحق.

تصفية IP

من جدول التصفية ، نعرف أن dst يسمح لك بعرض الحزم التي تم تلقيها فقط بواسطة العنوان على شاشة وحدة التحكم ، كما هو محدد في بناء جملة الأمر. وبالتالي ، من الملائم جدًا عرض الحزم التي يستلمها جهاز الكمبيوتر الخاص بك. للقيام بذلك ، تحتاج فقط إلى تحديد عنوان IP الخاص بك في الفريق:

sudo tcpdump -i ppp0 ip dst 10.0.6.67

على سبيل المثال:

مثال على استخدام تصفية dst و ip في الأمر tcpdump في linux

كما ترون ، بالإضافة إلى dst ، في الفريق كتبنا أيضا تصفية IP . بعبارة أخرى ، أخبرنا الكمبيوتر أنه عند اختيار الحزم ، فإنه سينتبه لعناوين IP الخاصة به ، وليس للمعلمات الأخرى.

بواسطة IP ، يمكنك تصفية وإرسال الحزم. في المثال ، نعود IP الخاص بنا. هذا هو الآن سوف نتتبع الحزم التي يتم إرسالها من جهاز الكمبيوتر الخاص بنا إلى عناوين أخرى. للقيام بذلك ، قم بتنفيذ الأمر التالي:

sudo tcpdump -i ppp0 ip src 10.0.6.67

على سبيل المثال:

مثال على استخدام تصفية src و ip في الأمر tcpdump في linux

كما ترون ، في بناء جملة الأمر ، قمنا بتغيير مرشح dst إلى src ، وبالتالي نقول أن الجهاز يبحث عن المرسل بواسطة IP.

التصفية حسب HOST

قياسا على IP في الأمر ، يمكننا تحديد مرشح المضيف لإزالة الحزم مع مضيف الفائدة. أي ، في بناء الجملة ، بدلاً من عنوان IP للمرسل / المستقبل ، سيكون من الضروري تحديد مضيفه. يبدو مثل هذا:

sudo tcpdump -i ppp0 dst host google-public-dns-a.google.com

على سبيل المثال:

مثال على استخدام مرشح dst والمضيف في الأمر tcpdump في linux

في الصورة ، يمكنك رؤية أنه في "المحطة الطرفية" لا يتم عرض سوى الحزم التي تم إرسالها من عنوان IP الخاص بنا إلى مضيف google.com. كما ترى ، بدلاً من مضيف google ، يمكنك إدخال أي موقع آخر.

كما هو الحال مع تصفية 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

على سبيل المثال:

مثال على استخدام وفلتر في الأمر tcpdump في لينكس

من بناء جملة الأمر ، من الواضح أننا نريد أن نعرض على الشاشة "الطرفية" جميع الحزم التي تم إرسالها إلى العنوان 95.47.144.254 والحزم المستلمة من نفس العنوان. كما يمكنك تغيير بعض المتغيرات في هذا التعبير. على سبيل المثال ، بدلاً من IP ، حدد HOST أو استبدل العناوين نفسها.

الميناء ومرشح portrange

عامل تصفية المنفذ مثالي عندما تحتاج إلى الحصول على معلومات حول الحزم مع منفذ معين. لذلك ، إذا كنت تريد فقط رؤية إجابات أو استعلامات نظام أسماء النطاقات ، فستحتاج إلى تحديد المنفذ 53:

sudo tcpdump -vv -i ppp0 port 53

على سبيل المثال:

مثال على استخدام مرشح منفذ في الأمر tcpdump في لينكس

إذا كنت ترغب في عرض حزم http ، فستحتاج إلى إدخال المنفذ 80:

sudo tcpdump -vv -i ppp0 port 80

على سبيل المثال:

مثال على تطبيق مرشح المنفذ في الأمر tcpdump في لينكس

من بين أشياء أخرى ، من الممكن تتبع نطاق المنافذ مرة واحدة. لهذا ، يتم استخدام فلتر portrange :

sudo tcpdump portrange 50-80

مثال على استخدام مرشح portrange في بناء جملة الأمر tcpdump في linux

كما ترى ، ليس من الضروري تحديد خيارات إضافية بالاقتران مع عامل التصفية portrange . يكفي فقط لتعيين النطاق.

تصفية حسب البروتوكولات

يمكنك أيضا عرض فقط حركة المرور التي تتوافق مع أي بروتوكول. للقيام بذلك ، تحتاج إلى استخدام اسم هذا البروتوكول كمرشح. دعونا نلقي نظرة على مثال udp :

sudo tcpdump -vvv -i ppp0 udp

على سبيل المثال:

مثال لتصفية الأمر tcpdump بواسطة بروتوكول في لينكس

كما يمكن رؤيته في الصورة ، بعد تنفيذ الأمر ، تم عرض الحزم فقط مع بروتوكول udp في "المحطة الطرفية" . وفقًا لذلك ، يمكنك إجراء التصفية على أخرى ، على سبيل المثال ، arp :

sudo tcpdump -vvv -i ppp0 arp

أو برنامج التعاون الفني :

sudo tcpdump -vvv -i ppp0 tcp

تصفية صافي

يساعد مشغل الشبكة على تصفية الحزم ، مع الأخذ في الاعتبار أساس تعيين شبكتهم. لاستخدامها ببساطة مثل بقية - تحتاج إلى تحديد سمة net في بناء الجملة ، ثم أدخل عنوان الشبكة. في ما يلي مثال لمثل هذا الأمر:

sudo tcpdump -i ppp0 net 192.168.1.1

على سبيل المثال:

مثال لتصفية الأمر tcpdump عن طريق تعيين الشبكة في linux

تصفية حسب حجم الحزمة

لم نعتبر فلاتين أكثر إثارة للاهتمام: أقل وأكبر . من الجدول المزود بمرشحات ، نعلم أنها تخدم في رزم البيانات الناتج أكبر ( أقل ) أو أصغر ( أكبر ) الحجم المحدد بعد إدخال السمة.

لنفترض أننا نرغب في تتبع الحزم التي لا تتجاوز علامة 50 بت فقط ، فإن الأمر سيبدو كما يلي:

sudo tcpdump -i ppp0 less 50

على سبيل المثال:

حزم تصفية حسب تصفية حجمها أقل في الأمر tcpdump في لينكس

الآن دعنا نعرض في حزم "الطرفية" التي يزيد حجمها عن 50 بت:

sudo tcpdump -i ppp0 greater 50

على سبيل المثال:

تصفية الحزم حسب حجمها مرشح أكبر في الأمر tcpdump في لينكس

كما ترون ، يتم تطبيقها على قدم المساواة ، والفرق هو فقط في اسم مرشح.

استنتاج

في نهاية المقال ، يمكنك استنتاج أن الأمر tcpdump هو أداة رائعة ، يمكنك من خلالها تتبع أي حزمة بيانات يتم إرسالها عبر الإنترنت. ولكن هذا لا يكفي فقط لدخول الفريق في "المحطة" . لتحقيق النتيجة المرغوبة سيتم الحصول عليها فقط إذا كنت تستخدم كل أنواع الخيارات والفلاتر ، بالإضافة إلى مجموعاتها.