نصائح وحيل Linux: الخادم، مفتوح

بالنسبة لأولئك الذين يحتاجون إلى تزويد أنفسهم وأحبائهم بإمكانية الوصول إلى خوادمهم من أي مكان في العالم عبر SSH/RDP/أخرى، RTFM/spur صغير.

نحن بحاجة إلى الاستغناء عن VPN وغيرها من الميزات، من أي جهاز في متناول اليد.

وحتى لا تضطر إلى ممارسة الكثير من التمارين مع الخادم.

كل ما تحتاجه لهذا هو نوكدوأذرع مستقيمة و5 دقائق من العمل.

"كل شيء موجود على الإنترنت" بالطبع (حتى على حبري)، ولكن عندما يتعلق الأمر بتنفيذ محدد، فمن هنا تبدأ...

سوف نتدرب على استخدام Fedora/CentOS كمثال، لكن هذا لا يهم.

الحافز مناسب لكل من المبتدئين والخبراء في هذا الشأن، لذلك ستكون هناك تعليقات، لكنها ستكون أقصر.

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

    يتم ضبط الجزء "الفتح" على الإغلاق التلقائي بعد ساعة واحدة. أنت لا تعرف أبدا ...

  • / الخ/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 الظاهري الذي يدور بالداخل (/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:

تحتوي Mana أيضًا على كل شيء (ولكن هذا غير دقيق)، لكن Knokd هو صديق بخيل جدًا في الرسائل، لذلك عليك أن تكون حذرًا للغاية.

  • نص
    في مستودعات Fedora/CentOS، أحدث طرق لهذا اليوم هي 0.63. من يريد UDP - ابحث عن 0.70 حزمة.
  • الواجهة
    في تكوين Fedora/CentOS الافتراضي هذا السطر لا. أضف بيديك، وإلا فلن ينجح الأمر.
  • مهلة
    هنا يمكنك الاختيار حسب ذوقك. من الضروري أن يكون لدى العميل ما يكفي من الوقت لجميع الركلات - وسوف يتعطل روبوت ماسح المنفذ (وسيقوم 146٪ ​​بالمسح الضوئي).
  • بدء/إيقاف/الأمر.
    إذا كان هناك أمر واحد، فالأمر، إذا كان هناك اثنان، ثم start_command+stop_command.
    إذا قمت بخطأ ما، فسوف يظل Knokd صامتا، لكنه لن يعمل.
  • بروتو
    من الناحية النظرية، يمكن استخدام 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، ما الذي يجب إدراجه قبل ماذا (مثل هذا люди اقتراح) لنجعل الأمر أكثر بساطة:

  • تقصير على سينت أو إس/فيدورا الأول ويستبدل بقاعدة (ما ليس بحرام حلال) العكس،
  • ونقوم بإزالة القاعدة الأخيرة.

يجب أن تكون النتيجة:

*filter
:INPUT DROP [0:0]
...
#-A INPUT -j REJECT --reject-with icmp-host-prohibited

يمكنك، بالطبع، القيام بالرفض بدلاً من DROP، ولكن مع DROP، ستكون الحياة أكثر متعة للروبوتات.

3. العميل

هذا المكان هو الأكثر إثارة للاهتمام (من وجهة نظري)، لأنك تحتاج إلى العمل ليس فقط من أي شاطئ، ولكن أيضًا من أي جهاز.

من حيث المبدأ، يتم إدراج عدد من العملاء على على الانترنت المشروع، ولكن هذا من نفس السلسلة "كل شيء على شبكة الإنترنت". لذلك، سأدرج ما يعمل في متناول يدي هنا والآن.

عند اختيار عميل، عليك التأكد من أنه يدعم خيار التأخير بين الحزم. نعم، هناك اختلافات بين الشواطئ و100 ميغابت لا تضمن أبدًا وصول الحزم بالترتيب الصحيح في الوقت المناسب من موقع معين.

ونعم، عند إعداد العميل، تحتاج إلى تحديد التأخير بنفسك. الكثير من المهلة - سوف تهاجم الروبوتات، القليل جدًا - لن يكون لدى العميل الوقت. تأخير كبير جدًا - لن يتمكن العميل من الوصول في الوقت المناسب أو سيكون هناك صراع بين الحمقى (انظر "المشعلات")، قليل جدًا - ستضيع الحزم على الإنترنت.

مع المهلة = 5 ثوان، التأخير = 100..500 مللي ثانية هو خيار عملي تمامًا

Windows

بغض النظر عن مدى روعة الأمر، فإنه ليس بالأمر التافه أن يكون Google عميلاً واضحًا لهذه المنصة. بحيث يدعم CLI تأخير، TCP - وبدون أقواس.

بدلا من ذلك، يمكنك أن تجرب هذا هو. يبدو أن Google الخاص بي ليس كعكة.

لينكس

الأمر بسيط هنا:

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 (مجاني، من المتجر).

أندرويد

"الطرق على المنافذ" ليس الإعلان، لكنه يعمل فقط. والمطورون مستجيبون تمامًا.

ملحوظة: تخفيض على حبري، بالطبع، بارك الله فيه يوما ما...

تحديث 1: شكرا ل لشخص جيد وجد العميل العامل تحت Windows.
تحديث 2: واحدة أخرى رجل صالح ذكرني أن وضع قواعد جديدة في نهاية iptables ليس مفيدًا دائمًا. ولكن - ذلك يعتمد.

المصدر: www.habr.com

إضافة تعليق