لینکس کے نکات اور چالیں: سرور، کھولیں۔

ان لوگوں کے لیے جنہیں اپنے آپ کو، اپنے پیاروں کو، 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

    "اوپننگ" حصہ 1 گھنٹہ کے بعد خود بخود بند ہونے کے لیے سیٹ کیا جاتا ہے۔ تم کبھی نہیں جانتے...

  • /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 کو ورچوئل ونڈوز سرور کے اندر گھومنے میں شامل کر سکتے ہیں (/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 ایک دوست ہے جو پیغامات کے حوالے سے کافی کنجوس ہے، اس لیے آپ کو بہت محتاط رہنے کی ضرورت ہے۔

  • ورژن
    Fedora/CentOS ذخیروں میں، آج کے لیے تازہ ترین دستک 0.63 ہے۔ UDP کون چاہتا ہے - 0.70 پیکٹ تلاش کریں۔
  • کے انٹرفیس کی اوپری دائیں طرف دکھائی دیتا ہے۔
    پہلے سے طے شدہ Fedora/CentOS کنفیگریشن میں یہ لائن کوئی. اپنے ہاتھوں سے شامل کریں، ورنہ یہ کام نہیں کرے گا.
  • وقت ختم
    یہاں آپ اپنے ذائقہ کے مطابق انتخاب کر سکتے ہیں۔ یہ ضروری ہے کہ کلائنٹ کے پاس تمام ککس کے لیے کافی وقت ہو - اور پورٹ اسکینر بوٹ ٹوٹ جائے گا (اور 146% اسکین کرے گا)۔
  • اسٹارٹ/اسٹاپ/کمانڈ۔
    اگر ایک کمانڈ ہے، تو کمانڈ، اگر دو ہیں، تو start_command+stop_command۔
    اگر آپ غلطی کرتے ہیں تو، دستک خاموش رہے گا، لیکن کام نہیں کرے گا.
  • پروٹو
    نظریاتی طور پر، UDP استعمال کیا جا سکتا ہے. عملی طور پر، میں نے tcp اور udp کو ملایا، اور بالی کے ساحل سے آنے والا کلائنٹ صرف پانچویں بار گیٹ کھول سکا۔ کیونکہ TCP ضرورت پڑنے پر پہنچا، لیکن UDP حقیقت نہیں ہے۔ لیکن یہ ایک بار پھر ذائقہ کا معاملہ ہے۔
  • ترتیب
    مضمر ریک یہ ہے کہ تسلسل کو آپس میں نہیں ہونا چاہیے... اسے کیسے ڈالا جائے...

مثال کے طور پر، یہ:

open: 11111,22222,33333
close: 22222,11111,33333

بذریعہ کک 11111 کھول 22222 پر اگلی کک کا انتظار کریں گے۔ تاہم اس (22222) کک کے بعد یہ کام کرنا شروع کر دے گا۔ بند کریں اور سب کچھ ٹوٹ جائے گا. یہ کلائنٹ کی تاخیر پر بھی منحصر ہے۔ ایسی چیزیں ©.

iptables

اگر /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

آپ یقیناً DROP کی بجائے REJECT کر سکتے ہیں، لیکن DROP کے ساتھ زندگی بوٹس کے لیے زیادہ مزہ آئے گی۔

3. کلائنٹ

یہ جگہ سب سے زیادہ دلچسپ ہے (میرے نقطہ نظر سے)، کیونکہ آپ کو نہ صرف کسی ساحل سے بلکہ کسی بھی ڈیوائس سے کام کرنے کی ضرورت ہے۔

اصولی طور پر، کلائنٹس کی ایک بڑی تعداد پر درج ہیں۔ ڈاؤن لوڈ، اتارنا پروجیکٹ، لیکن یہ اسی سیریز سے ہے "سب کچھ انٹرنیٹ پر ہے۔" لہذا، میں یہاں اور ابھی اس کی فہرست دوں گا جو میری انگلیوں پر کام کر رہا ہے۔

کلائنٹ کا انتخاب کرتے وقت، آپ کو یہ یقینی بنانا ہوگا کہ یہ پیکٹوں کے درمیان تاخیر کے آپشن کو سپورٹ کرتا ہے۔ ہاں، ساحلوں اور 100 میگا بٹس کے درمیان فرق ہے کبھی بھی اس بات کی ضمانت نہیں دیتا کہ پیکٹ کسی مخصوص مقام سے صحیح وقت پر صحیح ترتیب میں پہنچیں گے۔

اور ہاں، کلائنٹ کو ترتیب دیتے وقت، آپ کو تاخیر کا انتخاب خود کرنا ہوگا۔ بہت زیادہ ٹائم آؤٹ - بوٹس حملہ کریں گے، بہت کم - کلائنٹ کے پاس وقت نہیں ہوگا۔ بہت زیادہ تاخیر - کلائنٹ اسے وقت پر نہیں کرے گا یا احمقوں کا تنازعہ ہوگا (دیکھیں "ریک")، بہت کم - پیکٹ انٹرنیٹ پر گم ہو جائیں گے۔

timeout=5s کے ساتھ، delay=100..500ms ایک مکمل طور پر کام کرنے کا آپشن ہے۔

ونڈوز

اس سے کوئی فرق نہیں پڑتا ہے کہ یہ کتنا ہی مضحکہ خیز لگتا ہے، یہ گوگل کے لیے اس پلیٹ فارم کے لیے ایک واضح دستک کلائنٹ کے لیے بالکل غیر معمولی ہے۔ اس طرح کہ CLI تاخیر، TCP - اور بغیر دخش کے سپورٹ کرتا ہے۔

متبادل طور پر، آپ کوشش کر سکتے ہیں۔ یہی تھا. بظاہر میرا گوگل کیک نہیں ہے۔

لینکس

یہ یہاں آسان ہے:

dnf install knock -y
knock -d <delay> <dst_ip> 11111 22222 33333

MacOS کے

ہومبریو سے پورٹ انسٹال کرنا سب سے آسان طریقہ ہے:
brew install knock
اور کمانڈز کے لیے ضروری بیچ فائلیں کھینچیں جیسے:

#!bin/sh
knock -d <delay> <dst_ip> 11111 22222 33333

iOS

ایک کام کرنے کا اختیار ہے KnockOnD (مفت، اسٹور سے)۔

اینڈرائڈ

"بندرگاہوں پر دستک" اشتہار نہیں، لیکن یہ صرف کام کرتا ہے. اور ڈویلپر کافی جوابدہ ہیں۔

Habré پر PS مارک ڈاون، یقیناً، خدا اسے کسی دن خوش رکھے...

UPD1: شکریہ۔ ایک اچھے انسان کو پایا کام کرنے والے کلائنٹ ونڈوز کے تحت.
UPD2: ایک دوسرا اچھا آدمی مجھے یاد دلایا کہ iptables کے آخر میں نئے اصول لگانا ہمیشہ مفید نہیں ہوتا۔ لیکن - یہ منحصر ہے.

ماخذ: www.habr.com

نیا تبصرہ شامل کریں