شرح طرق المنافذ
يبقي طرق المنافذ خدمةً غير مرئية إلى أن يثبت شخص ما أنه يعرف سرًا. يغطي هذا الدليل طريقة عمله، والتطبيقين الشائعين — knockd وfwknop — وأسباب فشل الطرق عمليًا.
كيف يعمل طرق المنافذ
يسقط جدار الحماية كل اتصال بالمنفذ المحمي، لذلك لا يرى الماسح شيئًا. تراقب خدمة صغيرة حركة المرور التي تصل إلى جدار الحماية. وعندما ينتج عنوان مصدر واحد النمط المتوقع، تضيف الخدمة قاعدة في جدار الحماية تسمح لذلك العنوان، عادةً لمدة قصيرة.
النمط هو الطرق. مع knockd، يكون تسلسلًا من محاولات الاتصال بمنافذ محددة بترتيب معين وضمن حد زمني. ومع fwknop، يكون حزمة مشفرة واحدة.
knockd: تسلسلات الطرق
يستمع knockd إلى واجهة ويطابق محاولات الاتصال مع التسلسلات في /etc/knockd.conf. يمكن أن يمزج التسلسل بين منافذ TCP وUDP. وعند التطابق، يشغّل knockd أمرًا — عادةً قاعدة iptables أو nftables لعنوان الطرق (%IP%).
يفتح هذا المثال SSH لعنوان الطرق ويغلقه مجددًا بعد 10 ثوانٍ. تستمر جلسات SSH القائمة في العمل إذا كان جدار الحماية يقبل الاتصالات المنشأة.
[options]
UseSyslog
[openSSH]
sequence = 7311:tcp,8822:tcp,9133:udp
seq_timeout = 10
tcpflags = syn
start_command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
cmd_timeout = 10
stop_command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT اختر منافذك الخاصة؛ ولا تعِد استخدام منافذ من أمثلة منشورة. يجعل tcpflags = syn برنامج knockd يحتسب الحزم ذات علامة SYN فقط — وهي أول حزمة في محاولة اتصال.
fwknop: تفويض حزمة واحدة
يستبدل fwknop التسلسل بحزمة UDP واحدة مشفرة باستخدام AES وموثقة باستخدام HMAC. يلتقطها الخادم، fwknopd، بصورة سلبية ويتحقق منها ويتأكد من أنها ليست إعادة تشغيل، ثم يفتح المنفذ المطلوب للعنوان داخل الحزمة.
أنشئ المفاتيح باستخدام fwknop --key-gen وضعها في access.conf للخادم. يستورد Secret Knock جانب العميل من .fwknoprc الخاص بك.
SOURCE ANY
OPEN_PORTS tcp/22
KEY_BASE64 <output of fwknop --key-gen>
HMAC_KEY_BASE64 <output of fwknop --key-gen>
FW_ACCESS_TIMEOUT 30 لأن العنوان المسموح به ينتقل داخل الحزمة المشفرة، يمكن لـ SPA فتح منفذ لعنوان غير العنوان الذي يرسل الحزمة — وهو مفيد عندما تطرق من هاتف على بيانات الجوال من أجل حاسوب محمول في مكان آخر.
لماذا تفشل الطرقات
- IPv4 مقابل IPv6: خرجت الطرقة عبر عائلة عناوين واحدة ويتصل SSH عبر الأخرى. فتح جدار الحماية الباب لعنوان لا تستخدمه.
- عنوان عام مختلف: عند استخدام بيانات الجوال أو خلف NAT لمشغل الشبكة أو VPN، يرى الخادم IP مختلفًا عما تتوقع. تحقق من العنوان الذي تطرق منه.
- SYN المعاد إرساله: إذا لم تتم الإجابة عن طرقة TCP، يرسل نظام تشغيل العميل SYN نفسه مجددًا. في اختباراتنا، أعاد knockd 0.8 ضبط التسلسل عند SYN المتكرر، لذا يجب أن يرسل العميل كل طرقة مرة واحدة وأن يوقف المحاولة سريعًا.
- التوقيت: الطرقات التي تصل خارج seq_timeout، أو بترتيب خاطئ، تبدأ التسلسل من جديد.
- الأجهزة الوسيطة: تحجب بعض الشبكات حركة المرور إلى المنافذ غير المعتادة أو تعيد كتابتها، لذلك قد تفشل طرقة تعمل في المنزل على شبكة فندق أو مكتب.
هل هو آمن؟
يُرسل تسلسل knockd دون تشفير؛ ويمكن لأي شخص يراقب حركة مرورك إعادة تشغيله. استخدمه لإخفاء خدمة عن الماسحات، أمام مفاتيح SSH — لا بدلًا منها. يسد SPA من fwknop هذه الفجوة بالتشفير وHMAC والحماية من إعادة التشغيل، وهو الخيار الأفضل عندما قد تتم مراقبة حركة مرورك.
الطرق من iPhone وMac وApple Watch
يرسل Secret Knock تسلسلات knockd وحزم SPA من fwknop من iPhone وiPad وMac، ويتحقق من استجابة المنفذ ويفتح تطبيق SSH الخاص بك. تقوم Apple Watch بالطرق عبر iPhone المقترن، لأن watchOS لا يسمح للتطبيقات بإرسال حزم TCP أو UDP خام؛ وبعيدًا عن iPhone، يمكنها إرسال SPA عبر HTTP إلى الخوادم التي تفعّله.
أدلة لإعدادك
أبقِ الباب مغلقًا. واحمل الطرق معك.
سيصل Secret Knock قريبًا إلى App Store لـ iPhone وiPad وMac وApple Watch.
Secret Knock →