كيفية إعداد فخ فخ على Ubuntu 22.04

اختار المؤلف صندوق التبرعات المفتوح والمجاني لتلقي تبرع كجزء من برنامج الكتابة من أجل التبرعات.

مقدمة

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

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

بعد الانتهاء من هذا البرنامج التعليمي، ستتمكن من الاتصال بخادمك على منفذ غير قياسي، بينما ستجد أي بوت يفحص خادمك أن وقته يضيع بالطرق على باب لن يتم فتحه أبدًا.

المتطلبات المسبقة

لإكمال هذا البرنامج التعليمي، ستحتاج إلى ما يلي:

الخطوة 1 – نقل SSH إلى منفذ غير قياسي

في هذه الخطوة، ستقوم بنقل SSH إلى منفذ غير قياسي من أجل تحرير منفذ لـ Endlessh. نظرًا لعدم توفر البوتنتات لموارد لا نهائية، فإنها عادة ما تفحص فقط منفذ SSH الافتراضي (22). من خلال نقل SSH إلى منفذ غير قياسي، يمكنك أسر البوت في فخ Endlessh.

للبدء، قم بعمل نسخة احتياطية من ملف تكوين SSH الخاص بك من الخادم باستخدام الأمر التالي:

  1. sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

يمكن استخدام هذا الملف لاستعادة الإعدادات الأصلية في حال لم يعمل شيء ما أو إذا قررت نقل SSH مرة أخرى إلى المنفذ الافتراضي.

افتح ملف تكوين SSH /etc/ssh/sshd_config باستخدام نانو أو محرر النص المفضل لديك:

  1. sudo nano /etc/ssh/sshd_config

ابحث عن السطر #Port 22. ألغِ التعليق عن هذا السطر عن طريق إزالة الرمز #، ثم قم بتغيير المنفذ إلى منفذ غير مستخدم على الخادم:

/etc/ssh/sshd_config
...
Port 2222
...

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

إذا كان الخادم الخاص بك يستخدم جدار ناري، مثل ufw، فستحتاج إلى السماح بحركة المرور إلى المنفذ الجديد:

  1. sudo ufw allow 2222/tcp

بعد ذلك، أعد تشغيل خدمة SSH:

  1. sudo systemctl restart sshd

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

  1. ssh sammy@your_server_ip -p 2222

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

  1. sudo cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config
  2. sudo systemctl restart sshd

إذا واجهت مشاكل أخرى، تحقق من نجاح إعادة تشغيل sshd وقم بمراجعة إعدادات جدار الحماية الخاص بك للتأكد من أن المنفذ 2222 يقبل حركة المرور عبر بروتوكول TCP.

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

  1. ssh sammy@your_server_ip -p 2222

الآن بعد نقل SSH بنجاح إلى منفذ غير قياسي، حان الوقت لإعداد Endlessh.

الخطوة ٢ – تثبيت Endlessh

Endlessh ليس لديه حزمة رسمية، لذا ستقوم بنسخ المستودع لبنائه يدويًا. ستستخدم Git لنسخ المستودع، وحزمة build-essential (لتجميع المشروع)، وحزمة libc6-dev.

قم بتثبيت الحزم المطلوبة باستخدام مدير الحزم apt:

  1. sudo apt install build-essential libc6-dev

قم بتأكيد التثبيت باستخدام y عندما يُطلب منك.

ثم انسخ مستودع Endlessh من GitHub إلى دليل منزلك:

  1. git clone https://github.com/do-community/endlessh

انتقل إلى دليل المشروع واستخدم أمر make لتجميع Endlessh:

  1. cd endlessh
  2. make

يمكنك الآن بدء تشغيل Endlessh باستخدام الأمر التالي:

  1. sudo ./endlessh -v -p 22

للاختبار ما إذا كان Endlessh يعمل، يمكنك محاولة إجراء اتصال SSH بالمنفذ 22 باستخدام العلامة التفصيلية -v، والتي ستعرض لافتة النهاية المرسلة. في نافذة الطرفية الجديدة، قم بإجراء اتصال SSH بالمنفذ 22 باستخدام أحد الأوامر التالية:

  1. ssh sammy@your_server_ip -v
  1. ssh sammy@your_server_ip -p 22 -v

عندما تحاول الجلسة الجديدة لاتصال SSH بالمنفذ 22، سترى سلسلة من الأحرف العشوائية تظهر في نافذة الاتصال كل ١٠ ثوانٍ حتى يتم إغلاق الجلسة، مثل الإخراج أدناه:

Output
debug1: kex_exchange_identification: banner line 0: NvnHF>]&W4p+tg*"+ debug1: kex_exchange_identification: banner line 1: n< debug1: kex_exchange_identification: banner line 2: @/O5c0/;>1b{qd(M,vK debug1: kex_exchange_identification: banner line 3: i+ OZ debug1: kex_exchange_identification: banner line 4: yn debug1: kex_exchange_identification: banner line 5: T[V\\[HUg

بمجرد تأكيد عمله عن طريق محاولة الاتصال بجلسة جديدة، يمكنك إغلاق النافذة الجديدة وإيقاف Endlessh باستخدام Ctrl+C في جلسة الطرفية الأصلية الخاصة بك.

في هذه الخطوة، قمت بتنزيل وبناء Endlessh من المصدر. في الخطوة التالية، ستقوم بتكوينه ونشره كخدمة لجعله مستمرًا عند تسجيل الخروج وإعادة تشغيل الخادم.

الخطوة 3 – تكوين Endlessh

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

انقل الملف التنفيذي المترجم إلى دليل /usr/local/bin:

  1. sudo mv ./endlessh /usr/local/bin/

أدخل كلمة المرور إذا طُلب منك.

انسخ ملف الخدمة من المشروع إلى دليل /etc/systemd/system:

  1. sudo cp util/endlessh.service /etc/systemd/system/

ستقوم بتعديل ملف الخدمة قليلاً لتشغيل Endlessh على منافذ تحت 1024. افتح ملف الخدمة في nano أو محرر النص المفضل لديك:

  1. sudo nano /etc/systemd/system/endlessh.service

ابحث عن القسم المتعلق بتشغيل Endlessh على منافذ تحت 1024.

قم بتحديث الملف عن طريق إزالة # من بداية السطر الذي يحتوي على AmbientCapabilities=CAP_NET_BIND_SERVICE وإضافة # إلى بداية السطر PrivateUsers=true، مثل هذا:

/etc/systemd/system/endlessh.service
...
## إذا كنت ترغب في أن يُرتبط Endlessh بمنافذ < 1024
## 1) قم بتشغيل: 
##     setcap 'cap_net_bind_service=+ep' /usr/local/bin/endlessh
## 2) قم بفك تعليق السطر التالي
AmbientCapabilities=CAP_NET_BIND_SERVICE
## 3) قم بتعليق السطر التالي
#PrivateUsers=true
...

احفظ وأغلق الملف.

بعد ذلك، ستسمح بتشغيل Endlessh على المنافذ الأقل من 1024، والمعروفة أيضًا باسم منافذ الامتياز لنطاق الإنترنت. قم بتعيين هذه القدرة لملف التنفيذ الثنائي لـ Endlessh باستخدام الأمر setcap:

  1. sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/endlessh

ستحتاج إلى تحديد ملف تكوين لـ Endlessh لإخباره بالمنفذ الذي يجب استخدامه. قم بإنشاء وفتح ملف تكوين بالاسم /etc/endlessh/config:

  1. sudo mkdir /etc/endlessh
  2. sudo nano /etc/endlessh/config

في ملف التكوين، قم بتعريف المنفذ الذي يجب استخدامه كـ 22:

/etc/endlessh/config
Port 22

احفظ وأغلق الملف.

الآن يمكنك بدء خدمة Endlessh بشكل دائم:

  1. sudo systemctl --now enable endlessh

بما في ذلك --now enable سيجعل الخدمة دائمة بعد إعادة تشغيل الخادم الخاص بك.

للتحقق من بدء تشغيل الخدمة بنجاح، يمكنك استخدام أمر systemctl status:

  1. sudo systemctl status endlessh

إذا بدأت الخدمة بنجاح، سترى ناتجًا مثل هذا:

Output
● endlessh.service - Endlessh SSH Tarpit Loaded: loaded (/etc/systemd/system/endlessh.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2022-04-22 11:20:39 UTC; 1 months 11 days ago Docs: man:endlessh(1) Main PID: 34007 (endlessh) Tasks: 1 (limit: 1081) Memory: 380.0K CGroup: /system.slice/endlessh.service └─34007 /usr/local/bin/endlessh

إذا كانت تعمل، يمكنك محاولة الاتصال على المنفذ 22 في جلسة طرفية جديدة:

  1. ssh sammy@your_server_ip

نظرًا لتشغيل فخ الانتظار الخاص بك، لن يكون بإمكان الجلسة الطرفية الجديدة الاتصال وستعمل بشكل دائم حتى يتم إيقافها يدويًا باستخدام Ctrl+C في الجلسة الطرفية المتصلة.

إذا كنت ترغب في إيقاف تشغيل الخدمة، يمكنك استخدام الأمر التالي:

  1. sudo systemctl --now disable endlessh

بعد إيقاف الخدمة، يمكنك استخدام تعليمات استعادة SSH في تحذير الخطوة 1 لاستعادة تكوين الخادم الأصلي الخاص بك. يمكنك إعادة تمكين الخدمة باستخدام sudo systemctl --now enable endlessh دون الحاجة للمرور من خلال عملية الإعداد مرة أخرى، ولكن تأكد من عدم تشغيل SSH على المنفذ 22 عند القيام بذلك.

الختام

لقد قمت بتثبيت وتكوين Endlessh بنجاح، وساعدت في تنظيف سجلات المصادقة الخاصة بك، واستعدت لإضاعة وقت الروبوتات العشوائية لبروتوكول SSH.

بعد إعداد شبكة Endlessh، قم بمراجعة التدابير الأمنية الموصى بها لحماية الخوادم الخاصة بك.

Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-an-endlessh-tarpit-on-ubuntu-22-04