دا پټه نه ده چې انټرنیټ یو ډیر دښمنانه چاپیریال دی. هرڅومره ژر چې تاسو سرور پورته کړئ ، دا سمدلاسه د لوی بریدونو او ډیری سکینونو تابع کیږي. د مثال په ډول
ټارپیټ د جال بندر دی چې د راتلونکو اړیکو ورو کولو لپاره کارول کیږي. که چیرې د دریمې ډلې سیسټم له دې بندر سره وصل شي، نو تاسو به نشئ کولی په چټکۍ سره اړیکه بنده کړئ. هغه باید د خپل سیسټم سرچینې ضایع کړي او د پیوستون وخت پای ته رسیدو پورې انتظار وکړي، یا په لاسي ډول یې پای ته ورسوي.
ډیری وختونه، تورپټونه د ساتنې لپاره کارول کیږي. دا تخنیک په لومړي ځل د کمپیوټر د ورمونو په وړاندې د ساتنې لپاره رامینځته شوی. او اوس دا د سپیمرانو او څیړونکو ژوند خرابولو لپاره کارول کیدی شي څوک چې په قطار کې د ټولو IP پتې پراخه سکین کولو کې بوخت دي (د هابرې مثالونه:
د کریس ویلون په نوم د سیسټم یو مدیر ظاهرا د دې سپکاوي په لیدو ستړی شوی - او هغه یو کوچنی برنامه لیکلې.
د کارونې نصبول:
$ make
$ ./endlessh &
$ ssh -p2222 localhost
په سمه توګه پلي شوی ټرپیټ به ستاسو څخه د برید کونکي څخه ډیرې سرچینې واخلي. مګر دا د سرچینو خبره هم نه ده. لیکوال
په عملیاتي حالت کې، د Endlessh سرور باید په معمول پورټ 22 کې نصب شي، چیرته چې غله په ډله ایز ډول ټکوي. د معیاري امنیت سپارښتنې تل د SSH مختلف بندر ته د حرکت کولو مشوره ورکوي، کوم چې سمدلاسه د لوګو اندازه د اندازې په ترتیب سره کموي.
کریس ویلونز وايي چې د هغه برنامه د توضیحاتو یوه پراګراف کاروي SSH-
.
دا په حقیقت کې هغه څه دي چې د نه ختمیدونکي برنامه یې کوي: دا لیږي بې پای د تصادفي تولید شوي معلوماتو جریان، کوم چې د RFC 4253 سره مطابقت لري ، دا د تصدیق کولو دمخه لیږل کیږي ، او هره کرښه له سره پیل کیږي SSH-
او د 255 حروفو څخه زیات نه وي، په شمول د کرښې پای کریکټر. په عموم کې، هرڅه د معیار سره سم دي.
په ډیفالټ ، برنامه د پاکټونو لیږلو ترمینځ 10 ثانیې انتظار کوي. دا د پیرودونکي د وخت پای ته رسیدو مخه نیسي، نو پیرودونکي به د تل لپاره بند شي.
څنګه چې معلومات د کریپټوګرافي پلي کیدو دمخه لیږل کیږي ، نو برنامه خورا ساده ده. دا د کوم سیفرونو پلي کولو ته اړتیا نلري او د ډیری پروتوکولونو ملاتړ کوي.
لیکوال هڅه کړې چې ډاډ ترلاسه کړي چې دا کار لږترلږه سرچینې مصرفوي او په ماشین کې په بشپړ ډول د پام وړ کار کوي. د عصري انټي ویروسونو او نورو "امنیتي سیسټمونو" برخلاف ، دا باید ستاسو کمپیوټر ورو نه کړي. هغه د یو څه ډیر چالاک سافټویر پلي کولو له امله د ترافیک او حافظې مصرف دواړه کم کړي. که دا په ساده ډول په نوي پیوستون کې جلا پروسه پیل کړي ، نو احتمالي برید کونکي کولی شي په ماشین کې د سرچینو لرې کولو لپاره د ډیری ارتباطاتو په خلاصولو سره د DDoS برید پیل کړي. په هر پیوستون کې یو تار هم غوره انتخاب نه دی، ځکه چې کرنل به د تارونو اداره کولو سرچینې ضایع کړي.
له همدې امله کریس ویلون د انډیلیسش لپاره خورا سپک وزن انتخاب غوره کړ: یو واحد تاریډ سرور 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، Endlesssh، tarpit، tarpit، trap، asycio
د راتلونکو SSH اتصالاتو لپاره جال (تارپیټ).
دا پټه نه ده چې انټرنیټ یو ډیر دښمنانه چاپیریال دی. هرڅومره ژر چې تاسو سرور پورته کړئ ، دا سمدلاسه د لوی بریدونو او ډیری سکینونو تابع کیږي. د مثال په ډول
ټارپیټ د جال بندر دی چې د راتلونکو اړیکو ورو کولو لپاره کارول کیږي. که چیرې د دریمې ډلې سیسټم له دې بندر سره وصل شي، نو تاسو به نشئ کولی په چټکۍ سره اړیکه بنده کړئ. هغه باید د خپل سیسټم سرچینې ضایع کړي او د پیوستون وخت پای ته رسیدو پورې انتظار وکړي، یا په لاسي ډول یې پای ته ورسوي.
ډیری وختونه، تورپټونه د ساتنې لپاره کارول کیږي. دا تخنیک په لومړي ځل د کمپیوټر د ورمونو په وړاندې د ساتنې لپاره رامینځته شوی. او اوس دا د سپیمرانو او څیړونکو ژوند خرابولو لپاره کارول کیدی شي څوک چې په قطار کې د ټولو IP پتې پراخه سکین کولو کې بوخت دي (د هابرې مثالونه:
د کریس ویلون په نوم د سیسټم یو مدیر ظاهرا د دې سپکاوي په لیدو ستړی شوی - او هغه یو کوچنی برنامه لیکلې.
د کارونې نصبول:
$ make
$ ./endlessh &
$ ssh -p2222 localhost
په سمه توګه پلي شوی ټرپیټ به ستاسو څخه د برید کونکي څخه ډیرې سرچینې واخلي. مګر دا د سرچینو خبره هم نه ده. لیکوال
په عملیاتي حالت کې، د Endlessh سرور باید په معمول پورټ 22 کې نصب شي، چیرته چې غله په ډله ایز ډول ټکوي. د معیاري امنیت سپارښتنې تل د SSH مختلف بندر ته د حرکت کولو مشوره ورکوي، کوم چې سمدلاسه د لوګو اندازه د اندازې په ترتیب سره کموي.
کریس ویلونز وايي چې د هغه برنامه د توضیحاتو یوه پراګراف کاروي SSH-
.
دا په حقیقت کې هغه څه دي چې د نه ختمیدونکي برنامه یې کوي: دا لیږي بې پای د تصادفي تولید شوي معلوماتو جریان، کوم چې د RFC 4253 سره مطابقت لري ، دا د تصدیق کولو دمخه لیږل کیږي ، او هره کرښه له سره پیل کیږي SSH-
او د 255 حروفو څخه زیات نه وي، په شمول د کرښې پای کریکټر. په عموم کې، هرڅه د معیار سره سم دي.
په ډیفالټ ، برنامه د پاکټونو لیږلو ترمینځ 10 ثانیې انتظار کوي. دا د پیرودونکي د وخت پای ته رسیدو مخه نیسي، نو پیرودونکي به د تل لپاره بند شي.
څنګه چې معلومات د کریپټوګرافي پلي کیدو دمخه لیږل کیږي ، نو برنامه خورا ساده ده. دا د کوم سیفرونو پلي کولو ته اړتیا نلري او د ډیری پروتوکولونو ملاتړ کوي.
لیکوال هڅه کړې چې ډاډ ترلاسه کړي چې دا کار لږترلږه سرچینې مصرفوي او په ماشین کې په بشپړ ډول د پام وړ کار کوي. د عصري انټي ویروسونو او نورو "امنیتي سیسټمونو" برخلاف ، دا باید ستاسو کمپیوټر ورو نه کړي. هغه د یو څه ډیر چالاک سافټویر پلي کولو له امله د ترافیک او حافظې مصرف دواړه کم کړي. که دا په ساده ډول په نوي پیوستون کې جلا پروسه پیل کړي ، نو احتمالي برید کونکي کولی شي په ماشین کې د سرچینو لرې کولو لپاره د ډیری ارتباطاتو په خلاصولو سره د DDoS برید پیل کړي. په هر پیوستون کې یو تار هم غوره انتخاب نه دی، ځکه چې کرنل به د تارونو اداره کولو سرچینې ضایع کړي.
له همدې امله کریس ویلون د انډیلیسش لپاره خورا سپک وزن انتخاب غوره کړ: یو واحد تاریډ سرور 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