
تفويض الحزمة الواحدة > طرق المنافذ
يطبق fwknop مخطط تفويض يُعرف باسم تفويض الحزمة الواحدة (SPA) لإخفاء الخدمات بشكل قوي. يتطلب SPA حزمة واحدة فقط تكون مشفرة وغير قابلة لإعادة التشغيل وموثقة عبر HMAC من أجل التواصل مع الوصول المطلوب إلى خدمة مخفية خلف جدار ناري في وضع تصفية رفض افتراضي. التطبيق الرئيسي لـ SPA هو استخدام جدار ناري لإسقاط جميع محاولات الاتصال بخدمات مثل SSH لجعل استغلال الثغرات (سواء 0-day أو الكود غير المحدث) أكثر صعوبة. نظرًا لعدم وجود منافذ مفتوحة، فإن أي خدمة يتم إخفاؤها بواسطة SPA لا يمكن مسحها ضوئيًا باستخدام Nmap بشكل طبيعي. يدعم مشروع fwknop أربعة جدران نارية مختلفة: iptables و firewalld و PF و ipfw عبر Linux و OpenBSD و FreeBSD و Mac OS X. يوجد أيضًا دعم للبرامج النصية المخصصة بحيث يمكن جعل fwknop يدعم بنى تحتية أخرى مثل ipset أو nftables.
SPA هو في الأساس الجيل التالي من طرق طرق الباب (Port Knocking - PK)، ولكنه يحل العديد من القيود التي يظهرها PK مع الاحتفاظ بفوائده الأساسية. تشمل قيود PK صعوبة عامة في الحماية من هجمات إعادة التشغيل، وعادةً لا يمكن دعم الشفرات غير المتماثلة ومخططات HMAC بشكل موثوق، ومن السهل جدًا شن هجوم حجب الخدمة (DoS) ضد خادم PK فقط عن طريق تزييف حزمة إضافية في تسلسل PK أثناء عبورها للشبكة (مما يقنع خادم PK بأن العميل لا يعرف التسلسل الصحيح). يتم حل كل هذه العيوب بواسطة SPA. في نفس الوقت، يخفي SPA الخدمات خلف سياسة جدار ناري افتراضية للإسقاط، ويحصل على بيانات SPA بشكل سلبي (عادةً عبر libpcap أو وسائل أخرى)، وينفذ عمليات تشفير قياسية لمصادقة حزم SPA وتشفيرها/فك تشفيرها.
تستخدم حزم SPA التي يولدها fwknop HMAC للتشفير الموثق في نموذج التشفير ثم التوثيق. على الرغم من أن استخدام HMAC اختياري حاليًا (يتم تفعيله عبر خيار سطر الأوامر --use-hmac)، إلا أنه يوصى بشدة لثلاثة أسباب:
السبب الأخير أعلاه هو السبب في أنه يجب استخدام HMAC حتى عندما يتم تشفير حزم SPA باستخدام GnuPG نظرًا لأن بيانات SPA لا تُرسل عبر وظائف libgpgme ما لم يتم التحقق من HMAC أولاً. GnuPG و libgpgme هما قطعتان برمجيتان معقدتان نسبيًا، وبالتالي فإن تقييد قدرة المهاجم المحتمل على التفاعل مع هذا الكود من خلال عملية HMAC يساعد في الحفاظ على موقف أمني أقوى. يتطلب توليد HMAC لاتصالات SPA مفتاحًا مخصصًا بالإضافة إلى مفتاح التشفير العادي، ويمكن توليدهما معًا باستخدام خيار --key-gen.
يقوم fwknop بتشفير حزم SPA إما باستخدام تشفير الكتلة Rijndael أو عبر GnuPaG والتشفير غير المتماثل المرتبط به. إذا تم اختيار طريقة التشفير المتماثل، فكما هو معتاد يتم مشاركة مفتاح التشفير بين العميل والخادم (انظر ملف /etc/fwknop/access.conf للتفاصيل). يتم توليد مفتاح التشفير الفعلي المستخدم لتشفير Rijndael عبر خوارزمية اشتقاق المفاتيح القياسية PBKDF1، ويتم تعيين وضع CBC. إذا تم اختيار طريقة GnuPG، فتُشتق مفاتيح التشفير من حلقات مفاتيح GnuPG.
عادةً ما يصل الأشخاص الذين يستخدمون تفويض الحزمة الواحدة (SPA) أو ابن عمه الأقل أمانًا وهو طرق الباب (PK) إلى خدمة SSHD التي تعمل على نفس النظام الذي يتم فيه نشر برنامج SPA/PK. أي أن جدارًا ناريًا يعمل على مضيف لديه سياسة رفض افتراضية ضد جميع اتصالات SSH الواردة بحيث لا يمكن مسح SSHD ضوئيًا، لكن خفي SPA يعيد تكوين الجدار الناري لمنح الوصول مؤقتًا إلى عميل SPA موثوق بشكل سلبي:
"استخدام SPA الأساسي للوصول إلى SSHD"
يدعم fwknop ما سبق، ولكنه يذهب أيضًا إلى أبعد من ذلك ويستخدم NAT بشكل قوي (لجدران iptables/firewalld). بعد كل شيء، الجدران النارية المهمة عادةً ما تكون بوابات بين الشبكات بدلاً من نشرها فقط على المضيفات المستقلة. يُستخدم NAT بشكل شائع على هذه الجدران النارية (على الأقل لاتصالات IPv4) لتوفير الوصول إلى الإنترنت للشبكات الداخلية الموجودة على مساحة عناوين RFC 1918، وكذلك للسماح للمضيفات الخارجية بالوصول إلى الخدمات المستضافة على الأنظمة الداخلية.
نظرًا لأن fwknop يتكامل مع NAT، يمكن استغلال SPA للوصول إلى الخدمات الداخلية عبر الجدار الناري من قبل المستخدمين على الإنترنت الخارجي. على الرغم من أن هذا له تطبيقات عديدة على الشبكات التقليدية الحديثة، إلا أنه يسمح أيضًا لـ fwknop بدعم بيئات الحوسبة السحابية مثل Amazon AWS:
"استخدام SPA على بيئات سحابية من Amazon AWS"
واجهة المستخدم الرسمية لعميل fwknop عبر المنصات fwknop-gui
(تنزيل، github)
تم تطويرها بواسطة Jonathan Bennett. يتم دعم معظم أوضاع SPA الرئيسية للعميل بما في ذلك طلبات NAT ومفاتيح HMAC وRijndael (GnuPG غير مدعوم بعد) وحفظ مقطع fwknoprc والمزيد. يعمل fwknop-gui حاليًا على Linux و Mac OS X و Windows - وإليك لقطة شاشة من OS X:
"fwknop-gui على Mac OS X"
وبالمثل، يتوفر
عميل Android
مُحدّث أيضًا.
يمكن العثور على برنامج تعليمي شامل حول fwknop هنا:
http://www.cipherdyne.org/fwknop/docs/fwknop-tutorial.html
فيما يلي قائمة كاملة بالميزات التي يدعمها مشروع fwknop: