
psad: كشف التسلل وتحليل السجلات باستخدام iptables
كاشف هجمات فحص المنافذ psad هو برنامج خفي خفيف الوزن مكتوب ومصمم للعمل مع كود جدران الحماية Linux iptables/ip6tables/firewalld لكشف حركة المرور المشبوهة مثل مسح المنافذ والمسح الشامل، الأبواب الخلفية، اتصالات القيادة والتحكم في البوتنت، وغيرها. يتميز بمجموعة من عتبات الخطر القابلة للتكوين بدرجة عالية (مع قيم افتراضية معقولة)، ورسائل تنبيه مفصلة تتضمن المصدر والوجهة ونطاق المنفذ الممسوح وأوقات البداية والنهاية وأعلام TCP وخيارات nmap المقابلة ومعلومات DNS العكسية والتنبيه عبر البريد الإلكتروني و syslog والحظر التلقائي لعناوين IP المخالفة عبر التكوين الديناميكي لمجموعات قواعد iptables، والبصمة السلبية لنظام التشغيل، وتقارير DShield. بالإضافة إلى ذلك، يدمج psad العديد من توقيعات TCP و UDP و ICMP المضمنة في نظام كشف التسلل Snort.
لكشف عمليات الفحص شديدة الشك لبرامج الأبواب الخلفية المختلفة (مثل EvilFTP و GirlFriend و SubSeven) وأدوات DDoS (Mstream و Shaft) وعمليات فحص المنافذ المتقدمة (SYN و FIN و XMAS) والتي يمكن استخدامها بسهولة ضد جهاز عبر nmap. يمكن لـ psad أيضًا التنبيه بشأن توقيعات Snort التي يتم تسجيلها عبر
fwsnort، والذي يستخدم امتداد مطابقة السلسلة iptables لكشف حركة المرور التي تطابق توقيعات طبقة التطبيق. اعتبارًا من الإصدار 2.4.4، يمكن لـ psad أيضًا اكتشاف مرحلة فحص بيانات الاعتماد الافتراضية لإنترنت الأشياء لبوتنت Mirai.
قائمة الميزات الكاملة أدناه.
psad إنشاء تنبيهات لهجمات تجاوز سعة المخزن المؤقت لطبقة التطبيق وأوامر التطبيق المشبوهة وحركة المرور الأخرى المشبوهة في الطبقة 7.يوفر psad تكاملًا مع gnuplot و afterglow لإنتاج رسوم بيانية لحركة المرور الخبيثة. الرسمان البيانيان التاليان لدودة Nachi من تحدي Honeynet Scan30. أولاً، رسم بياني للروابط تم إنتاجه بواسطة afterglow بعد تحليل بيانات سجل iptables بواسطة psad:
"رسم بياني لروابط دودة Nachi"
الثاني يظهر حركة مرور دودة Nachi على أساس كل ساعة من بيانات Scan30 iptables:
"رسم بياني ساعي لدودة Nachi"
يمكن العثور على معلومات حول الكلمات المفتاحية للتكوين التي يشير إليها psad في كل من صفحة الدليل psad(8)، وأيضًا هنا:
يتم جمع جميع المعلومات التي يحللها psad من رسائل سجل iptables. يقرأ psad افتراضيًا ملف /var/log/messages للحصول على رسائل iptables الجديدة ويختياريًا يكتبها إلى ملف مخصص (/var/log/psad/fwdata). يكون psad مسؤولاً بعد ذلك عن تطبيق منطق عتبة الخطر والتوقيع لتحديد ما إذا كان قد حدث فحص للمنافذ، وإرسال رسائل البريد الإلكتروني التنبيهية المناسبة، و (اختياريًا) حظر عناوين IP المخالفة. يتضمن psad معالج إشارات بحيث إذا تم استقبال إشارة USR1، سيقوم psad بتفريغ محتويات بنية بيانات تجزئة الفحص الحالية إلى /var/log/psad/scan_hash.$$ حيث يمثل "$$" معرف العملية (pid) للبرنامج الخفي psad قيد التشغيل.
ملاحظة: نظرًا لأن psad يعتمد على iptables لإنشاء رسائل سجل مناسبة للحزم غير المصرح بها، فإن psad يكون جيدًا بقدر جودة قواعد التسجيل المضمنة في مجموعة قواعد iptables. وبالتالي إذا لم يتم تكوين جدار الحماية الخاص بك لتسجيل الحزم، فلن يكتشف psad فحص المنافذ أو أي شيء آخر. عادةً ما تكون أفضل طريقة لإعداد جدار الحماية هي بقواعد "إسقاط وتسجيل" افتراضية في نهاية مجموعة القواعد، وتضمين قواعد أعلى هذه القاعدة الأخيرة التي تسمح فقط بحركة المرور التي يجب السماح بها. عند التنفيذ، سيحاول البرنامج الخفي psad تحديد ما إذا كانت قاعدة الرفض الافتراضية هذه موجودة أم لا، وسيحذر المستخدم إذا لم تكن موجودة. راجع ملف FW_EXAMPLE_RULES للحصول على أمثلة لمجموعات قواعد جدار الحماية المتوافقة مع psad.
بالإضافة إلى ذلك، تم تضمين تغطية واسعة لـ psad في كتاب "Linux Firewalls: Attack Detection and Response" المنشور بواسطة No Starch Press، ويوجد برنامج نصي داعم في هذا الكتاب متوافق مع psad. يمكن العثور على هذا البرنامج النصي هنا:
اعتمادًا على توزيعة Linux، قد يكون psad متاحًا بالفعل في مستودع الحزم الافتراضي. على سبيل المثال، على أنظمة Debian أو Ubuntu، يتم التثبيت ببساطة عن طريق:
apt-get install psad
إذا لم يكن psad متاحًا في مستودع الحزم، فيمكن تثبيته باستخدام البرنامج النصي install.pl المضمن في مصادر psad. يتعامل البرنامج النصي install.pl أيضًا مع الترقيات إذا كان psad مثبتًا بالفعل. يتطلب psad عدة وحدات Perl قد تكون مثبتة أو لا تكون مثبتة على نظام Linux الخاص بك. يتم تضمين هذه الوحدات في دليل deps/ في مصادر psad، ويتم تثبيتها تلقائيًا بواسطة البرنامج النصي install.pl. قائمة الوحدات هي:
يتضمن psad أيضًا عميل whois كتبه Marco d'Itri (انظر دليل deps/whois). يقوم هذا العميل بعمل أفضل من غيره في جمع معلومات whois الصحيحة لعنوان IP معين.
الشرط الرئيسي لتكوين iptables ليكون متوافقًا مع psad هو ببساطة أن يقوم iptables بتسجيل الحزم. يتم تحقيق ذلك عادةً عن طريق إضافة قواعد إلى سلاسل INPUT و FORWARD مثل:
iptables -A INPUT -j LOG
iptables -A FORWARD -j LOG
يجب إضافة القواعد أعلاه في نهاية سلاسل INPUT و FORWARD بعد جميع قواعد ACCEPT لحركة المرور المشروعة وقبل قاعدة DROP المقابلة لحركة المرور التي لا يُسمح بها عبر السياسة. لاحظ أن سياسات iptables يمكن أن تكون معقدة للغاية مع قيود البروتوكول والشبكة والمنفذ والواجهة، وسلاسل محددة من قبل المستخدم، وقواعد تتبع الاتصال، وأكثر من ذلك بكثير. هناك العديد من البرامج مثل Shorewall و Firewall Builder، التي تبني سياسات iptables وتستفيد من قدرات التصفية والتسجيل المتقدمة التي يوفرها iptables. بشكل عام، السياسات التي تبنيها هذه البرامج متوافقة مع psad لأنها تضيف على وجه التحديد قواعد تطلب من iptables تسجيل الحزم التي ليست جزءًا من حركة المرور المشروعة. يمكن تكوين Psad لتحليل رسائل iptables التي تحتوي على بادئات سجل محددة فقط (والتي تتم إضافتها عبر الخيار --log-prefix)، لكن الإعداد الافتراضي هو أن يقوم psad بتحليل جميع رسائل سجل iptables بحثًا عن دليل على فحص المنافذ والتحقيقات لبرامج الأبواب الخلفية وحركة المرور المشبوهة الأخرى.
يعمل psad بشكل عام على أنظمة Linux، وهو متاح في مستودعات الحزم للعديد من توزيعات Linux الرئيسية. إذا كانت هناك أي مشكلات تشغيلية مع psad، فيرجى فتح مشكلة على github
يتم إصدار psad كبرنامج مفتوح المصدر بموجب شروط رخصة جنو العمومية العامة (GPL v2+). يمكن العثور على أحدث إصدار على https://github.com/mrash/psad/releases
يستخدم psad العديد من توقيعات TCP و UDP و ICMP المتوفرة في Snort (التي كتبها Marty Roesch، انظر http://www.snort.org). Snort هي علامة تجارية مسجلة لـ Sourcefire, Inc.
تتم إدارة جميع طلبات الميزات وإصلاحات الأخطاء من خلال تتبع مشكلات github. ومع ذلك، يمكنك مراسلتي عبر البريد الإلكتروني (michael.rash_AT_gmail.com)، أو التواصل معي عبر Twitter (@michaelrash).