VPN سے باہر نکلنے کے پیچھے پورٹ اسکین کے نتائج کیوں بدلتے ہیں؟
باہر نکلنے کا راستہ بدلیں اور پورٹ خدمت کے بغیر ہلے بھی مختلف جواب دے سکتا ہے۔ راستے کے مشاہدے کو اُس فہرست سے الگ کریں جس کی آپ کو واقعی ضرورت ہے۔
وہی پورٹ جانچ دفتری لائن سے اور VPN کے باہر نکلنے سے چلائیں، اور ایک ایسے پتے کے بارے میں دونوں جواب مختلف ہو سکتے ہیں جسے کسی نے نہیں بدلا۔ یہ فرق راستے سے اور اِس سے آتا ہے کہ کس میزبان نے جواب دیا، خدمت کے چلنے یا بند ہونے سے نہیں۔ تین سوال اِن وضاحتوں کو الگ کرتے ہیں: جانچ نے واقعی کیا پوچھا، کس میزبان نے جواب دیا، اور آپ کے اپنے سرور نے کیا درج کیا۔ اِنہیں اسی ترتیب سے پورا کریں اور اگلے پر جانے سے پہلے ہر جواب لکھیں۔
دو مرتبہ چلانے کا موازنہ کرنے سے پہلے جانچ درست کریں
حالت کا لفظ کسی دوسرے حالت کے لفظ سے صرف اُس وقت موازنہ کیا جا سکتا ہے جب دونوں ایک ہی تجربے سے آئے ہوں۔ پانچ میدان اِسے مقرر کرتے ہیں: وہ ماخذ پتہ جو دور کے فریق نے دیکھا، حل شدہ منزل، پورٹ، اسکین کی قسم اور وقت۔ اِن میں سے کوئی بھی بدلیں اور آپ نے پہلے کو دو بار ناپنے کے بجائے دوسرا تجربہ کیا ہے۔
سب سے پہلے ماخذ دیکھیں، کیونکہ VPN کلائنٹ چل رہا ہو سکتا ہے جبکہ ٹریفک اب بھی طبیعی انٹرفیس سے باہر نکل رہا ہو۔ دور کے فریق سے پوچھیں کہ وہ کیا دیکھتا ہے، پھر کرنل سے پوچھیں کہ اُس نے کون سا انٹرفیس چنا:
curl -s https://ifconfig.me
ip route get 203.0.113.20مختلف نیٹ ورکس پر دو پتے کا مطلب ہے کہ وضاحت پہلے ہی ہاتھ میں ہے، اور باقی جانچ صرف اِس کی تصدیق کرے گی۔ جب وہ مل جائیں، تو جانچ کو سبب کا جھنڈا کھلا رکھ کر ریکارڈ کریں، تاکہ حالت کسی وضاحت سے بندھی ہوئی واپس آئے نہ کہ تنہا ننگے لفظ کی طرح کھڑی رہے۔ اسکین کی قسم بھی اُسی ریکارڈ میں آتی ہے، کیونکہ وہ بتاتی ہے کہ کیا پوچھا گیا، یہ نہیں کہ کیا واپس آیا۔ ماخذ، طریقہ اور وقت کی مہر کے بغیر حالت کا کسی سے بھی موازنہ نہیں کیا جا سکتا:
nmap -sT -p 443,8443 --reason 203.0.113.20اُس آؤٹ پٹ کو ریکارڈ کے پاس رکھیں، ایسے اسکرول بیک بفر میں نہیں جو اگلا شخص نہ دیکھ سکے۔ متصادم دو ایماندار اسکین صرف اُس وقت بحث ہیں جب کسی نے شرطیں نہ لکھی ہوں۔ شرطیں طے ہونے پر یا تو نتائج مل جاتے ہیں اور سوال بند ہو جاتا ہے، یا وہ مختلف ہوتے ہیں اور فرق راستے کے بارے میں ایک حقیقت ہے۔
معلوم کریں کہ کس میزبان نے مصافحہ مکمل کیا
مکمل مصافحہ ثابت کرتا ہے کہ کسی میزبان نے اُسے مکمل کیا، اور وہ میزبان ضروری نہیں کہ آپ کے ذہن میں موجود عمل ہو۔ لوڈ بیلنسر، الٹا پروکسی یا SYN پروکسی اصل سرور کے شامل ہونے سے پہلے جواب دے سکتے ہیں، جو عام ڈیزائن ہے، علامت نہیں۔ متوقع نام کے لیے درست سرٹیفکیٹ بھی اِسے تنگ نہیں کرتا، کیونکہ سرٹیفکیٹ خدمت کا رشتہ بتاتا ہے اور اِس بارے میں کچھ نہیں کہتا کہ کس مشین نے رابطہ ختم کیا۔
Nmap کا پورٹ حالتوں کا حوالہ اِسے بنیادی مانتا ہے: حالت درج کرتی ہے کہ جانچ نے اپنی روانگی کے مقام سے کیا مشاہدہ کیا، پورٹ کی خصوصیت نہیں۔ حالت کے لفظ کو اِس طرح پڑھیں اور متصادم دو مرتبے متضاد کے بجائے ہم آہنگ دکھنے لگتے ہیں، جبکہ سوال پورٹ کھلا ہے یا نہیں سے آگے بڑھ کر یہ بن جاتا ہے کہ اُس کے سامنے کون کھڑا تھا۔
دوسرے سوال کا جواب بیک اینڈ میں دیں، باہر سے نہیں۔ جو فرنٹ اینڈ رابطے قبول کرتا ہے اور پھر اپنے اپ اسٹریم تک نہیں پہنچتا، وہ سست ایپلیکیشن والی صحت مند خدمت کی عین بیرونی تصویر بناتا ہے۔ صرف اپ اسٹریم کا اپنا ریکارڈ دونوں صورتوں کو الگ کرتا ہے:
tail -n 5 /var/log/nginx/access.log
ss -ltnp 'sport = :443'لاگ سطر وہ کلائنٹ پتہ دکھاتی ہے جو ایپلیکیشن نے واقعی دیکھا، اور دوسرا کمانڈ دکھاتا ہے کہ پورٹ 443 رکھنے والا عمل آپ کی ایپلیکیشن ہے یا اُس کے سامنے کوئی چیز۔ اگر دونوں اِس بارے میں متفق نہ ہوں کہ کون سا پتہ جڑا، تو آپ ایک درخواست کی دو ٹانگیں دیکھ رہے ہیں اور ٹکٹ کو یہ کہنا چاہیے۔
سرنگ کو قصوروار ٹھہرانے سے پہلے اپنے قواعد جانچیں
جان بوجھ کر بنائی گئی پالیسی ہی سب سے عام سبب ہے کہ پورٹ ایک نیٹ ورک پر جواب دیتا ہے اور دوسرے پر نہیں، اور یہ دستیاب وضاحتوں میں سب سے کم دلچسپ ہے۔ رسائی کے قواعد ایک ماخذ کو اجازت دینے اور باقی کو گرا دینے کے لیے ہوتے ہیں، اِس لیے باہر نکلنے کا بدلنا عین وہی واقعہ ہے جس کے لیے وہ لکھے گئے۔ اِس لیے VPN کے ذریعے مختلف حالت یہ نہیں دکھاتی کہ فراہم کنندہ ٹریفک کا معائنہ کرتا ہے۔ یہ دکھاتی ہے کہ آپ کا ماخذ پتہ اب مختلف ہے، جو بہت چھوٹا دعوی ہے۔
یہ قواعد سرور پر پڑھے جا سکتے ہیں، اِس لیے نیٹ ورک کے بیچ کے بارے میں اندازہ لگانے کے بجائے اِنہیں پڑھیں۔ وہ فلٹر قواعد فہرست کریں جو دونوں پتہ حدود میں سے کسی کا ذکر کرتے ہیں، پھر دیکھیں کہ رابطہ ڈیمن تک پہنچا بھی یا نہیں:
nft list ruleset | grep -n -e 203.0.113 -e 198.51.100
journalctl -u sshd -n 50 | grep 203.0.113خالی دوسرا نتیجہ معلوماتی ہے، کیونکہ ڈیمن تک کچھ نہیں پہنچا اور سوال کسی فلٹر، سیکیورٹی گروپ یا خود راستے کا ہے۔ ہٹ کا مطلب ہے کہ خدمت نے آپ کا ماخذ دیکھا اور اپنا جواب چنا، اور وہ فیصلہ عام طور پر ایسے قاعدے میں لکھا ہوتا ہے جو آپ پڑھ سکتے ہیں۔ دونوں میں سے کوئی نتیجہ فراہم کنندہ کے بارے میں کہانی کی حمایت نہیں کرتا، اور دونوں پیکٹ پکڑنے سے سستے میں جانچے جا سکتے ہیں۔
ٹرانسپورٹ، سرٹیفکیٹ اور ردعمل الگ الگ پڑھیں
تین تہیں تین مشاہدے پیدا کرتی ہیں، اور اِن میں سے ایک کی جانچ کرنے والی جانچ باقی دو کے بارے میں رپورٹ نہیں کر سکتی۔ اِنہیں ایک ہی فیصلے میں موڑنے کے بجائے ریکارڈ میں الگ سطروں کے طور پر رکھیں، کیونکہ ہر سطر اپنے طریقے سے ناکام ہوتی ہے اور ناکامی کا طریقہ بتاتا ہے کہ آگے کہاں دیکھنا ہے۔
| Observation | What it settles | What it leaves open |
|---|---|---|
| Connection completed | A host on the path accepted the handshake | Which host, and whether its upstream is reachable |
| Certificate valid for the name | The endpoint holds a credential for that name | Whether the process behind it is the one you meant |
| Expected response body | The application handled the request | Anything about other ports or other paths |
| Connection refused | A host replied and nothing was listening | Whether a filter sits ahead of the refused port |
| Timeout | No reply arrived before the deadline | Drop, blackhole route or an overloaded host |
ایک کمانڈ آپ کے زیرِ کنٹرول خدمت کے سامنے پہلی تین سطریں بناتی ہے۔ اِس کا آؤٹ پٹ چیٹ پیغام میں نہیں، اسکین کے پاس ریکارڈ میں رکھیں:
curl -v --resolve office.example:443:203.0.113.20 https://office.example/آؤٹ پٹ کو ترتیب سے پڑھیں: مصافحہ ٹرانسپورٹ کے سوال کا جواب دیتا ہے، سرٹیفکیٹ کا موضوع نام کے سوال کا، اور ردعمل کا بدن ایپلیکیشن کے سوال کا۔ جب مصافحے کی سطر کامیاب ہو اور ردعمل کی سطر نہ ہو، تو آپ کے پاس ٹوٹے اپ اسٹریم والا فرنٹ اینڈ ہے، بند پورٹ نہیں۔ وہ آپ کے کھولے ٹکٹ سے مختلف ٹکٹ ہے، اور یہ صاف کہنا بنتا ہے۔
ٹکٹ میں چار حقائق لکھ کر ختم کریں: ماخذ پتہ، اسکین کی قسم، جواب دینے والا میزبان اور وقت۔ بعد کے موازنے کو جو چاہیے وہ اِنہی چار میں رہتا ہے، اور آگے معاملہ اٹھانے والے کے پاس آپ کے ٹرمینل کی تاریخ نہیں ہوگی۔ اگر آپ چاروں نہیں بھر سکتے، تو مرتبہ مکمل نہیں ہوا۔