أدوات وبرامجأمن وحماية السيرفراتمواضيع عامةمواضيع ومقالات

مقال : زيادة حماية الخوادم باستخدام Port Knocking

تم أرشفة هذا المحتوى


كيف تعمل هذة الحماية

في الحقيقة طريقة العمل جدا سهلة ورائعة وفعالة لحماية السيرفر الفكرة تتلخص في ان السيرفر على سبيل المثال يملك  بعض الخدمات مثل  ssh و ftp  ولكن لا نريد ان تبقى البورتات مفتوحة في السيرفر وقد تشكل خطر على السيرفر ويمكن فحص السيرفر ومعرفة البورتات ويتم مهاجمتها وقد تكون مصابة بثغره او يتم تنفيذ هجمات التخمين او هجمات الحرمان من الخدمة .. الخ

لزيادة الحماية على السيرفر نريد البورت 22 يبقى مغلق ولا يستطيع احد اكتشافة في عمليات الفحص وايضا لا يستطيع الاتصال به ، ولكن عندما يريد مدير السيرفر ان يتصل بـ ssh يمكن فتح البورت بشكل موقت لثوان معدودة والاتصال بالسيرفر عن طريقة اشارة بينة وبين السيرفر تم الاتفاق عليها و هي عبارة عن طرق بعض البورتات  على السيرفر بشكل متسلسل ومرتب وفي فترة زمنية قصيرة على سبيل المثال   ، اذا اردنا فتح البورت 22 بشكل سريع للاتصال به نقوم بطرق البورتات :  2111 و 2112 و 2113 بشكل متتالي وايضا في مدة لا تتجاوز 10 ثوان ليتم فتح البورت بشكل سريع والاتصال به ، وعند الانتهاء يمكن ايضا تنفيذ نفس الفكرة لغلق الاتصال ويصبح السيرفر في جميع اوقاتة لا يملك بورت 22 اساسا لفحصة او تنفيذ اي عمليات علية . Port Knocking نستيطع القول بانها احدى الطرق التي يمكن تعتيم واخفاء خدمات السيرفر وحمايتها من الهجوم ايضا نستطيع اعتبارها نوع من انواع المصادفة والتحقق من الهوية .

اعداد الحماية على الخادم :

سوف نقوم بتثبيت حزمة  knockd عن طريق الامر التالي :

sudo apt-get install knockd

بعد تنصيب الحزمة سوف نقوم بالدخول الى ملف اعدادات الحزمة عن طريق الامر التالي :

sudo nano /etc/knockd.conf

من المفترض ان تظهر لك خيارات الحزمة كالشكل التالي :

[options]
UseSyslog

[openSSH]
sequence    = 7000,8000,9000
seq_timeout = 5
command     = /sbin/iptables -A INPUT -s %IP% -p tcp –dport 22 -j ACCEPT
tcpflags    = syn

[closeSSH]
sequence    = 9000,8000,7000
seq_timeout = 5
command     = /sbin/iptables -D INPUT -s %IP% -p tcp –dport 22 -j ACCEPT
tcpflags    = syn

 

ظهرت لنا معلومات الملف الخاص باعدادات الاداة والخيارات سهلة جدا وتنقسم المعلومات السابقة او الخيارات السابقة الى قسمين ، واحد لفتح البورت والجزء الاخر لغلق البورت

الخيار sequence :

        sequence    = 7000,8000,9000

وهي البورتات التي سوف يتم الطرق عليها ليتم تنفيذ الامر :

        command     = /sbin/iptables -I INPUT -s %IP% -p tcp –dport 22 -j ACCEPT

وهذا الامر موجة الى جدار الحماية بفتح البورت 22 في فترة  زمنية مقدارها 5 ثواني ، اي انه يجب ان يكون الطرق على الثلاثة البورتات 7000,8000,9000 في خمس ثواني البورتات الموجودة مجرد مثال افتراضي من الاداة وتستطيع تغيير اي بورتات تريد . ولكن سوف نقوم بتعديل الامر السابق وتغيير A الى I  وكذلك command الى start_command اضافة كلمة start نقوم باضافتها في الامرين للفتح والاغلاق اما تغيير A الى I فقط في امر الفتح  ليصبح بالشكل التالي:

        start_command     = /sbin/iptables -I INPUT -s %IP% -p tcp –dport 22 -j ACCEPT

الامر السابق  يخبر الفايرول ان يسمح بالاتصال لصاحب %IP% الذي تمت بواسطته عملية الطرق للبورتات .

الخيار seq_timeout وهي الفترة الزمنية التي يجب طرق جميع البورتات فيها :

seq_timeout = 5

الخيار UseSyslog يخبرنا بان knockd تستخدم ملفات logs لمعرفة الطرقات على البورتات باستخدام Syslog واذا اردت اختيار ملف لوج مخصص او مسار مخصص استخدام الخيار التالي :

LogFile = /path/file1/mylog/knockd_log

تشغيل knockd :

بشكل افتراضي يجب تشغيل الحماية يدويا ولكن سوف نقوم بتعديل الملف التالي :

sudo nano /etc/default/knockd

ونبحث عن  START_KNOCKD  ونقوم بتغيير القيمة الى 1

START_KNOCKD=1

الان نقوم بحفظ الملف وتشغيل الخدمة من الامر التالي :

sudo service knockd start

 

تجربة Port Knocking

قبل البدء بتجربة العملية افتراضيا الفايروول يقوم بالسماح لكل الاتصالات ويجب علينا ان نقوم بحضرها لكي تكون الحالة الافتراضية لبورت 22 مغلق ويتم السماح فقط للطارق, نقوم بتنفيذ الامر التالي:

iptables -A INPUT -p tcp –dport 22 -j REJECT

الان نقوم بتجربة الاتصال بـ ssh سوف تكون الاجابة بالرفض :

root@lenevo-ubuntu:~# ssh 192.168.1.102
ssh: connect to host 192.168.1.102 port 22: Connection refused

ولكن عندما نقوم بعملية الطرق باستخدام الاوامر التالية بشكل سريع ومتتابع :

telnet 192.168.1.102 7000

telnet 192.168.1.102 8000

telnet 192.168.1.102 9000

نقوم الان بتجربة الاتصال وسوف تنجح ان شاء الله

اغلاق البورت :

عملية اغلاق البورت نفس فكرة عملية الفتح ولكن باختلاف الطرق على الترتيب العكسي للبورتات كالتالي :

telnet 192.168.1.102 9000

telnet 192.168.1.102 8000

telnet 192.168.1.102 7000

, كان هذا المثال فقط لبورت 22 ويمكن استخدام الفكرة على اي خدمة لديك في السيرفر , شكرا لكم .

علي الوشلي

علي الوشلي من اليمن, مدير مجتمع iSecur1ty , مهتم بأمن المعلومات واختبار الاختراق . حسابي على تويتر : ali_alwashali@

مقالات ذات صلة

‫10 تعليقات

  1. شكرا علي طرح الموضوع بهاذا البساطة
    لكن يبقي عندي سؤال:
    هل يمكن الطرق باستخدام اسالين اخري غير telnet
    وشكرااا

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

      شكرا لمرورك

  2. الفكرة حلوة بس كيف ممكن تتنفذ بطريقة أوتوماتيكية …. لأنو مو معقول يفتح الادمن كل هي البورتات يدويا ليتمكن من اتصال ssh … و يرجع يسكرها بنفس الترتيب

    1. لم افهم بقصدك اوتوماتيكيا

      والبورتات هذه ليست بورتات حقيقه وانما هي اشاره بينك وبين السيرفر اذا تم الطرق على هذه البورتات وبالترتيب الفلاني افتح البورت

      لا اريد ان يكون البورت مفتوح ليعبث به اي شخص او يهاجمة او يكون عرض لاي خطر
      عندما اريد استخدامه سوف اقوم بفتحه في اقل من ثانية

      كذلك الامر ليس متعب قم بالطرق باي طريقة تحب ويمكن دمج الاوامر في امر واحد او استخدم حزمه knockd نفسها للطرق

  3. المقال رائع شكرا لك لاكن لو فعلا توجد كل هاذه الحمايات في السيرفر لماذا نسمع عن اختراق سيرفرات بنوك وسيرفرات حساسة مع انها ذو مستى امن عالي جدا

    1. ربما اغلب المواقع الكبيرة المتميزة بحماية قوية تخترق عبر DNS hijacking

      لكن عندي سؤال 🙂

      لو انا طرقت على جميع البورتات من 1 الى 65535 وفنفس الوقت فحصت بـ اداة فحص البورتات هل يمكن اكتشافة ؟

      ولو على سبيل المثال برمجت اداة تطرق بشكل متتالي يعني تطرق من 1 الى 65535 وبعد ماتخلص تطرق وتطرق …..

      هل باستطاعتي اخمن على البورت؟

      ام الاداة لايمكن اكتشافها الا من قٍبل الايبي المدخل في knockd.conf ؟؟

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى