إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

سلسلة مراقبة الأنظمة: مراقبة الشبكة Monitoring The Network

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • سلسلة مراقبة الأنظمة: مراقبة الشبكة Monitoring The Network

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

    الموضوع الثالث: مراقبة الشبكة Monitoring The Network

    المنافذ المفتوحة هي ابواب مفتوحة! Open ports is an open doors!! هذه العبارة تعبر عن أهمية مراقبة المنافذ والخدمات التي تعمل على خادمك لتتأكد من توفر ما نريده منها واغلاق ما لا نريده. كما هو معروف للجميع فإن ال TCP/IP يقوم بتخصيص رقم منفذport للعمليات التي تطلب اتصال او داتا معينة. كل منفذ مفتوح على الخادم يمكن اعتباره كأحد المداخل التي ممكن ان تتعرض في أي وقت الى هجوم. في هذا الدرس سنتعرف على بعض الطرق المفيدة لكي تعرف ما هي المنافذ المفتوحة على خادمك سواء من خلال فحصك له من الداخل ( اي في حالة تسجيل الدخول الى خادمك والقيام بالفحص)باستخدام اداة مثل netstat ، او من الخارج ( اي ان تقوم بفحص المنافذ دون ان تسجل الدخول على خادمك كما هي الحالة التي يقوم بها المهاجم ) من خلال اداة مثل namp .

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

    1- ما هي الخدمات التي أحتاجها؟؟ اي انك تقوم بفحص الخدمات services التي تعمل على جهازك وتعطيل التي لا تحتاجها.

    2- ما هو كرت الشبكة الذي يحتاج للتدقيق؟ المقصود بهذه العملية ان بعض الخوادم يكون عليها أكثر من كرت شبكة مخصص لأكثر من شبكة (خارجية وداخليه مثلا) لذلك فعلى مدير النظام ان يعرف اي الخدمات التي تحتاج لكي تعمل على كرت شبكة معين دون الآخر، ويقوم بربط الخدمة لكي تعمل على هذا الكرت فقط.

    3- من هو العميل client أو مجال الشبكة host الذي يحتاج لهذه الخدمة؟ يقوم مدير النظام بهذه الحالة بتوفير خدمة معينة لعناوين ip محددة فقط، او لمجال شبكة معين. مثلا يقوم مزودي خدمة الانترنت بتوفير خدمة الSMTP البريد الآلي فقط لعملائهم الذين يستخدمون عناوين ip تابعة لهم فقط.

    4- من هم المستخدمين الذين يحتاجون الى هذه الخدمة؟ أخيرا هناك عدة اساليب لتحديد من هم المستخدمين الذين سنقوم بتوفير الخدمة لهم دون غيرهم من المستخدمين. طبعا بعض الخدمات التي لا تستخدم التوثيق authentication مثل DNS لا يمكن تطبيق هذا الشيء عليها.

    طبعا في درسنا هذا سنتحدث عن الخدمات التي تعمل على الخادم و على اي منفذ فقط، طبعا باقي الاسئلة التي قمنا بطرحها يمكن استخدام عدة اساليب للتعامل معها مثل الiptables و tcp wrappers لتحديد الحماية على مستوى العميل و الشبكة client / host -level security ، وهناك الPAM لتحديد الحماية على مستوى المستخدم user-level security وهي متوفرة في عدة دروس في منتدانا وفي أماكن أخرى كثيرة.


    -معرفة المنافذ المفتوحة باجراء فحص من الداخل الى الخارج ( netstat )

    سنتعرف على أداة مهمة لأي مدير نظام لأنها تستخدم لمعرفة المنافذ المفتوحة على خادمك باجراء الفحص scan وانت مسجل دخول على خادمك. وايضا تقوم هذه الاداة بعرض جميع الاتصالات connections الجارية حاليا على جهازك active connections .

    يمكنك تحديد الاداة بعرض البيانات المتعلقة بالTCP أو الUDP باستخدام الخيار -t أو -u على التوالي... كما يفضل اضافة الخيارين p و n لعرض مزيد من البيانات حول رقم العملية PID التي تستخدم واسم البرنامج ايضا. لنتعرف سويا الى المثال التالي:

    لنفترض اننا نستخدم خادم عنوانه 192.168.0.102 ، انظر لناتج الأمر التالي:

    كود:
    [[email protected] ~]# netstat -tupn
    Active Internet connections (w/o servers)
    Proto   Recv-Q   Send-Q   Local Address              Foreign Address        State                 PID/Program name
    tcp         0               0            192.168.0.102:36049   192.168.0.100:21     ESTABLISHED 26910/lftp 
    tcp         0               0            192.168.0.102:22         192.168.0.150:2493 TIME_WAIT      26910/ssh

    السطر الأول يشير الى ان هناك تطبيق ftp يستخدم المنفذ العشوائي 36049 من على جهازك ويقوم بالاتصال بسيرفر ftp على عنوان 192.168.0.100 ومنفذ 21 المخصص لخدمة الftp كما نعلم. طبعا لاحظ الحالةstate هي ESTABLISHED وهذا يدل ان الاتصال لا زال مفعلا لحظة تنفيذ الأمر netstat .

    السطر الثاني يشير الى ان هناك اي بي خارجي Foreign Address هو 192.168.0.150 قد قام بالاتصال قبل قليل بالخادم الخاص بي عن طريق SSH ومستخدما المنفذ 22 الخاص بالssh كما نعلم. طبعا الحالة TIME_WAIT تدل على ان الاتصال انتهى وان الconnection تنتظر الtime out من الجهة الأخرى للاتصال لانهاء الاتصال بشكل كامل ( راجع آلية عمل بروتوكول TCP/IP للمزيد )

    يمكنك معرفة اذا كان الاتصال قد تم من الداخل الى الخارج او من الخارج الى الداخل عن طريق ارقام المنافذ، ففي مثالنا السابق مثلا وجدنا المنفذ 22 على جهازنا المحلي، وهذا يعني ان ال ssh service مفعلة على خادمنا وقام تطبيق بالاتصال علينا من العنوان الآخر مستخدما منفذ عشوائي (عادة يخصصه الكيرنل بشكل عشوائي للتطبيقات) رقمه 26910 .
    رغم ان المثال السابق قد اعطى لمحة سريعة عن بعض الاتصالات الجارية حاليا على خادمنا إلا انه يهمنا ايضا معرفة الخدمات التي تقوم بانتظار طلبات الاتصال من الخارج ومنافذها مفتوحة، وهي تكون بالحالة Listen . لننظر للمثال التالي:

    باضافة الخيار l يمكننا معرفة المنافذ المفتوحة على خادمنا وما هي العناوين التي يسمح لها الاتصال على هذه المنافذ ايضا:

    كود:
    [[email protected] ~]# netstat -tupnl
    Active Internet connections (only servers)
    Proto    Recv-Q    Send-Q     Local Address      Foreign Address     State     PID/Program name
    tcp        0              0                 0.0.0.0:80              0.0.0.0:*                LISTEN  10867/httpd 
    tcp        0              0                127.0.0.1:631         0.0.0.0:*                LISTEN  16738/cupsd 
    tcp        0              0                0.0.0.0:3306           0.0.0.0:*                LISTEN  2381/mysqld 
    tcp        0              0                0.0.0.0:443             0.0.0.0:*                LISTEN  10867/httpd
    tcp        0              0                 :::22                        :::*                        LISTEN  15074/sshd 
    udp       0              0                0.0.0.0:631             0.0.0.0:*                               16738/cupsd
    في السطر الأول لاحظنا خدمة الhttpd التي تستخدم عادة البورت او المنفذ رقم 80 ، وبالنسبة للعنوان 0.0.0.0:80 في حقل العنوان المحلي Local Address فهو يعني ان هذه الخدمة مفعلة على جميع كروت الشبكة او العناوين المخصصة للخادم، فمثلا اذا كان لدي كرتي شبكة eth0 و eth1 فإن خدمة الhttpd مفعلة على كليهما وليست محددة بآي بي معين. ويمكنهما استقبال طلبات الاتصال لهذه الخدمة من اي عنوان خارجي ومن اي منفذ خارجي (لاحظ السطر 0.0.0.0:* في حقل العنوان الخارجي Foreign Address ). وطبعا الحالة كما نرى هي LISTEN اي ان المنفذ جاهز ومفتوح لتلقي الطلبات.

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

    في السطر الثالث خدمة mysqld تستمع لجميع الطلبات القادمة من كل المنافذ الخارجية ولأي كرت شبكة او اي بي محلي. طبعا هذا قد يشكل خطرا اذا كانت قاعدة البينات خاصة بالشبكة الداخلية فقط فلا يجوز ان تكون متوفرة على كرت الشبكة المتصل مع العالم الخارجي. لاحظ انها تعمل على 0.0.0.0:3306 .

    السطر الرابع لا حاجة لشرحه لأنه يستخدم الhttp مع ssl على منفذ 443 الخاص ب https كما نعلم.

    السطر الخامس خدمة sshd تستقبل طلبات الاتصال من اي عنوان ip خارجي على المنفذ المحلي رقم 22 الخاص بها.

    السطر السادس خدمة الطباعة cupsd ولكنها تستقبل طلبات الاتصال ايضا على udp وليس tcp فحسب .

    كما نرى من المثال السابق يمكننا معرفة ان النظام تعمل عليه خدمات sshd و mysqld وhttpd وcupsd ... الآن نأتي للسؤال الأهم في موضوعنا:

    س. ماذا يحصل اذا قمنا بتحديد بعض القواعد باستخدام فايروول مثل iptables لمنع او السماح لبعض الخدمات؟
    الجواب: لن يتغير ناتج الأمر netstat!!! سأقوم بتوضيح السبب:
    اعداد نظام جدار ناري مثل الiptables هو بمثابة تحديد قواعد على مستوى الكيرنل لرفض او للسماح ببعض الباكيتات للدخول او الخروج من النظام، فمثلا لو قمت باعداد الفايروول لرفض جميع الباكيتات القادمة للمنفذ 80 من اي كرت شبكة ما عدا الدوران او اللوب باك (اي ان الخدمة متوفرة من والى جاهزك فقط) فالجدار الناري سيقوم بمنعها من الوصول فعلا ، ولكن الأمر netstat سيستمر في عرض الخدمة وكأنها تعمل على كل كروت الشبكة رغم انك حددتها بالجدار الناري لتعمل فقط على الدوران الداخلي او اللوب باك. وستظهر وكأنها تستمع الى جميع طلبات الاتصال على كل الكروت.

    ولكنك لو قمت بتعديل اعدادات الhttpd نفسها لكي تعمل فقط على الدوران المحلي او اللوب باك باستخدام ملف الاعدادات الخاص بالخدمة نفسها فهنا سيعطيك الأمر netstat الناتج الجديد.


    - -معرفة المنافذ المفتوحة باجراء فحص من الخارج الى الداخل ( nmap)

    تعرفنا منذ قليل على اداة netstat التي تعطي لمحة لمدير النظام عن الخدمات التي تعمل على نظامنا وقد تعطي فكرة ان الخدمة معرضة ومفتوحة أكثر مما ينبغي لكنها في الواقع قد تكون محمية باعدادات جدار ناري كما سبق و أشرنا. لذلك قد يستوجب من مدير النظام فحص نظامه من الخارج لكي يتأكد من الخدمات و الaccess controlالحقيقي لهذه الخدمات باستخدام ما يعرف بأدوات مسح المنافذ port scanners .

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

    طريقة استخدام اداة nmap سهلة نوعا ما ، مثلا اذا اردنا فحص خادمنا والذي عنوانه192.168.0,102 من جهاز آخر يمكننا عمل التالي:

    كود:
    [[email protected] ]# nmap 192.168.0.102
    Interesting ports on 192.168.0.102:
    (The 1655 ports scanned but not shown below are in state: closed)
    PORT STATE SERVICE
    22/tcp open ssh
    80/tcp open http
    443/tcp open https
    3306/tcp open mysql

    لعلك لاحظت عزيزي القارئ بأن خدمة cupsd لم تظهر لنا أثناء عملية المسح، وذلك لأنها لا تقبل طلبات الاتصال من الخارج كما سبق و أشرنا.

    طبعا هذه الطريقة تقوم بفحص باستخدام tcp فقط وسنتعرف الى كيفية تضمين مسح لمنافذ udp ايضا. كما يمكننا استخدام الأداة nmap لفحص مجال شبكة كاملة باستخدام أمر مثل:
    كود:
    nmap 192.168.0.0/24
    وسيقوم باعطائنا نتائج لكل عنوان اي بي على هذه الشبكة في حالة كان يقبل عمليات الping اي ان الجهاز يعمل ومربوط على الشبكة.

    الاداة nmap لديها العديد من الخيارات المتنوعة التي يمكن استخدامها لتخصيص عملية المسح، سنذكر اهم هذه الخيارات:

    كود:
    -P0
    يستخدم هذا الخيار في حالة عدم الرغبة في ان تقوم الاداة nmap بارسال ping للتأكد من أن الجهاز يعمل أم لا، وذلك لأن طبيعة عمل الاداة nmap انها تقوم بارسال ping packet للتأكد من ان الجهاز يعمل حاليا، هذا الخيار يستخدم في حالة انك تريد مسح الاف المنافذ على عدة عناوين ولا تريد انتظار ناتج الping حيث اذا كان الجهاز لا يعمل فستتأخر عملية الرد على الping مما يطيل الفترة الزمنية لعملية المسح.

    كود:
    -A
    يستخدم هذا الخيار لعمل مسح عدواني Aggressive scan اي انه يقوم ليس فقط بعملية مسح للمنافذ فحسب، بل يقوم باعطاء تقرير عن نوع نظام التشغيل المستخدم واسم واصدار الخدمة المستخدمة على هذا المنفذ !! حيث يقوم بمقارنة رسالة الترحيب التي تأتي مع اغلب الخدمات او ما تسمى البانرز banners بالملف الذي يحوي هذه الرسائل وهو
    كود:
    /usr/share/nmap/nmap-service-probes
    ملاحظة: ماذا يحصل اذا قمت بتغيير الرسالة الاصلية التي تأتي مع الخدمات لكي تعرض اصدارا مغلوطا ؟؟ بالتأكيد ستزيد من صعوبة عملية الهجوم عليك لأن المهاجم سيستخدم ادوات وثغرات لاصدار آخر غير متوافق مع الاصدار الذي لديك.

    كود:
    -sU
    يقوم بفحص منافذ الudp فقط

    كود:
    -sS
    يقوم بفحص منافذ الtcp فقط . (الافتراضي)

    كود:
    -p port1,port2,...
    يقوم بتحديد ارقام المنافذ التي تريد فحصها . مثال:
    كود:
    nmap -p 25,80,900-1000 localhost
    يقوم بفحص المنافذ 25 و 80 و من 900 الى 1000 على جهازك المحلي.

    كود:
    -F
    يقوم بعمل مسح سريع للمنافذ المعروفة والتي تجدها في الملف /etc/services فقط وليس كل ال65535 منفذ للTCP/IP .

    للتعرف على باقي الخيارات يمكن الاطلاع على المواقع التالية:
    كود:
    http://linux.die.net/man/1/nmap
    http://www.linuxfocus.org/English/July2001/article170.shtml

    هام : - فحص المنافذ المفتوحة و محاولة فتح النافذة!

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


    - تعطيل الخدمات غير الضرورية

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

    كود:
    service httpd stop
    قمنا بايقاف خدمة الhttpd و:
    كود:
    chkconfig httpd off
    يقوم بتعطيل الخدمة من العمل بعد اعادة تشغيل النظام. يمكنك التحقق من ان الخدمة معطلة عن جميع مستويات العمل باستخدام:
    كود:
    chkconfig --list httpd
    httpd            0:off   1:off   2:off   3:off   4:off   5:off   6:off

    - الخدمات المفعلة افتراضيا في نظام ريدهات انتربرايز لينكس

    هناك بعض الخدمات تاتي مفعلة مع أنظمة ريدهات انتربرايز لينكس ، ولكنها تكون في أعلى مستوى من الحماية لها وهي:
    *SSH : الsshd تأتي مفعلة تلقائيا بعد تنصيب نظام جديد من ريدهات انتبرايز لينكس وذلك لأهمية هذه الخدمة ولكون تطبيقات OpenSSH من التطبيقات الأمنة نسبيا .

    *CUPS : خدمة الcups تستخدم لاستقبال طلبات الطباعة على بروتوكول ipp الذي يعتبر HTTP post and get على منفذ 631 . لكي تقوم الخدمة باستقبال طلبات الطباعة للطابعات الموصولة بالنظام فهي تعمل افتراضيا لكنها مربوطة فقط على العنوان 127.0.0.1 الخاص باللوب باك او الجهاز المحلي فقط. ولذلك هي لا تستقبل اي طلبات من الخارج.

    *sendmail : لكي يتمكن النظام من ارسال الرسائل لعناوين أخرى (لا يستقبل اي رسائل من الخارج) او تراسل داخلي بين المستخدمين على نفس النظام.

    *NFS Locking : تفعل خدمات مثل rpc.statd و portmap لكي يتمكن النظام من عمل mount للNFS share . كثير من مدراء الانظمة يقومون بتعطيل الnfs والportmap كونها غير آمنة عند استخدامها على الانترنت.


    انتهينا من موضوعنا هذا ونلقاكم بالدرس الأخير من هذه السلسلة... وارجو ان لا تنسونا من الدعاء

    وكما سبق و ذكرنا ...يخضع الموضوع للرخصة السفاحية التي تقضي بنقله و تعديله و حذفه لكن بذكر مصدر الموضوع على الأقل
    V.I.P

    (وَاصْبِرْ فَإِنَّ اللَّهَ لَا يُضِيعُ أَجْرَ الْمُحْسِنِينَ)
    هود 115

    Linux is user-friendly, but it happens to be selective about its friends

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


    مجتمع لينوكس العربي: وقف لله تعالى وصدقة جارية، فلا بارك الله في كل من يحاول الإساءة إليه في الظاهر أو في الخفاء...



  • #2
    يشرفنى ان اكون اول من شاركت فى هذا الموضوع اخى سامر
    الصراحه انا اكتمل قراه المقاله كلها سوف اعود ايها اول ما اتفرغ
    الله يجزيك كل خير دنيا وآخره
    http://img197.imageshack.us/img197/9...66319499rr.gif

    lion_heart_300 previously

    تعليق


    • #3
      السلام عليكم
      ما شاء الله اخوي سامر .. مرجع قوي و مفيد جدا.
      الف شكر ^_^

      تعليق


      • #4
        موضوع جامد ليه مش Sticky ?

        فعلا مرجع رائع لمراقبة الشبكة مفتكرش في حاجة ممكن تتقال أكتر من كدا.

        Nice work samer
        My-LiFe My Blog
        أنتظروا ثلاثة مفاجئات قريباً..
        I'm GONE !...WITHOUT h3h3!

        تعليق


        • #5
          يعطيك العافيه اخوي سامر

          موضوع جدااا رائع

          تعليق


          • #6
            شاكر لمروركم عمرو و عبدالكريم وسفاح وsilent touch ... باقي درس وننهي السلسة وندخل بسلسلة جديدة من المواضيع...
            V.I.P

            (وَاصْبِرْ فَإِنَّ اللَّهَ لَا يُضِيعُ أَجْرَ الْمُحْسِنِينَ)
            هود 115

            Linux is user-friendly, but it happens to be selective about its friends

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


            مجتمع لينوكس العربي: وقف لله تعالى وصدقة جارية، فلا بارك الله في كل من يحاول الإساءة إليه في الظاهر أو في الخفاء...


            تعليق


            • #7
              الله يعطيك العافية حبيبي سامر

              موضوع رائع من إنسان أروع

              La vie est complexe car nous avons tous une partie réelle et une partie imaginaire....

              تعليق


              • #8
                سلسـله جميلـه حبيبي سامـر وان شاء الله تنتهي منهـا علي خير باذن الله

                تعليق


                • #9
                  GreyHunter واصل جهودك
                  ولا تحرمنا من مواضيعك الحلوة
                  My sickness is called frozen mind
                  and hopefully I'll find the cure for it

                  تعليق


                  • #10
                    جزاك الله خيرا أخى
                    موضوع رائع جدا جدا
                    و الله لا يحرمنا منك

                    تعليق


                    • #11
                      والله درس رائع جداااا
                      الله يكرمك يا اخى

                      تعليق


                      • #12
                        الله ينور لك البصرة ويزدك من علمه ...موفق

                        تعليق


                        • #13
                          ماشاء الله متخصص اخي سامر في مجالك
                          شكرا لك ولي عودة بعد قرأة الموضوع بالتفصيل
                          تحياتي
                          http://www.no4denmark.com/ar/images/...sool-allah.gif
                          ((لا يومن احدكم حتى اكون احب اليه من والده وولده والناس اجمعين))......اعادوا نشر الصور فاعدنا اكل الزبدة والجبنة...

                          تعليق


                          • #14
                            تسلم ايدك اخى الكريم و لكن لى طلب هلى تو جد Package لمراقبة الشبكة graphic
                            من لم يمت بالسيف مات بغيرة تعددت الاسباب و الموت واحد
                            من أبواب الخير
                            http://www.egyptianfoodbank.com/
                            http://www.sahmalnour.org/

                            تعليق


                            • #15
                              مشكور وبارك الله فيك

                              تعليق

                              يعمل...
                              X