Дом (tarpit) барои пайвастҳои воридотии SSH

Ба касе пӯшида нест, ки Интернет як муҳити хеле душманона аст. Ҳамин ки шумо серверро баланд мекунед, он фавран ба ҳамлаҳои азим ва сканҳои сершумор дучор мешавад. Барои намуна асал аз посбонони амният миқёси ин трафики ахлотро тахмин кардан мумкин аст. Дар асл, дар сервери миёна, 99% трафик метавонад зараровар бошад.

Tarpit як бандари дом аст, ки барои суст кардани пайвастҳои воридотӣ истифода мешавад. Агар системаи тарафи сеюм ба ин порт пайваст шавад, шумо наметавонед пайвастро зуд пӯшед. Вай маҷбур мешавад, ки захираҳои системаи худро беҳуда сарф кунад ва то вақти пайвастшавиро интизор шавед ё онро дастӣ қатъ кунад.

Аксар вақт, тарпитҳо барои муҳофизат истифода мешаванд. Ин техника бори аввал барои муҳофизат аз кирмҳои компютерӣ таҳия шудааст. Ва ҳоло он метавонад барои вайрон кардани ҳаёти спаммерҳо ва муҳаққиқон истифода шавад, ки дар як саф бо сканкунии васеи ҳама суроғаҳои IP машғуланд (мисолҳо дар Habré: Австрия, Украина).

Яке аз маъмурони система бо номи Крис Веллонс зоҳиран аз тамошои ин нангин хаста шудааст - ва ӯ як барномаи хурде навишт. Беохир, тарпит барои SSH, ки пайвастҳои воридотро суст мекунад. Барнома портро мекушояд (порти пешфарз барои санҷиш 2222 аст) ва худро сервери SSH вонамуд мекунад, аммо дар асл бо муштарии воридотӣ то он даме, ки даст накашад, пайвасти беохир барқарор мекунад. Ин метавонад то чанд рӯз ё бештар аз он идома ёбад, то муштарӣ афтад.

Насби утилита:

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

Тарпити дуруст иҷрошуда аз ҳамлагар нисбат ба шумо захираҳои бештар мегирад. Аммо ин хатто масъалаи захирахо нест. Муаллиф Ӯ менависадки программа нашъаманд аст. Дар айни замон он 27 муштарӣ дар дом аст, ки баъзеи онҳо ҳафтаҳо пайвастанд. Дар авҷи фаъолият, 1378 муштарӣ дар тӯли 20 соат ба дом афтоданд!

Дар реҷаи корӣ сервери Endlessh бояд дар бандари муқаррарии 22 насб карда шавад, ки дар он авбошон оммавӣ мезананд. Тавсияҳои стандартии амният ҳамеша тавсия медиҳанд, ки SSH ба бандари дигар интиқол дода шавад, ки он фавран андозаи гузоришҳоро бо тартиби бузург коҳиш медиҳад.

Крис Веллонс мегӯяд, ки барномаи ӯ як параграфи мушаххасотро истифода мебарад RFC 4253 ба протоколи SSH. Дарҳол пас аз таъсиси пайвасти TCP, аммо пеш аз татбиқи криптография, ҳарду тараф бояд сатри мушаххасро фиристанд. Ва инчунин як ёддошт вуҷуд дорад: "Сервер метавонад пеш аз фиристодани сатри версия сатрҳои дигарро фиристад". Ва маҳдудият нест дар бораи ҳаҷми ин маълумот, шумо танҳо лозим аст, ки ҳар як сатрро бо SSH-.

Барномаи Endlessh маҳз ҳамин аст: он мефиристад беохир ҷараёни маълумоти тасодуфӣ тавлидшуда, ки ба RFC 4253 мувофиқат мекунад, яъне пеш аз тасдиқ фиристед ва ҳар як сатр бо он оғоз мешавад SSH- ва аз 255 аломат, аз ҷумла аломати охири сатр зиёд нест. Умуман, ҳама чиз мувофиқи стандарт аст.

Бо нобаёнӣ, барнома байни фиристодани бастаҳо 10 сония интизор мешавад. Ин имкон намедиҳад, ки муштарӣ аз мӯҳлат гузашта бошад, бинобар ин, муштарӣ то абад дар дом мемонад.

Азбаски маълумот пеш аз татбиқи криптография фиристода мешавад, барнома хеле содда аст. Он ба татбиқи ягон рамз ниёз надорад ва протоколҳои сершуморро дастгирӣ мекунад.

Муаллиф кӯшиш кардааст, ки хидматрасонӣ ҳадди аққал захираҳоро истеъмол кунад ва дар мошин комилан нодида кор кунад. Баръакси антивирусҳои муосир ва дигар "системаҳои амниятӣ", он набояд компютери шуморо суст кунад. Ба туфайли татбиқи нармафзори каме маккорона ба ӯ тавонист ҳам трафик ва ҳам истеъмоли хотираро кам кунад. Агар он танҳо як раванди алоҳидаро дар пайвасти нав оғоз кунад, он гоҳ ҳамлагарони эҳтимолӣ метавонанд бо кушодани пайвастҳои сершумор барои истихроҷи захираҳо дар мошин ҳамлаи DDoS-ро оғоз кунанд. Як ришта барои як пайвастшавӣ низ беҳтарин вариант нест, зеро ядро ​​​​мансабҳоро барои идоракунии риштаҳо сарф мекунад.

Аз ин рӯ, Крис Веллонс варианти сабуктаринро барои Endlessh интихоб кард: сервери як ришта poll(2), ки дар он мизоҷон дар дом амалан ягон захираи изофӣ истеъмол намекунанд, бидуни ҳисоб кардани объекти розетка дар ядро ​​​​ва 78 байти дигар барои пайгирӣ дар Endlessh. Барои роҳ надодан ба ҷудо кардани буферҳои қабул ва ирсол барои ҳар як муштарӣ, Endlessh васлаки дастрасии мустақим мекушояд ва бастаҳои TCP-ро мустақиман тарҷума мекунад ва қариб тамоми стеки системаи амалиётии TCP/IP-ро давр мезанад. Буфери воридотӣ тамоман лозим нест, зеро мо ба маълумоти воридотӣ манфиатдор нестем.

Муаллиф мегӯяд, ки дар вақти барномааш намедонист дар бораи мавҷудияти asycio Python ва дигар tarpits. Агар ӯ дар бораи asycio медонист, ӯ метавонист утилитаи худро дар 18 сатр дар Python амалӣ кунад:

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 барои навиштани тарпитҳо беҳтарин аст. Масалан, ин қалмоқ Firefox, Chrome ё ҳама муштарии дигареро, ки кӯшиши ба сервери 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 як воситаи олиҷаноб барои ҷазо додани зӯроварони онлайн аст. Дуруст аст, ки баъзе хатарҳо вуҷуд доранд, баръакс, диққати онҳоро ба рафтори ғайриоддии сервери мушаххас ҷалб мекунанд. Касе дар бораи интиком фикр кардан мумкин аст ва ҳамлаи ҳадафноки DDoS ба IP-и шумо. Бо вуҷуди ин, то ҳол чунин ҳолатҳо вуҷуд надоштанд ва тарпитҳо хеле хуб кор мекунанд.

Марказҳо:
Python, Амнияти иттилоот, Нармафзор, Идоракунии система

Tags:
SSH, Endlessh, tarpit, tarpit, trap, asycio
Дом (tarpit) барои пайвастҳои воридотии SSH

Ба касе пӯшида нест, ки Интернет як муҳити хеле душманона аст. Ҳамин ки шумо серверро баланд мекунед, он фавран ба ҳамлаҳои азим ва сканҳои сершумор дучор мешавад. Барои намуна асал аз посбонони амният миқёси ин трафики ахлотро тахмин кардан мумкин аст. Дар асл, дар сервери миёна, 99% трафик метавонад зараровар бошад.

Tarpit як бандари дом аст, ки барои суст кардани пайвастҳои воридотӣ истифода мешавад. Агар системаи тарафи сеюм ба ин порт пайваст шавад, шумо наметавонед пайвастро зуд пӯшед. Вай маҷбур мешавад, ки захираҳои системаи худро беҳуда сарф кунад ва то вақти пайвастшавиро интизор шавед ё онро дастӣ қатъ кунад.

Аксар вақт, тарпитҳо барои муҳофизат истифода мешаванд. Ин техника бори аввал барои муҳофизат аз кирмҳои компютерӣ таҳия шудааст. Ва ҳоло он метавонад барои вайрон кардани ҳаёти спаммерҳо ва муҳаққиқон истифода шавад, ки дар як саф бо сканкунии васеи ҳама суроғаҳои IP машғуланд (мисолҳо дар Habré: Австрия, Украина).

Яке аз маъмурони система бо номи Крис Веллонс зоҳиран аз тамошои ин нангин хаста шудааст - ва ӯ як барномаи хурде навишт. Беохир, тарпит барои SSH, ки пайвастҳои воридотро суст мекунад. Барнома портро мекушояд (порти пешфарз барои санҷиш 2222 аст) ва худро сервери SSH вонамуд мекунад, аммо дар асл бо муштарии воридотӣ то он даме, ки даст накашад, пайвасти беохир барқарор мекунад. Ин метавонад то чанд рӯз ё бештар аз он идома ёбад, то муштарӣ афтад.

Насби утилита:

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

Тарпити дуруст иҷрошуда аз ҳамлагар нисбат ба шумо захираҳои бештар мегирад. Аммо ин хатто масъалаи захирахо нест. Муаллиф Ӯ менависадки программа нашъаманд аст. Дар айни замон он 27 муштарӣ дар дом аст, ки баъзеи онҳо ҳафтаҳо пайвастанд. Дар авҷи фаъолият, 1378 муштарӣ дар тӯли 20 соат ба дом афтоданд!

Дар реҷаи корӣ сервери Endlessh бояд дар бандари муқаррарии 22 насб карда шавад, ки дар он авбошон оммавӣ мезананд. Тавсияҳои стандартии амният ҳамеша тавсия медиҳанд, ки SSH ба бандари дигар интиқол дода шавад, ки он фавран андозаи гузоришҳоро бо тартиби бузург коҳиш медиҳад.

Крис Веллонс мегӯяд, ки барномаи ӯ як параграфи мушаххасотро истифода мебарад RFC 4253 ба протоколи SSH. Дарҳол пас аз таъсиси пайвасти TCP, аммо пеш аз татбиқи криптография, ҳарду тараф бояд сатри мушаххасро фиристанд. Ва инчунин як ёддошт вуҷуд дорад: "Сервер метавонад пеш аз фиристодани сатри версия сатрҳои дигарро фиристад". Ва маҳдудият нест дар бораи ҳаҷми ин маълумот, шумо танҳо лозим аст, ки ҳар як сатрро бо SSH-.

Барномаи Endlessh маҳз ҳамин аст: он мефиристад беохир ҷараёни маълумоти тасодуфӣ тавлидшуда, ки ба RFC 4253 мувофиқат мекунад, яъне пеш аз тасдиқ фиристед ва ҳар як сатр бо он оғоз мешавад SSH- ва аз 255 аломат, аз ҷумла аломати охири сатр зиёд нест. Умуман, ҳама чиз мувофиқи стандарт аст.

Бо нобаёнӣ, барнома байни фиристодани бастаҳо 10 сония интизор мешавад. Ин имкон намедиҳад, ки муштарӣ аз мӯҳлат гузашта бошад, бинобар ин, муштарӣ то абад дар дом мемонад.

Азбаски маълумот пеш аз татбиқи криптография фиристода мешавад, барнома хеле содда аст. Он ба татбиқи ягон рамз ниёз надорад ва протоколҳои сершуморро дастгирӣ мекунад.

Муаллиф кӯшиш кардааст, ки хидматрасонӣ ҳадди аққал захираҳоро истеъмол кунад ва дар мошин комилан нодида кор кунад. Баръакси антивирусҳои муосир ва дигар "системаҳои амниятӣ", он набояд компютери шуморо суст кунад. Ба туфайли татбиқи нармафзори каме маккорона ба ӯ тавонист ҳам трафик ва ҳам истеъмоли хотираро кам кунад. Агар он танҳо як раванди алоҳидаро дар пайвасти нав оғоз кунад, он гоҳ ҳамлагарони эҳтимолӣ метавонанд бо кушодани пайвастҳои сершумор барои истихроҷи захираҳо дар мошин ҳамлаи DDoS-ро оғоз кунанд. Як ришта барои як пайвастшавӣ низ беҳтарин вариант нест, зеро ядро ​​​​мансабҳоро барои идоракунии риштаҳо сарф мекунад.

Аз ин рӯ, Крис Веллонс варианти сабуктаринро барои Endlessh интихоб кард: сервери як ришта poll(2), ки дар он мизоҷон дар дом амалан ягон захираи изофӣ истеъмол намекунанд, бидуни ҳисоб кардани объекти розетка дар ядро ​​​​ва 78 байти дигар барои пайгирӣ дар Endlessh. Барои роҳ надодан ба ҷудо кардани буферҳои қабул ва ирсол барои ҳар як муштарӣ, Endlessh васлаки дастрасии мустақим мекушояд ва бастаҳои TCP-ро мустақиман тарҷума мекунад ва қариб тамоми стеки системаи амалиётии TCP/IP-ро давр мезанад. Буфери воридотӣ тамоман лозим нест, зеро мо ба маълумоти воридотӣ манфиатдор нестем.

Муаллиф мегӯяд, ки дар вақти барномааш намедонист дар бораи мавҷудияти asycio Python ва дигар tarpits. Агар ӯ дар бораи asycio медонист, ӯ метавонист утилитаи худро дар 18 сатр дар Python амалӣ кунад:

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 барои навиштани тарпитҳо беҳтарин аст. Масалан, ин қалмоқ Firefox, Chrome ё ҳама муштарии дигареро, ки кӯшиши ба сервери 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 як воситаи олиҷаноб барои ҷазо додани зӯроварони онлайн аст. Дуруст аст, ки баъзе хатарҳо вуҷуд доранд, баръакс, диққати онҳоро ба рафтори ғайриоддии сервери мушаххас ҷалб мекунанд. Касе дар бораи интиком фикр кардан мумкин аст ва ҳамлаи ҳадафноки DDoS ба IP-и шумо. Бо вуҷуди ин, то ҳол чунин ҳолатҳо вуҷуд надоштанд ва тарпитҳо хеле хуб кор мекунанд.

Дом (tarpit) барои пайвастҳои воридотии SSH

Манбаъ: will.com

Илова Эзоҳ