ايندڙ SSH ڪنيڪشن لاء ٽرپ (tarpit).

اهو ڪو راز ناهي ته انٽرنيٽ هڪ تمام دشمن ماحول آهي. جيترو جلدي توهان سرور کي وڌايو، اهو فوري طور تي وڏي حملن ۽ گهڻن اسڪين جي تابع آهي. مثال طور سيڪيورٽي گارڊن کان ماکيءَ جو پٽو توهان اندازو لڳائي سگهو ٿا هن گندگي جي ٽرئفڪ جي ماپ. حقيقت ۾، سراسري سرور تي، ٽرئفڪ جو 99٪ خراب ٿي سگھي ٿو.

ترپٽ هڪ ٽرپ پورٽ آهي جيڪو ايندڙ رابطن کي سست ڪرڻ لاءِ استعمال ٿيندو آهي. جيڪڏهن ٽئين پارٽي سسٽم هن بندرگاهه سان ڳنڍي ٿي، توهان جلدي ڪنيڪشن کي بند ڪرڻ جي قابل نه هوندا. هن کي پنهنجي سسٽم جي وسيلن کي ضايع ڪرڻو پوندو ۽ انتظار ڪرڻو پوندو جيستائين ڪنيڪشن جو وقت ختم ٿئي، يا دستي طور تي ان کي ختم ڪيو وڃي.

گهڻو ڪري، tarpits تحفظ لاء استعمال ٿيندا آهن. ٽيڪنڪ پهريون ڀيرو ڪمپيوٽر جي ورم کان بچائڻ لاء تيار ڪئي وئي هئي. ۽ ھاڻي اھو استعمال ڪري سگھجي ٿو اسپامرز ۽ محققن جي زندگين کي برباد ڪرڻ لاءِ جيڪي ھڪڙي قطار ۾ سڀني IP پتي جي وسيع اسڪيننگ ۾ مصروف آھن (مثال طور Habré تي: آسٽريا, اکرين).

سسٽم ايڊمنسٽريٽرن مان هڪ ڪرس ويلنز نالي هڪ شخص ظاهري طور تي هن بي عزتي کي ڏسي ٿڪجي پيو هو - ۽ هن هڪ ننڍڙو پروگرام لکيو. لاتعداد، SSH لاءِ هڪ تارپٽ جيڪو ايندڙ ڪنيڪشن کي سست ڪري ٿو. پروگرام هڪ بندرگاهه کوليندو آهي (ٽيسٽنگ لاءِ ڊفالٽ پورٽ 2222 آهي) ۽ هڪ SSH سرور هجڻ جو دعويٰ ڪري ٿو، پر حقيقت ۾ اهو اچڻ واري ڪلائنٽ سان لامحدود ڪنيڪشن قائم ڪري ٿو جيستائين اهو ڏئي ڇڏي. اهو ڪيترن ئي ڏينهن تائين جاري رهي سگهي ٿو يا وڌيڪ جيستائين ڪلائنٽ بند نه ٿئي.

افاديت جي انسٽاليشن:

$ make
$ ./endlessh &
$ ssh -p2222 localhost

صحيح طريقي سان لاڳو ٿيل ٽرپٽ حملي ڪندڙ کان وڌيڪ وسيلا وٺي ويندا توهان کان. پر اهو به وسيلن جو معاملو ناهي. ليکڪ هن لکيو آهي تهته پروگرام لت آهي. هن وقت ان ۾ 27 ڪلائنٽ ڦاٿل آهن، انهن مان ڪجهه هفتن لاءِ ڳنڍيل آهن. سرگرمي جي چوٽي تي، 1378 ڪلائنٽ 20 ڪلاڪن تائين پھنس ويا!

آپريٽنگ موڊ ۾، Endlesssh سرور کي معمول جي بندرگاهن 22 تي انسٽال ڪرڻ جي ضرورت آهي، جتي غنڊا ٽوڙيندا آهن. معياري حفاظتي سفارشون هميشه SSH کي مختلف بندرگاهن ڏانهن منتقل ڪرڻ جي صلاح ڏين ٿيون، جيڪو فوري طور تي لاگ ان جي ماپ کي گھٽائي ٿو.

ڪرس ويلنس چوي ٿو ته هن جو پروگرام وضاحت جي هڪ پيراگراف کي استحصال ڪري ٿو آر ايف سي سي ايم ايس SSH پروٽوڪول ڏانهن. TCP ڪنيڪشن قائم ٿيڻ کان فوري پوءِ، پر ان کان اڳ جو ڪرپٽ گرافي لاڳو ٿئي، ٻنهي ڌرين کي لازمي طور تي هڪ سڃاڻپ واري تار موڪلڻ گهرجي. ۽ اتي پڻ هڪ نوٽ آهي: "سرور ورزن قطار موڪلڻ کان اڳ ڊيٽا جون ٻيون قطارون موڪلي سگھي ٿو". ۽ ڪابه حد ناهي هن ڊيٽا جي مقدار تي، توهان کي صرف هر لڪير سان شروع ڪرڻ جي ضرورت آهي SSH-.

اھو اھو آھي جيڪو لامحدود پروگرام ڪندو آھي: اھو موڪليو لامتناہی بي ترتيب ٺاهيل ڊيٽا جو وهڪرو، جيڪو RFC 4253 سان مطابقت رکي ٿو، اهو آهي، تصديق ڪرڻ کان اڳ موڪليو، ۽ هر لائن شروع ٿئي ٿي SSH- ۽ 255 اکرن کان وڌيڪ نه هجي، جنهن ۾ لڪير جي پڇاڙي وارو ڪردار به شامل آهي. عام طور تي، هر شيء معيار جي مطابق آهي.

ڊفالٽ طور، پروگرام پيڪٽ موڪلڻ جي وچ ۾ 10 سيڪنڊن جو انتظار ڪري ٿو. هي ڪلائنٽ کي وقت ختم ٿيڻ کان روڪي ٿو، تنهنڪري ڪلائنٽ هميشه لاء ڦاسي ويندو.

جيئن ته ڊيٽا موڪلڻ کان اڳ ڪرپٽوگرافي لاڳو ٿئي ٿي، پروگرام تمام سادو آهي. اهو ڪنهن به سيفرن کي لاڳو ڪرڻ جي ضرورت ناهي ۽ ڪيترن ئي پروٽوڪول کي سپورٽ ڪري ٿو.

ليکڪ کي يقيني بڻائڻ جي ڪوشش ڪئي وئي ته افاديت گهٽ ۾ گهٽ وسيلن کي استعمال ڪري ٿو ۽ مشين تي مڪمل طور تي اڻڄاتل ڪم ڪري ٿو. جديد اينٽي وائرس ۽ ٻين "سيڪيورٽي سسٽم" جي برعڪس، اهو توهان جي ڪمپيوٽر کي سست نه ڪرڻ گهرجي. هن ٿورو وڌيڪ چالاڪ سافٽ ويئر لاڳو ڪرڻ جي ڪري ٽرئفڪ ۽ ياداشت جي استعمال کي گهٽائڻ ۾ مدد ڪئي. جيڪڏهن اهو آسان طور تي هڪ نئين ڪنيڪشن تي هڪ الڳ عمل شروع ڪيو، ته پوء امڪاني حملي ڪندڙ مشين تي وسيلن کي ختم ڪرڻ لاء ڪيترن ئي ڪنيڪشن کي کولڻ سان هڪ DDoS حملو شروع ڪري سگهي ٿو. ھڪڙي سلسلي في ڪنيڪشن پڻ بھترين اختيار نه آھي، ڇاڪاڻ⁠تہ ڪنييل وسيلن کي ٿريڊز کي منظم ڪرڻ ۾ ضايع ڪندو.

اهو ئي سبب آهي ته ڪرس ويلونز چونڊيو آهي سڀ کان وڌيڪ ٿلهي آپشن لاءِ Endlessh: هڪ واحد موضوع وارو سرور poll(2)، جتي ٽريپ ۾ موجود گراهڪ عملي طور تي ڪو به اضافي وسيلا استعمال نٿا ڪن ، ڪنيل ۾ ساکٽ اعتراض کي ڳڻڻ نه ٿا ڏين ۽ Endlessh ۾ ٽريڪنگ لاءِ ٻيو 78 بائيٽ. هر ڪلائنٽ لاءِ وصول ڪرڻ ۽ موڪلڻ وارا بفر مختص ڪرڻ کان بچڻ لاءِ، Endlessh هڪ سڌي رسائي ساکٽ کولي ٿو ۽ سڌو سنئون TCP پيڪٽس جو ترجمو ڪري ٿو، تقريبن سڄي آپريٽنگ سسٽم TCP/IP اسٽيڪ کي پاس ڪندي. ايندڙ بفر جي ڪا به ضرورت نه آهي، ڇو ته اسان کي ايندڙ ڊيٽا ۾ دلچسپي نه آهي.

ليکڪ جو چوڻ آهي ته سندس پروگرام جي وقت ۾ خبر ناهي پٿون جي اسڪيو ۽ ٻين تارپٽس جي وجود بابت. جيڪڏهن هو asycio بابت ڄاڻندو هو، ته هو پٿون ۾ صرف 18 لائينن ۾ پنهنجي افاديت کي لاڳو ڪري سگهي ٿو:

import asyncio
import random

async def handler(_reader, writer):
try:
while True:
await asyncio.sleep(10)
writer.write(b'%xrn' % random.randint(0, 2**32))
await writer.drain()
except ConnectionResetError:
pass

async def main():
server = await asyncio.start_server(handler, '0.0.0.0', 2222)
async with server:
await server.serve_forever()

asyncio.run(main())

Asyncio tarpits لکڻ لاء مثالي آهي. مثال طور، هي ٿلهو فائر فاکس، ڪروم، يا ڪنهن ٻئي ڪلائنٽ کي منجمد ڪندو جيڪو ڪيترن ئي ڪلاڪن تائين توهان جي HTTP سرور سان ڳنڍڻ جي ڪوشش ڪري رهيو آهي:

import asyncio
import random

async def handler(_reader, writer):
writer.write(b'HTTP/1.1 200 OKrn')
try:
while True:
await asyncio.sleep(5)
header = random.randint(0, 2**32)
value = random.randint(0, 2**32)
writer.write(b'X-%x: %xrn' % (header, value))
await writer.drain()
except ConnectionResetError:
pass

async def main():
server = await asyncio.start_server(handler, '0.0.0.0', 8080)
async with server:
await server.serve_forever()

asyncio.run(main())

Tarpit هڪ بهترين اوزار آهي آن لائن بدمعاش کي سزا ڏيڻ لاء. سچ، ان جي ابتڙ، ڪنهن خاص سرور جي غير معمولي رويي ڏانهن ڌيان ڇڪائڻ ۾ ڪجهه خطرو آهي. ڪو انتقام جي باري ۾ سوچيو ۽ توهان جي IP تي هڪ ٽارگيٽ ڪيل DDoS حملو. بهرحال، اڃا تائين اهڙا ڪيس نه آهن، ۽ tarpits عظيم ڪم ڪن ٿا.

مرڪز:
پٿون، انفارميشن سيڪيورٽي، سافٽ ويئر، سسٽم ايڊمنسٽريشن

ٽيگ:
سَڇَ ، اَڻ پَٽُ ، تَرَپَٽُ ، تَرَپِٽُ ، ڦِري ، اَسِيڪو
ايندڙ SSH ڪنيڪشن لاء ٽرپ (tarpit).

اهو ڪو راز ناهي ته انٽرنيٽ هڪ تمام دشمن ماحول آهي. جيترو جلدي توهان سرور کي وڌايو، اهو فوري طور تي وڏي حملن ۽ گهڻن اسڪين جي تابع آهي. مثال طور سيڪيورٽي گارڊن کان ماکيءَ جو پٽو توهان اندازو لڳائي سگهو ٿا هن گندگي جي ٽرئفڪ جي ماپ. حقيقت ۾، سراسري سرور تي، ٽرئفڪ جو 99٪ خراب ٿي سگھي ٿو.

ترپٽ هڪ ٽرپ پورٽ آهي جيڪو ايندڙ رابطن کي سست ڪرڻ لاءِ استعمال ٿيندو آهي. جيڪڏهن ٽئين پارٽي سسٽم هن بندرگاهه سان ڳنڍي ٿي، توهان جلدي ڪنيڪشن کي بند ڪرڻ جي قابل نه هوندا. هن کي پنهنجي سسٽم جي وسيلن کي ضايع ڪرڻو پوندو ۽ انتظار ڪرڻو پوندو جيستائين ڪنيڪشن جو وقت ختم ٿئي، يا دستي طور تي ان کي ختم ڪيو وڃي.

گهڻو ڪري، tarpits تحفظ لاء استعمال ٿيندا آهن. ٽيڪنڪ پهريون ڀيرو ڪمپيوٽر جي ورم کان بچائڻ لاء تيار ڪئي وئي هئي. ۽ ھاڻي اھو استعمال ڪري سگھجي ٿو اسپامرز ۽ محققن جي زندگين کي برباد ڪرڻ لاءِ جيڪي ھڪڙي قطار ۾ سڀني IP پتي جي وسيع اسڪيننگ ۾ مصروف آھن (مثال طور Habré تي: آسٽريا, اکرين).

سسٽم ايڊمنسٽريٽرن مان هڪ ڪرس ويلنز نالي هڪ شخص ظاهري طور تي هن بي عزتي کي ڏسي ٿڪجي پيو هو - ۽ هن هڪ ننڍڙو پروگرام لکيو. لاتعداد، SSH لاءِ هڪ تارپٽ جيڪو ايندڙ ڪنيڪشن کي سست ڪري ٿو. پروگرام هڪ بندرگاهه کوليندو آهي (ٽيسٽنگ لاءِ ڊفالٽ پورٽ 2222 آهي) ۽ هڪ SSH سرور هجڻ جو دعويٰ ڪري ٿو، پر حقيقت ۾ اهو اچڻ واري ڪلائنٽ سان لامحدود ڪنيڪشن قائم ڪري ٿو جيستائين اهو ڏئي ڇڏي. اهو ڪيترن ئي ڏينهن تائين جاري رهي سگهي ٿو يا وڌيڪ جيستائين ڪلائنٽ بند نه ٿئي.

افاديت جي انسٽاليشن:

$ make
$ ./endlessh &
$ ssh -p2222 localhost

صحيح طريقي سان لاڳو ٿيل ٽرپٽ حملي ڪندڙ کان وڌيڪ وسيلا وٺي ويندا توهان کان. پر اهو به وسيلن جو معاملو ناهي. ليکڪ هن لکيو آهي تهته پروگرام لت آهي. هن وقت ان ۾ 27 ڪلائنٽ ڦاٿل آهن، انهن مان ڪجهه هفتن لاءِ ڳنڍيل آهن. سرگرمي جي چوٽي تي، 1378 ڪلائنٽ 20 ڪلاڪن تائين پھنس ويا!

آپريٽنگ موڊ ۾، Endlesssh سرور کي معمول جي بندرگاهن 22 تي انسٽال ڪرڻ جي ضرورت آهي، جتي غنڊا ٽوڙيندا آهن. معياري حفاظتي سفارشون هميشه SSH کي مختلف بندرگاهن ڏانهن منتقل ڪرڻ جي صلاح ڏين ٿيون، جيڪو فوري طور تي لاگ ان جي ماپ کي گھٽائي ٿو.

ڪرس ويلنس چوي ٿو ته هن جو پروگرام وضاحت جي هڪ پيراگراف کي استحصال ڪري ٿو آر ايف سي سي ايم ايس SSH پروٽوڪول ڏانهن. TCP ڪنيڪشن قائم ٿيڻ کان فوري پوءِ، پر ان کان اڳ جو ڪرپٽ گرافي لاڳو ٿئي، ٻنهي ڌرين کي لازمي طور تي هڪ سڃاڻپ واري تار موڪلڻ گهرجي. ۽ اتي پڻ هڪ نوٽ آهي: "سرور ورزن قطار موڪلڻ کان اڳ ڊيٽا جون ٻيون قطارون موڪلي سگھي ٿو". ۽ ڪابه حد ناهي هن ڊيٽا جي مقدار تي، توهان کي صرف هر لڪير سان شروع ڪرڻ جي ضرورت آهي SSH-.

اھو اھو آھي جيڪو لامحدود پروگرام ڪندو آھي: اھو موڪليو لامتناہی بي ترتيب ٺاهيل ڊيٽا جو وهڪرو، جيڪو RFC 4253 سان مطابقت رکي ٿو، اهو آهي، تصديق ڪرڻ کان اڳ موڪليو، ۽ هر لائن شروع ٿئي ٿي SSH- ۽ 255 اکرن کان وڌيڪ نه هجي، جنهن ۾ لڪير جي پڇاڙي وارو ڪردار به شامل آهي. عام طور تي، هر شيء معيار جي مطابق آهي.

ڊفالٽ طور، پروگرام پيڪٽ موڪلڻ جي وچ ۾ 10 سيڪنڊن جو انتظار ڪري ٿو. هي ڪلائنٽ کي وقت ختم ٿيڻ کان روڪي ٿو، تنهنڪري ڪلائنٽ هميشه لاء ڦاسي ويندو.

جيئن ته ڊيٽا موڪلڻ کان اڳ ڪرپٽوگرافي لاڳو ٿئي ٿي، پروگرام تمام سادو آهي. اهو ڪنهن به سيفرن کي لاڳو ڪرڻ جي ضرورت ناهي ۽ ڪيترن ئي پروٽوڪول کي سپورٽ ڪري ٿو.

ليکڪ کي يقيني بڻائڻ جي ڪوشش ڪئي وئي ته افاديت گهٽ ۾ گهٽ وسيلن کي استعمال ڪري ٿو ۽ مشين تي مڪمل طور تي اڻڄاتل ڪم ڪري ٿو. جديد اينٽي وائرس ۽ ٻين "سيڪيورٽي سسٽم" جي برعڪس، اهو توهان جي ڪمپيوٽر کي سست نه ڪرڻ گهرجي. هن ٿورو وڌيڪ چالاڪ سافٽ ويئر لاڳو ڪرڻ جي ڪري ٽرئفڪ ۽ ياداشت جي استعمال کي گهٽائڻ ۾ مدد ڪئي. جيڪڏهن اهو آسان طور تي هڪ نئين ڪنيڪشن تي هڪ الڳ عمل شروع ڪيو، ته پوء امڪاني حملي ڪندڙ مشين تي وسيلن کي ختم ڪرڻ لاء ڪيترن ئي ڪنيڪشن کي کولڻ سان هڪ DDoS حملو شروع ڪري سگهي ٿو. ھڪڙي سلسلي في ڪنيڪشن پڻ بھترين اختيار نه آھي، ڇاڪاڻ⁠تہ ڪنييل وسيلن کي ٿريڊز کي منظم ڪرڻ ۾ ضايع ڪندو.

اهو ئي سبب آهي ته ڪرس ويلونز چونڊيو آهي سڀ کان وڌيڪ ٿلهي آپشن لاءِ Endlessh: هڪ واحد موضوع وارو سرور poll(2)، جتي ٽريپ ۾ موجود گراهڪ عملي طور تي ڪو به اضافي وسيلا استعمال نٿا ڪن ، ڪنيل ۾ ساکٽ اعتراض کي ڳڻڻ نه ٿا ڏين ۽ Endlessh ۾ ٽريڪنگ لاءِ ٻيو 78 بائيٽ. هر ڪلائنٽ لاءِ وصول ڪرڻ ۽ موڪلڻ وارا بفر مختص ڪرڻ کان بچڻ لاءِ، Endlessh هڪ سڌي رسائي ساکٽ کولي ٿو ۽ سڌو سنئون TCP پيڪٽس جو ترجمو ڪري ٿو، تقريبن سڄي آپريٽنگ سسٽم TCP/IP اسٽيڪ کي پاس ڪندي. ايندڙ بفر جي ڪا به ضرورت نه آهي، ڇو ته اسان کي ايندڙ ڊيٽا ۾ دلچسپي نه آهي.

ليکڪ جو چوڻ آهي ته سندس پروگرام جي وقت ۾ خبر ناهي پٿون جي اسڪيو ۽ ٻين تارپٽس جي وجود بابت. جيڪڏهن هو asycio بابت ڄاڻندو هو، ته هو پٿون ۾ صرف 18 لائينن ۾ پنهنجي افاديت کي لاڳو ڪري سگهي ٿو:

import asyncio
import random

async def handler(_reader, writer):
try:
while True:
await asyncio.sleep(10)
writer.write(b'%xrn' % random.randint(0, 2**32))
await writer.drain()
except ConnectionResetError:
pass

async def main():
server = await asyncio.start_server(handler, '0.0.0.0', 2222)
async with server:
await server.serve_forever()

asyncio.run(main())

Asyncio tarpits لکڻ لاء مثالي آهي. مثال طور، هي ٿلهو فائر فاکس، ڪروم، يا ڪنهن ٻئي ڪلائنٽ کي منجمد ڪندو جيڪو ڪيترن ئي ڪلاڪن تائين توهان جي HTTP سرور سان ڳنڍڻ جي ڪوشش ڪري رهيو آهي:

import asyncio
import random

async def handler(_reader, writer):
writer.write(b'HTTP/1.1 200 OKrn')
try:
while True:
await asyncio.sleep(5)
header = random.randint(0, 2**32)
value = random.randint(0, 2**32)
writer.write(b'X-%x: %xrn' % (header, value))
await writer.drain()
except ConnectionResetError:
pass

async def main():
server = await asyncio.start_server(handler, '0.0.0.0', 8080)
async with server:
await server.serve_forever()

asyncio.run(main())

Tarpit هڪ بهترين اوزار آهي آن لائن بدمعاش کي سزا ڏيڻ لاء. سچ، ان جي ابتڙ، ڪنهن خاص سرور جي غير معمولي رويي ڏانهن ڌيان ڇڪائڻ ۾ ڪجهه خطرو آهي. ڪو انتقام جي باري ۾ سوچيو ۽ توهان جي IP تي هڪ ٽارگيٽ ڪيل DDoS حملو. بهرحال، اڃا تائين اهڙا ڪيس نه آهن، ۽ tarpits عظيم ڪم ڪن ٿا.

ايندڙ SSH ڪنيڪشن لاء ٽرپ (tarpit).

جو ذريعو: www.habr.com

تبصرو شامل ڪريو