اهو ڪو راز ناهي ته انٽرنيٽ هڪ تمام دشمن ماحول آهي. جيترو جلدي توهان سرور کي وڌايو، اهو فوري طور تي وڏي حملن ۽ گهڻن اسڪين جي تابع آهي. مثال طور
ترپٽ هڪ ٽرپ پورٽ آهي جيڪو ايندڙ رابطن کي سست ڪرڻ لاءِ استعمال ٿيندو آهي. جيڪڏهن ٽئين پارٽي سسٽم هن بندرگاهه سان ڳنڍي ٿي، توهان جلدي ڪنيڪشن کي بند ڪرڻ جي قابل نه هوندا. هن کي پنهنجي سسٽم جي وسيلن کي ضايع ڪرڻو پوندو ۽ انتظار ڪرڻو پوندو جيستائين ڪنيڪشن جو وقت ختم ٿئي، يا دستي طور تي ان کي ختم ڪيو وڃي.
گهڻو ڪري، tarpits تحفظ لاء استعمال ٿيندا آهن. ٽيڪنڪ پهريون ڀيرو ڪمپيوٽر جي ورم کان بچائڻ لاء تيار ڪئي وئي هئي. ۽ ھاڻي اھو استعمال ڪري سگھجي ٿو اسپامرز ۽ محققن جي زندگين کي برباد ڪرڻ لاءِ جيڪي ھڪڙي قطار ۾ سڀني IP پتي جي وسيع اسڪيننگ ۾ مصروف آھن (مثال طور Habré تي:
سسٽم ايڊمنسٽريٽرن مان هڪ ڪرس ويلنز نالي هڪ شخص ظاهري طور تي هن بي عزتي کي ڏسي ٿڪجي پيو هو - ۽ هن هڪ ننڍڙو پروگرام لکيو.
افاديت جي انسٽاليشن:
$ make
$ ./endlessh &
$ ssh -p2222 localhost
صحيح طريقي سان لاڳو ٿيل ٽرپٽ حملي ڪندڙ کان وڌيڪ وسيلا وٺي ويندا توهان کان. پر اهو به وسيلن جو معاملو ناهي. ليکڪ
آپريٽنگ موڊ ۾، Endlesssh سرور کي معمول جي بندرگاهن 22 تي انسٽال ڪرڻ جي ضرورت آهي، جتي غنڊا ٽوڙيندا آهن. معياري حفاظتي سفارشون هميشه SSH کي مختلف بندرگاهن ڏانهن منتقل ڪرڻ جي صلاح ڏين ٿيون، جيڪو فوري طور تي لاگ ان جي ماپ کي گھٽائي ٿو.
ڪرس ويلنس چوي ٿو ته هن جو پروگرام وضاحت جي هڪ پيراگراف کي استحصال ڪري ٿو SSH-
.
اھو اھو آھي جيڪو لامحدود پروگرام ڪندو آھي: اھو موڪليو لامتناہی بي ترتيب ٺاهيل ڊيٽا جو وهڪرو، جيڪو RFC 4253 سان مطابقت رکي ٿو، اهو آهي، تصديق ڪرڻ کان اڳ موڪليو، ۽ هر لائن شروع ٿئي ٿي SSH-
۽ 255 اکرن کان وڌيڪ نه هجي، جنهن ۾ لڪير جي پڇاڙي وارو ڪردار به شامل آهي. عام طور تي، هر شيء معيار جي مطابق آهي.
ڊفالٽ طور، پروگرام پيڪٽ موڪلڻ جي وچ ۾ 10 سيڪنڊن جو انتظار ڪري ٿو. هي ڪلائنٽ کي وقت ختم ٿيڻ کان روڪي ٿو، تنهنڪري ڪلائنٽ هميشه لاء ڦاسي ويندو.
جيئن ته ڊيٽا موڪلڻ کان اڳ ڪرپٽوگرافي لاڳو ٿئي ٿي، پروگرام تمام سادو آهي. اهو ڪنهن به سيفرن کي لاڳو ڪرڻ جي ضرورت ناهي ۽ ڪيترن ئي پروٽوڪول کي سپورٽ ڪري ٿو.
ليکڪ کي يقيني بڻائڻ جي ڪوشش ڪئي وئي ته افاديت گهٽ ۾ گهٽ وسيلن کي استعمال ڪري ٿو ۽ مشين تي مڪمل طور تي اڻڄاتل ڪم ڪري ٿو. جديد اينٽي وائرس ۽ ٻين "سيڪيورٽي سسٽم" جي برعڪس، اهو توهان جي ڪمپيوٽر کي سست نه ڪرڻ گهرجي. هن ٿورو وڌيڪ چالاڪ سافٽ ويئر لاڳو ڪرڻ جي ڪري ٽرئفڪ ۽ ياداشت جي استعمال کي گهٽائڻ ۾ مدد ڪئي. جيڪڏهن اهو آسان طور تي هڪ نئين ڪنيڪشن تي هڪ الڳ عمل شروع ڪيو، ته پوء امڪاني حملي ڪندڙ مشين تي وسيلن کي ختم ڪرڻ لاء ڪيترن ئي ڪنيڪشن کي کولڻ سان هڪ DDoS حملو شروع ڪري سگهي ٿو. ھڪڙي سلسلي في ڪنيڪشن پڻ بھترين اختيار نه آھي، ڇاڪاڻتہ ڪنييل وسيلن کي ٿريڊز کي منظم ڪرڻ ۾ ضايع ڪندو.
اهو ئي سبب آهي ته ڪرس ويلونز چونڊيو آهي سڀ کان وڌيڪ ٿلهي آپشن لاءِ Endlessh: هڪ واحد موضوع وارو سرور poll(2)
، جتي ٽريپ ۾ موجود گراهڪ عملي طور تي ڪو به اضافي وسيلا استعمال نٿا ڪن ، ڪنيل ۾ ساکٽ اعتراض کي ڳڻڻ نه ٿا ڏين ۽ Endlessh ۾ ٽريڪنگ لاءِ ٻيو 78 بائيٽ. هر ڪلائنٽ لاءِ وصول ڪرڻ ۽ موڪلڻ وارا بفر مختص ڪرڻ کان بچڻ لاءِ، Endlessh هڪ سڌي رسائي ساکٽ کولي ٿو ۽ سڌو سنئون TCP پيڪٽس جو ترجمو ڪري ٿو، تقريبن سڄي آپريٽنگ سسٽم TCP/IP اسٽيڪ کي پاس ڪندي. ايندڙ بفر جي ڪا به ضرورت نه آهي، ڇو ته اسان کي ايندڙ ڊيٽا ۾ دلچسپي نه آهي.
ليکڪ جو چوڻ آهي ته سندس پروگرام جي وقت ۾
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 هڪ بهترين اوزار آهي آن لائن بدمعاش کي سزا ڏيڻ لاء. سچ، ان جي ابتڙ، ڪنهن خاص سرور جي غير معمولي رويي ڏانهن ڌيان ڇڪائڻ ۾ ڪجهه خطرو آهي. ڪو
مرڪز:
پٿون، انفارميشن سيڪيورٽي، سافٽ ويئر، سسٽم ايڊمنسٽريشن
ٽيگ:
سَڇَ ، اَڻ پَٽُ ، تَرَپَٽُ ، تَرَپِٽُ ، ڦِري ، اَسِيڪو
ايندڙ SSH ڪنيڪشن لاء ٽرپ (tarpit).
اهو ڪو راز ناهي ته انٽرنيٽ هڪ تمام دشمن ماحول آهي. جيترو جلدي توهان سرور کي وڌايو، اهو فوري طور تي وڏي حملن ۽ گهڻن اسڪين جي تابع آهي. مثال طور
ترپٽ هڪ ٽرپ پورٽ آهي جيڪو ايندڙ رابطن کي سست ڪرڻ لاءِ استعمال ٿيندو آهي. جيڪڏهن ٽئين پارٽي سسٽم هن بندرگاهه سان ڳنڍي ٿي، توهان جلدي ڪنيڪشن کي بند ڪرڻ جي قابل نه هوندا. هن کي پنهنجي سسٽم جي وسيلن کي ضايع ڪرڻو پوندو ۽ انتظار ڪرڻو پوندو جيستائين ڪنيڪشن جو وقت ختم ٿئي، يا دستي طور تي ان کي ختم ڪيو وڃي.
گهڻو ڪري، tarpits تحفظ لاء استعمال ٿيندا آهن. ٽيڪنڪ پهريون ڀيرو ڪمپيوٽر جي ورم کان بچائڻ لاء تيار ڪئي وئي هئي. ۽ ھاڻي اھو استعمال ڪري سگھجي ٿو اسپامرز ۽ محققن جي زندگين کي برباد ڪرڻ لاءِ جيڪي ھڪڙي قطار ۾ سڀني IP پتي جي وسيع اسڪيننگ ۾ مصروف آھن (مثال طور Habré تي:
سسٽم ايڊمنسٽريٽرن مان هڪ ڪرس ويلنز نالي هڪ شخص ظاهري طور تي هن بي عزتي کي ڏسي ٿڪجي پيو هو - ۽ هن هڪ ننڍڙو پروگرام لکيو.
افاديت جي انسٽاليشن:
$ make
$ ./endlessh &
$ ssh -p2222 localhost
صحيح طريقي سان لاڳو ٿيل ٽرپٽ حملي ڪندڙ کان وڌيڪ وسيلا وٺي ويندا توهان کان. پر اهو به وسيلن جو معاملو ناهي. ليکڪ
آپريٽنگ موڊ ۾، Endlesssh سرور کي معمول جي بندرگاهن 22 تي انسٽال ڪرڻ جي ضرورت آهي، جتي غنڊا ٽوڙيندا آهن. معياري حفاظتي سفارشون هميشه SSH کي مختلف بندرگاهن ڏانهن منتقل ڪرڻ جي صلاح ڏين ٿيون، جيڪو فوري طور تي لاگ ان جي ماپ کي گھٽائي ٿو.
ڪرس ويلنس چوي ٿو ته هن جو پروگرام وضاحت جي هڪ پيراگراف کي استحصال ڪري ٿو SSH-
.
اھو اھو آھي جيڪو لامحدود پروگرام ڪندو آھي: اھو موڪليو لامتناہی بي ترتيب ٺاهيل ڊيٽا جو وهڪرو، جيڪو RFC 4253 سان مطابقت رکي ٿو، اهو آهي، تصديق ڪرڻ کان اڳ موڪليو، ۽ هر لائن شروع ٿئي ٿي SSH-
۽ 255 اکرن کان وڌيڪ نه هجي، جنهن ۾ لڪير جي پڇاڙي وارو ڪردار به شامل آهي. عام طور تي، هر شيء معيار جي مطابق آهي.
ڊفالٽ طور، پروگرام پيڪٽ موڪلڻ جي وچ ۾ 10 سيڪنڊن جو انتظار ڪري ٿو. هي ڪلائنٽ کي وقت ختم ٿيڻ کان روڪي ٿو، تنهنڪري ڪلائنٽ هميشه لاء ڦاسي ويندو.
جيئن ته ڊيٽا موڪلڻ کان اڳ ڪرپٽوگرافي لاڳو ٿئي ٿي، پروگرام تمام سادو آهي. اهو ڪنهن به سيفرن کي لاڳو ڪرڻ جي ضرورت ناهي ۽ ڪيترن ئي پروٽوڪول کي سپورٽ ڪري ٿو.
ليکڪ کي يقيني بڻائڻ جي ڪوشش ڪئي وئي ته افاديت گهٽ ۾ گهٽ وسيلن کي استعمال ڪري ٿو ۽ مشين تي مڪمل طور تي اڻڄاتل ڪم ڪري ٿو. جديد اينٽي وائرس ۽ ٻين "سيڪيورٽي سسٽم" جي برعڪس، اهو توهان جي ڪمپيوٽر کي سست نه ڪرڻ گهرجي. هن ٿورو وڌيڪ چالاڪ سافٽ ويئر لاڳو ڪرڻ جي ڪري ٽرئفڪ ۽ ياداشت جي استعمال کي گهٽائڻ ۾ مدد ڪئي. جيڪڏهن اهو آسان طور تي هڪ نئين ڪنيڪشن تي هڪ الڳ عمل شروع ڪيو، ته پوء امڪاني حملي ڪندڙ مشين تي وسيلن کي ختم ڪرڻ لاء ڪيترن ئي ڪنيڪشن کي کولڻ سان هڪ DDoS حملو شروع ڪري سگهي ٿو. ھڪڙي سلسلي في ڪنيڪشن پڻ بھترين اختيار نه آھي، ڇاڪاڻتہ ڪنييل وسيلن کي ٿريڊز کي منظم ڪرڻ ۾ ضايع ڪندو.
اهو ئي سبب آهي ته ڪرس ويلونز چونڊيو آهي سڀ کان وڌيڪ ٿلهي آپشن لاءِ Endlessh: هڪ واحد موضوع وارو سرور poll(2)
، جتي ٽريپ ۾ موجود گراهڪ عملي طور تي ڪو به اضافي وسيلا استعمال نٿا ڪن ، ڪنيل ۾ ساکٽ اعتراض کي ڳڻڻ نه ٿا ڏين ۽ Endlessh ۾ ٽريڪنگ لاءِ ٻيو 78 بائيٽ. هر ڪلائنٽ لاءِ وصول ڪرڻ ۽ موڪلڻ وارا بفر مختص ڪرڻ کان بچڻ لاءِ، Endlessh هڪ سڌي رسائي ساکٽ کولي ٿو ۽ سڌو سنئون TCP پيڪٽس جو ترجمو ڪري ٿو، تقريبن سڄي آپريٽنگ سسٽم TCP/IP اسٽيڪ کي پاس ڪندي. ايندڙ بفر جي ڪا به ضرورت نه آهي، ڇو ته اسان کي ايندڙ ڊيٽا ۾ دلچسپي نه آهي.
ليکڪ جو چوڻ آهي ته سندس پروگرام جي وقت ۾
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 هڪ بهترين اوزار آهي آن لائن بدمعاش کي سزا ڏيڻ لاء. سچ، ان جي ابتڙ، ڪنهن خاص سرور جي غير معمولي رويي ڏانهن ڌيان ڇڪائڻ ۾ ڪجهه خطرو آهي. ڪو
جو ذريعو: www.habr.com