د راتلونکو SSH اتصالاتو لپاره جال (تارپیټ).

دا پټه نه ده چې انټرنیټ یو ډیر دښمنانه چاپیریال دی. هرڅومره ژر چې تاسو سرور پورته کړئ ، دا سمدلاسه د لوی بریدونو او ډیری سکینونو تابع کیږي. د مثال په ډول د امنیتي ساتونکو څخه د شاتو کڅوړه تاسو کولی شئ د دې کثافاتو ترافیک اندازه اټکل کړئ. په حقیقت کې، په اوسط سرور کې، 99٪ ټرافيک ممکن ناوړه وي.

ټارپیټ د جال بندر دی چې د راتلونکو اړیکو ورو کولو لپاره کارول کیږي. که چیرې د دریمې ډلې سیسټم له دې بندر سره وصل شي، نو تاسو به نشئ کولی په چټکۍ سره اړیکه بنده کړئ. هغه باید د خپل سیسټم سرچینې ضایع کړي او د پیوستون وخت پای ته رسیدو پورې انتظار وکړي، یا په لاسي ډول یې پای ته ورسوي.

ډیری وختونه، تورپټونه د ساتنې لپاره کارول کیږي. دا تخنیک په لومړي ځل د کمپیوټر د ورمونو په وړاندې د ساتنې لپاره رامینځته شوی. او اوس دا د سپیمرانو او څیړونکو ژوند خرابولو لپاره کارول کیدی شي څوک چې په قطار کې د ټولو IP پتې پراخه سکین کولو کې بوخت دي (د هابرې مثالونه: اتریش, د اوکراین).

د کریس ویلون په نوم د سیسټم یو مدیر ظاهرا د دې سپکاوي په لیدو ستړی شوی - او هغه یو کوچنی برنامه لیکلې. بې پایه, د SSH لپاره یو tarpit چې راتلونکی اړیکې ورو کوي. برنامه یو بندر خلاصوي (د ازموینې لپاره ډیفالټ پورټ 2222 دی) او د SSH سرور ښکارندوی کوي ، مګر په حقیقت کې دا د راتلونکي پیرودونکي سره نه ختمیدونکي اړیکه رامینځته کوي تر هغه چې دا پریږدي. دا کیدای شي د څو ورځو یا ډیرو لپاره دوام وکړي تر هغه چې پیرودونکي راټیټ شي.

د کارونې نصبول:

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

په سمه توګه پلي شوی ټرپیټ به ستاسو څخه د برید کونکي څخه ډیرې سرچینې واخلي. مګر دا د سرچینو خبره هم نه ده. لیکوال هغه ليکيچې برنامه روږدي ده. اوس مهال دا 27 پیرودونکي نیول شوي، ځینې یې د اونیو لپاره تړلي دي. د فعالیت په چوکۍ کې، 1378 پیرودونکي د 20 ساعتونو لپاره بند پاتې وو!

په عملیاتي حالت کې، د Endlessh سرور باید په معمول پورټ 22 کې نصب شي، چیرته چې غله په ډله ایز ډول ټکوي. د معیاري امنیت سپارښتنې تل د SSH مختلف بندر ته د حرکت کولو مشوره ورکوي، کوم چې سمدلاسه د لوګو اندازه د اندازې په ترتیب سره کموي.

کریس ویلونز وايي چې د هغه برنامه د توضیحاتو یوه پراګراف کاروي RFC 4253 د SSH پروتوکول ته. سمدلاسه وروسته له دې چې د TCP اړیکې رامینځته شي ، مګر مخکې لدې چې کریپټوګرافي پلي شي ، دواړه خواوې باید د پیژندنې تار واستوي. او یو یادونه هم شتون لري: "سرور ممکن د نسخې قطار لیږلو دمخه د معلوماتو نور قطارونه واستوي". او هیڅ حد نشته د دې ډاټا په حجم کې، تاسو اړتیا لرئ چې هره کرښه له سره پیل کړئ SSH-.

دا په حقیقت کې هغه څه دي چې د نه ختمیدونکي برنامه یې کوي: دا لیږي بې پای د تصادفي تولید شوي معلوماتو جریان، کوم چې د RFC 4253 سره مطابقت لري ، دا د تصدیق کولو دمخه لیږل کیږي ، او هره کرښه له سره پیل کیږي SSH- او د 255 حروفو څخه زیات نه وي، په شمول د کرښې پای کریکټر. په عموم کې، هرڅه د معیار سره سم دي.

په ډیفالټ ، برنامه د پاکټونو لیږلو ترمینځ 10 ثانیې انتظار کوي. دا د پیرودونکي د وخت پای ته رسیدو مخه نیسي، نو پیرودونکي به د تل لپاره بند شي.

څنګه چې معلومات د کریپټوګرافي پلي کیدو دمخه لیږل کیږي ، نو برنامه خورا ساده ده. دا د کوم سیفرونو پلي کولو ته اړتیا نلري او د ډیری پروتوکولونو ملاتړ کوي.

لیکوال هڅه کړې چې ډاډ ترلاسه کړي چې دا کار لږترلږه سرچینې مصرفوي او په ماشین کې په بشپړ ډول د پام وړ کار کوي. د عصري انټي ویروسونو او نورو "امنیتي سیسټمونو" برخلاف ، دا باید ستاسو کمپیوټر ورو نه کړي. هغه د یو څه ډیر چالاک سافټویر پلي کولو له امله د ترافیک او حافظې مصرف دواړه کم کړي. که دا په ساده ډول په نوي پیوستون کې جلا پروسه پیل کړي ، نو احتمالي برید کونکي کولی شي په ماشین کې د سرچینو لرې کولو لپاره د ډیری ارتباطاتو په خلاصولو سره د DDoS برید پیل کړي. په هر پیوستون کې یو تار هم غوره انتخاب نه دی، ځکه چې کرنل به د تارونو اداره کولو سرچینې ضایع کړي.

له همدې امله کریس ویلون د انډیلیسش لپاره خورا سپک وزن انتخاب غوره کړ: یو واحد تاریډ سرور poll(2)، چیرې چې په جال کې پیرودونکي په حقیقت کې هیڅ اضافي سرچینې نه مصرفوي ، په کرنل کې د ساکټ څیز نه شمیرل کیږي او په Endlessh کې د تعقیب لپاره نور 78 بایټونه. د دې لپاره چې د هر پیرودونکي لپاره د ترلاسه کولو او لیږلو بفرونو تخصیص څخه مخنیوی وشي، Endlessh د مستقیم لاسرسي ساکټ پرانیزي او د TCP پیکټونه په مستقیم ډول وژباړي، تقریبا د ټول عملیاتي سیسټم TCP/IP سټیک څخه تیریږي. راتلونکی بفر ته اړتیا نشته، ځکه چې موږ د راتلونکو معلوماتو سره علاقه نه لرو.

لیکوال وايي چې د خپل پروګرام په وخت کې نه پوهیده د Python asycio او نورو tarpits شتون په اړه. که هغه د asycio په اړه پوهیده، نو هغه کولی شي په Python کې یوازې 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 نښه شوي برید. په هرصورت، تر دې دمه داسې کومه قضیه نه ده رامینځته شوې، او تورپټونه خورا ښه کار کوي.

مرکزونه:
پایتون، د معلوماتو امنیت، سافټویر، سیسټم اداره

پېژند توري:
SSH، Endlesssh، tarpit، tarpit، trap، asycio
د راتلونکو SSH اتصالاتو لپاره جال (تارپیټ).

دا پټه نه ده چې انټرنیټ یو ډیر دښمنانه چاپیریال دی. هرڅومره ژر چې تاسو سرور پورته کړئ ، دا سمدلاسه د لوی بریدونو او ډیری سکینونو تابع کیږي. د مثال په ډول د امنیتي ساتونکو څخه د شاتو کڅوړه تاسو کولی شئ د دې کثافاتو ترافیک اندازه اټکل کړئ. په حقیقت کې، په اوسط سرور کې، 99٪ ټرافيک ممکن ناوړه وي.

ټارپیټ د جال بندر دی چې د راتلونکو اړیکو ورو کولو لپاره کارول کیږي. که چیرې د دریمې ډلې سیسټم له دې بندر سره وصل شي، نو تاسو به نشئ کولی په چټکۍ سره اړیکه بنده کړئ. هغه باید د خپل سیسټم سرچینې ضایع کړي او د پیوستون وخت پای ته رسیدو پورې انتظار وکړي، یا په لاسي ډول یې پای ته ورسوي.

ډیری وختونه، تورپټونه د ساتنې لپاره کارول کیږي. دا تخنیک په لومړي ځل د کمپیوټر د ورمونو په وړاندې د ساتنې لپاره رامینځته شوی. او اوس دا د سپیمرانو او څیړونکو ژوند خرابولو لپاره کارول کیدی شي څوک چې په قطار کې د ټولو IP پتې پراخه سکین کولو کې بوخت دي (د هابرې مثالونه: اتریش, د اوکراین).

د کریس ویلون په نوم د سیسټم یو مدیر ظاهرا د دې سپکاوي په لیدو ستړی شوی - او هغه یو کوچنی برنامه لیکلې. بې پایه, د SSH لپاره یو tarpit چې راتلونکی اړیکې ورو کوي. برنامه یو بندر خلاصوي (د ازموینې لپاره ډیفالټ پورټ 2222 دی) او د SSH سرور ښکارندوی کوي ، مګر په حقیقت کې دا د راتلونکي پیرودونکي سره نه ختمیدونکي اړیکه رامینځته کوي تر هغه چې دا پریږدي. دا کیدای شي د څو ورځو یا ډیرو لپاره دوام وکړي تر هغه چې پیرودونکي راټیټ شي.

د کارونې نصبول:

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

په سمه توګه پلي شوی ټرپیټ به ستاسو څخه د برید کونکي څخه ډیرې سرچینې واخلي. مګر دا د سرچینو خبره هم نه ده. لیکوال هغه ليکيچې برنامه روږدي ده. اوس مهال دا 27 پیرودونکي نیول شوي، ځینې یې د اونیو لپاره تړلي دي. د فعالیت په چوکۍ کې، 1378 پیرودونکي د 20 ساعتونو لپاره بند پاتې وو!

په عملیاتي حالت کې، د Endlessh سرور باید په معمول پورټ 22 کې نصب شي، چیرته چې غله په ډله ایز ډول ټکوي. د معیاري امنیت سپارښتنې تل د SSH مختلف بندر ته د حرکت کولو مشوره ورکوي، کوم چې سمدلاسه د لوګو اندازه د اندازې په ترتیب سره کموي.

کریس ویلونز وايي چې د هغه برنامه د توضیحاتو یوه پراګراف کاروي RFC 4253 د SSH پروتوکول ته. سمدلاسه وروسته له دې چې د TCP اړیکې رامینځته شي ، مګر مخکې لدې چې کریپټوګرافي پلي شي ، دواړه خواوې باید د پیژندنې تار واستوي. او یو یادونه هم شتون لري: "سرور ممکن د نسخې قطار لیږلو دمخه د معلوماتو نور قطارونه واستوي". او هیڅ حد نشته د دې ډاټا په حجم کې، تاسو اړتیا لرئ چې هره کرښه له سره پیل کړئ SSH-.

دا په حقیقت کې هغه څه دي چې د نه ختمیدونکي برنامه یې کوي: دا لیږي بې پای د تصادفي تولید شوي معلوماتو جریان، کوم چې د RFC 4253 سره مطابقت لري ، دا د تصدیق کولو دمخه لیږل کیږي ، او هره کرښه له سره پیل کیږي SSH- او د 255 حروفو څخه زیات نه وي، په شمول د کرښې پای کریکټر. په عموم کې، هرڅه د معیار سره سم دي.

په ډیفالټ ، برنامه د پاکټونو لیږلو ترمینځ 10 ثانیې انتظار کوي. دا د پیرودونکي د وخت پای ته رسیدو مخه نیسي، نو پیرودونکي به د تل لپاره بند شي.

څنګه چې معلومات د کریپټوګرافي پلي کیدو دمخه لیږل کیږي ، نو برنامه خورا ساده ده. دا د کوم سیفرونو پلي کولو ته اړتیا نلري او د ډیری پروتوکولونو ملاتړ کوي.

لیکوال هڅه کړې چې ډاډ ترلاسه کړي چې دا کار لږترلږه سرچینې مصرفوي او په ماشین کې په بشپړ ډول د پام وړ کار کوي. د عصري انټي ویروسونو او نورو "امنیتي سیسټمونو" برخلاف ، دا باید ستاسو کمپیوټر ورو نه کړي. هغه د یو څه ډیر چالاک سافټویر پلي کولو له امله د ترافیک او حافظې مصرف دواړه کم کړي. که دا په ساده ډول په نوي پیوستون کې جلا پروسه پیل کړي ، نو احتمالي برید کونکي کولی شي په ماشین کې د سرچینو لرې کولو لپاره د ډیری ارتباطاتو په خلاصولو سره د DDoS برید پیل کړي. په هر پیوستون کې یو تار هم غوره انتخاب نه دی، ځکه چې کرنل به د تارونو اداره کولو سرچینې ضایع کړي.

له همدې امله کریس ویلون د انډیلیسش لپاره خورا سپک وزن انتخاب غوره کړ: یو واحد تاریډ سرور poll(2)، چیرې چې په جال کې پیرودونکي په حقیقت کې هیڅ اضافي سرچینې نه مصرفوي ، په کرنل کې د ساکټ څیز نه شمیرل کیږي او په Endlessh کې د تعقیب لپاره نور 78 بایټونه. د دې لپاره چې د هر پیرودونکي لپاره د ترلاسه کولو او لیږلو بفرونو تخصیص څخه مخنیوی وشي، Endlessh د مستقیم لاسرسي ساکټ پرانیزي او د TCP پیکټونه په مستقیم ډول وژباړي، تقریبا د ټول عملیاتي سیسټم TCP/IP سټیک څخه تیریږي. راتلونکی بفر ته اړتیا نشته، ځکه چې موږ د راتلونکو معلوماتو سره علاقه نه لرو.

لیکوال وايي چې د خپل پروګرام په وخت کې نه پوهیده د Python asycio او نورو tarpits شتون په اړه. که هغه د asycio په اړه پوهیده، نو هغه کولی شي په Python کې یوازې 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 نښه شوي برید. په هرصورت، تر دې دمه داسې کومه قضیه نه ده رامینځته شوې، او تورپټونه خورا ښه کار کوي.

د راتلونکو SSH اتصالاتو لپاره جال (تارپیټ).

سرچینه: www.habr.com

Add a comment