أولئك الذين يحتاجون إلى تزويد أنفسهم ، أيها الأحباء ، بالوصول إلى خوادمهم من أي مكان في العالم عبر SSH / RDP / وإلا - RTFM / spur صغير.
نحتاج إلى الاستغناء عن VPN والأجراس وصفارات أخرى ، من أي جهاز في متناول اليد.
وحتى لا يمارس الخادم الكثير.
كل ما تحتاجه هو knockd ، ذراع مستقيم و 5 دقائق من العمل.
"كل شيء موجود على الإنترنت" ، بالطبع (حتى على Habré ) ، لكن عندما يتعلق الأمر بتنفيذ معين ، يبدأ ...
سوف نمارس مثال Fedora / CentOS ، لكن هذا ليس مهمًا.
سوف يتناسب Spur مع كل من المبتدئين و البيسون لهذا العمل ، لذلك سيكون هناك تعليقات ، ولكن أقصر.
1. الخادم
وضع خادم تدق:
yum/dnf install knock-server
قم بتكوينه (على سبيل المثال على ssh) - /etc/knockd.conf:
[options] UseSyslog interface = enp1s0f0 [SSHopen] sequence = 33333,22222,11111 seq_timeout = 5 tcpflags = syn start_command = iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT cmd_timeout = 3600 stop_command = iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT [SSHclose] sequence = 11111,22222,33333 seq_timeout = 5 tcpflags = syn command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
يتم ضبط جزء "الفتح" على الإغلاق التلقائي بعد ساعة واحدة. أنت لا تعرف أبدا ...
/ etc / sysconfig / iptables:
... -A INPUT -p tcp -m state --state NEW -m tcp --dport 11111 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22222 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 33333 -j ACCEPT ...
إلى الأمام:
service iptables restart service knockd start
يمكنك إضافة RDP إلى الغزل الظاهري في Windows Server داخل (/etc/knockd.conf ؛ اسم الواجهة حسب ذوقك):
[RDPopen] sequence = 44444,33333,22222 seq_timeout = 5 tcpflags = syn start_command = iptables -t nat -A PREROUTING -s %IP% -i enp1s0f0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.2 cmd_timeout = 3600 stop_command = iptables -t nat -D PREROUTING -s %IP% -i enp1s0f0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.2 [RDPclose] sequence = 22222,33333,44444 seq_timeout = 5 tcpflags = syn command = iptables -t nat -D PREROUTING -s %IP% -i enp1s0f0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.2
تتم مراقبة جميع ركلاتنا من العميل على الخادم بواسطة الأمر iptables -S
.
2. دليل الخليع
knockd.conf:
كل شيء موجود في الرجال أيضًا (ولكن هذا غير دقيق) ، ومع ذلك فإن knockd هو رفيق بخيل إلى حد ما مع الرسائل ، لذلك عليك أن تكون حذراً للغاية.
- نص
في مستودعات فيدورا / سينت أو إس ، تبلغ نسبة الفائدة القصوى لهذا اليوم 0.63. الذي يريد UDP - ابحث عن 0.70 الحزم. - السطح البيني
في التكوين الافتراضي لـ Fedora / CentOS ، هذا الخط مفقود . أضف باليد ، وإلا فلن يعمل. - مهلة
هنا لاختيار لتذوق. من الضروري أن يتوفر للعميل وقت كافي لجميع الركلات - وسيقطع ماسح الروبوت في المنافذ (وسوف يقوم 146٪ بمسحها ضوئيًا). - بدء / توقف / القيادة.
إذا كان الأمر واحد - ثم أمر ، إذا كان - اثنان - ثم start_command + stop_command.
إذا ارتكبت خطأ ، ستبقى knockd صامتة ، لكنها لن تنجح. - بروتو
نظريا ، يمكنك استخدام UDP. في الممارسة العملية ، قمت بخلط tcp و udp ، وتمكن عميل من الشاطئ في بالي من فتح بوابة للمرة الخامسة فقط. ل TCP طار عند الضرورة ، و UDP ليست حقيقة واقعة. ولكن هذه مسألة ذوق ، مرة أخرى. - تسلسل
أشعل النار الضمني هو أن تسلسل لا ينبغي أن تتداخل ... كيف أقول ذلك ...
على سبيل المثال ، هذا:
open: 11111,22222,33333 close: 22222,11111,33333
فتح ركلة 11111 ستنتظر ركلة التالية في 22222. ومع ذلك ، فإن ركلة (22222) هذه ستبدأ في العمل وستتوقف كل شيء. ذلك يعتمد على تأخير العميل كذلك. مثل هذه الأشياء ©.
إيبتبلس
إذا كان في / etc / sysconfig / iptables ، فهذا هو:
*nat :PREROUTING ACCEPT [0:0]
هذا لا يزعجنا ، فهو هنا:
*filter :INPUT ACCEPT [0:0] ... -A INPUT -j REJECT --reject-with icmp-host-prohibited
تقي يتدخل.
نظرًا لأن knockd يضيف قواعد إلى نهاية سلسلة INPUT ، فإننا نشعر بالرفض.
وتعطيل هذا الرفض هو فتح السيارة لجميع الرياح.
لكي لا نذهب إلى iptables ، أين نضع شيئًا من قبل (كما يقترح الناس ) سنعمل على تسهيل الأمر:
- الافتراضي في CentOS / Fedora يتم استبدال القاعدة الأولى ("ما هو ممنوع - مسموح به") بالعكس ،
- وإزالة القاعدة الأخيرة.
يجب أن تكون النتيجة:
*filter :INPUT DROP [0:0] ... #-A INPUT -j REJECT --reject-with icmp-host-prohibited
يمكنك بالطبع جعل REJECT بدلاً من DROP ، ولكن مع DROP ، ستكون برامج الروبوت أكثر متعة.
3. العملاء
الأكثر إثارة للاهتمام في هذا المكان (من وجهة نظري) ، حيث تحتاج إلى العمل ليس فقط من أي شاطئ ، ولكن أيضًا من أي جهاز.
من حيث المبدأ ، يتم سرد عدد من العملاء على موقع المشروع ، ولكن هذا من نفس السلسلة "كل شيء موجود على الإنترنت". لذلك ، سأدرج ما يعمل هنا والآن في متناول يدي.
عند اختيار عميل ، يجب عليك التأكد من أنه يدعم خيار التأخير بين الحزم. نعم ، لا يضمن الشاطئ والصراع على الشاطئ و 100 ميغابت أبدًا وصول الحزم بالترتيب الصحيح في الوقت المناسب من هذا المكان.
ونعم - عند إعداد العميل ، يجب تحديد التأخير بشكل مستقل. الكثير من المهلة - ستهاجم برامج الروبوت ، قليلاً - لن يكون العميل في الوقت المناسب. هناك الكثير من التأخير - العميل لن يكون في الوقت المناسب أو سيكون هناك تعارض بين البلهاء (انظر "أشعل النار") ، سيتم إعادة تضييع الحزم على الإنترنت.
مع المهلة = 5 ثوانٍ ، يكون خيار العمل الكامل تأخيرًا = 100.0000 مللي ثانية
نوافذ
لا يهم كم يبدو سخيفًا ، ولكن أن تكون google عميلًا متميزًا لهذا النظام الأساسي أمرًا غير منطقي تمامًا. بحيث يدعم CLI التأخير و TCP - وبدون أقواس.
كخيار ، يمكنك أن تجرب ذلك هنا . يبدو لي أن جوجل ليست كعكة.
لينكس
كل شيء بسيط هنا:
dnf install knock -y knock -d <delay> <dst_ip> 11111 22222 33333
ماك
أسهل طريقة هي وضع المنفذ من البيرة:
brew install knock
ورسم لنفسك قمصان الجسم قادة النموذج:
#!bin/sh knock -d <delay> <dst_ip> 11111 22222 33333
دائرة الرقابة الداخلية
خيار العمل هو KnockOnD (مجاني ، من المتجر).
الروبوت
"طرق على الموانئ". لا الإعلان ، ولكن العمل فقط. والمطورين استجابة للغاية.
PS تخفيض السعر على هبر ، بطبيعة الحال ، رضي الله عنه يوما ما ...
UPD1 : بفضل شخص جيد ، تم العثور على عميل يعمل لنظام التشغيل Windows.
UPD2 : ذكر شخص جيد آخر أن وضع قواعد جديدة في نهاية iptables ليس مفيدًا دائمًا. ولكن - هذا يعتمد.