Letmein عبارة عن مطرقة منفذ بسيطة مع آلية مصادقة بسيطة وآمنة. ويمكن استخدامه للحماية من هجمات المصادقة المسبقة على خدمات مثل SSH وVPN وIMAP وغيرها الكثير.
يقوم Letmein بإخفاء الخدمات على الخادم خلف حاجز المصادقة المزعج لتقليل سطح الهجوم الخاص بالخدمة. لن يمكن الوصول إلى الخدمة ما لم تنجح عملية المصادقة بالطرق. في حالة حدوث طرق ناجح، سيفتح خادم Letmeind فقط منفذ الطرق لعنوان IP الخاص بالعميل الذي أجرى الطرق. لا تزال الأجهزة ذات عناوين IP المختلفة غير قادرة على الوصول إلى الخدمة المحمية.
لن تتمكن الأجهزة التي لا يمكنها مصادقة تسلسل الضربة بنجاح من الوصول إلى الخدمة المحمية. سوف يتلقون reject
ICMP على منفذ الخدمة المحمي مع المثال المقدم nftables.conf
. (يمكنك أيضًا أن تقرر drop
الحزم في ملف nftables.conf
بدلاً من ذلك).
يتطلب Letmein جدار حماية يستند إلى nftables
. لن يعمل مع iptables
. إذا كنت تستخدم جدار حماية يستند إلى iptables
، فيرجى التحويل إلى nftables
قبل تثبيت Letmein. هناك أوصاف حول كيفية القيام بذلك على الإنترنت. إنه ليس بالأمر الصعب وبقدر ما يبدو من العمل. :)
يكون اتصال التحكم الخاص بـ Letmein نفسه افتراضيًا على منفذ TCP 5800، ولكن يمكن تهيئته لأي منفذ TCP أو UDP. إذا اخترت منفذ UDP كمنفذ تحكم وقمت بتكوين control-error-policy=basic-auth، فإن خدمة Letmein نفسها تعمل في وضع التخفي ولا تستجيب للرسائل الواردة التي لم تتم مصادقتها.
الصفحة الرئيسية
مستودع جيت
مستودع جيثب
قم بتثبيت برنامج خادم Letmein على الخادم (انظر الأقسام أدناه).
قم بتثبيت برنامج عميل Letmein على العميل (انظر الأقسام أدناه).
يرجى قراءة ملف التكوين النموذجي nftables.conf المقدم مع هذا المشروع. يلزم إضافة سلسلة إدخال خاصة بـ Letmein إلى تكوين nftables
الموجود لديك. قم بتعديل nftables.conf
الخاص بك وفقًا لذلك.
قم بإنشاء مفتاح سري مشترك ومعرف مستخدم ليتم تثبيتهما على الخادم والعميل باستخدام أمر العميل التالي:
letmein gen-key -u 00000000
سيقوم أمر gen-key بطباعة سلسلة المفاتيح التي تم إنشاؤها إلى وحدة التحكم. افتراضيًا، سيؤدي هذا إلى إنشاء مفتاح عشوائي آمن لمعرف المستخدم 00000000
. يمكنك تحرير معرف المستخدم يدويًا، إذا كنت تريد ذلك، أو يمكنك فقط تركه كما هو.
أضف السلسلة التي تم إنشاؤها (معرف المستخدم والسر المشترك) إلى تكوين الخادم في /opt/letmein/etc/letmeind.conf
. ضع سلسلة المفاتيح التي تم إنشاؤها مع معرف المستخدم في قسم [KEYS]
بملف التكوين.
أضف نفس السلسلة التي تم إنشاؤها (معرف المستخدم والسر المشترك) إلى تكوين العميل في /opt/letmein/etc/letmein.conf
. ضع سلسلة المفاتيح التي تم إنشاؤها مع معرف المستخدم في قسم [KEYS]
بملف التكوين.
قم بإنشاء resource
في الخادم يصف منفذ sshd
الذي يمكن فتحه. في قسم [RESOURCES]
من ملف تكوين الخادم /opt/letmein/etc/letmeind.conf
يجب تحديد جميع المنافذ التي يمكن فتحها. يتكون المورد من معرف المورد متبوعًا بمعرف المنفذ كما يلي:
[RESOURCES]
00000022 = port: 22
معرف المورد هو رقم سداسي عشري مكون من 8 أرقام. في هذا المثال هو 22 (ست عشري)، ولكن يمكن أن يكون أي رقم. يجب أن يكون نفس الرقم على الخادم والعميل. بعد port:
يتم تحديد رقم المنفذ (بالنظام العشري) الذي يمكن فتحه.
أضف نفس المورد بنفس معرف المورد ونفس رقم المنفذ إلى تكوين العميل في /opt/letmein/etc/letmein.conf
.
أعد تشغيل خادم Letmein:
systemctl restart letmeind.service
الآن قم بإزالة accept
منفذ sshd
الثابت (22) من تكوين جدار الحماية nftables.conf
. سيقوم Letmein بتثبيت مثل هذه القاعدة ديناميكيًا في سلسلة إدخال Letmein بعد مصادقة الضربة الناجحة. ثم أعد تشغيل nftables:
systemctl restart nftables.service
منتهي! يجب أن تكون الآن قادرًا على فتح منفذ sshd
على خادمك:
# This must fail! No successful knock authentication, yet.
# If this does not fail, check if you have removed the sshd accept rule from nftables.conf.
ssh your-server.com
# Knock-open port 22 (sshd) on the server using user-id/key 00000000:
# (You do not have to specify -u 00000000 if that is your default user (see config).)
letmein knock -u 00000000 your-server.com 22
# Now you should be able to ssh into your server successfully:
ssh your-server.com
لإغلاق المنفذ تلقائيًا قبل الاتصال بـ ssh، يمكنك إضافة قاعدة Match exec
إلى ملف ~/.ssh/config
الخاص بك:
Match host your-server.com exec "letmein knock -u 00000000 your-server.com 22"
راجع تعليمات التثبيت لمزيد من المعلومات حول كيفية إنشاء Letmein وتثبيته.
إذا كنت تريد إزالة Letmein بالكامل من نظامك، فراجع تعليمات إزالة التثبيت.
تطبيق العميل letmein
محمول ويجب تشغيله على جميع الأنظمة الأساسية الرئيسية. المنصات التي تم اختبارها هي:
تطبيق الخادم letmeind
هو Linux فقط، لأنه يدعم فقط nftables
كواجهة خلفية لجدار الحماية.
راجع وثائق التكوين للحصول على معلومات تفصيلية حول كيفية تكوين خادم Letmein والعميل.
يرجى العلم بأن معرفات المستخدم ومعرفات الموارد من ملفات التكوين يتم نقلها عبر الشبكة بدون تشفير بنص واضح.
تأكد من أن معرفات المستخدم ومعرفات الموارد لا تتضمن أي معلومات خاصة.
تهدف هذه المعرفات فقط إلى أن تكون تعريفًا مجردًا لإدارة مفاتيح letmein
المختلفة وعمليات التثبيت والإعدادات.
أهداف التصميم الرئيسية لـ Letmein هي:
-4
و -6
.لمزيد من المعلومات حول الأمان والإبلاغ عن الثغرات الأمنية، يرجى الاطلاع على الوثائق الأمنية الخاصة بـ Letmein.
حقوق الطبع والنشر (ج) 2024 لمايكل بوش [email protected]
مرخص بموجب ترخيص Apache الإصدار 2.0 أو ترخيص MIT، حسب اختيارك.