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

في الحقيقة طريقة العمل جدا سهلة ورائعة وفعالة لحماية السيرفر الفكرة تتلخص في ان السيرفر على سبيل المثال يملك  بعض الخدمات مثل  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 ويمكن استخدام الفكرة على اي خدمة لديك في السيرفر , شكرا لكم .