Ба касе пӯшида нест, ки Интернет як муҳити хеле душманона аст. Ҳамин ки шумо серверро баланд мекунед, он фавран ба ҳамлаҳои азим ва сканҳои сершумор дучор мешавад. Барои намуна
Tarpit як бандари дом аст, ки барои суст кардани пайвастҳои воридотӣ истифода мешавад. Агар системаи тарафи сеюм ба ин порт пайваст шавад, шумо наметавонед пайвастро зуд пӯшед. Вай маҷбур мешавад, ки захираҳои системаи худро беҳуда сарф кунад ва то вақти пайвастшавиро интизор шавед ё онро дастӣ қатъ кунад.
Аксар вақт, тарпитҳо барои муҳофизат истифода мешаванд. Ин техника бори аввал барои муҳофизат аз кирмҳои компютерӣ таҳия шудааст. Ва ҳоло он метавонад барои вайрон кардани ҳаёти спаммерҳо ва муҳаққиқон истифода шавад, ки дар як саф бо сканкунии васеи ҳама суроғаҳои IP машғуланд (мисолҳо дар Habré:
Яке аз маъмурони система бо номи Крис Веллонс зоҳиран аз тамошои ин нангин хаста шудааст - ва ӯ як барномаи хурде навишт.
Насби утилита:
$ make
$ ./endlessh &
$ ssh -p2222 localhost
Тарпити дуруст иҷрошуда аз ҳамлагар нисбат ба шумо захираҳои бештар мегирад. Аммо ин хатто масъалаи захирахо нест. Муаллиф
Дар реҷаи корӣ сервери Endlessh бояд дар бандари муқаррарии 22 насб карда шавад, ки дар он авбошон оммавӣ мезананд. Тавсияҳои стандартии амният ҳамеша тавсия медиҳанд, ки SSH ба бандари дигар интиқол дода шавад, ки он фавран андозаи гузоришҳоро бо тартиби бузург коҳиш медиҳад.
Крис Веллонс мегӯяд, ки барномаи ӯ як параграфи мушаххасотро истифода мебарад SSH-
.
Барномаи Endlessh маҳз ҳамин аст: он мефиристад беохир ҷараёни маълумоти тасодуфӣ тавлидшуда, ки ба RFC 4253 мувофиқат мекунад, яъне пеш аз тасдиқ фиристед ва ҳар як сатр бо он оғоз мешавад SSH-
ва аз 255 аломат, аз ҷумла аломати охири сатр зиёд нест. Умуман, ҳама чиз мувофиқи стандарт аст.
Бо нобаёнӣ, барнома байни фиристодани бастаҳо 10 сония интизор мешавад. Ин имкон намедиҳад, ки муштарӣ аз мӯҳлат гузашта бошад, бинобар ин, муштарӣ то абад дар дом мемонад.
Азбаски маълумот пеш аз татбиқи криптография фиристода мешавад, барнома хеле содда аст. Он ба татбиқи ягон рамз ниёз надорад ва протоколҳои сершуморро дастгирӣ мекунад.
Муаллиф кӯшиш кардааст, ки хидматрасонӣ ҳадди аққал захираҳоро истеъмол кунад ва дар мошин комилан нодида кор кунад. Баръакси антивирусҳои муосир ва дигар "системаҳои амниятӣ", он набояд компютери шуморо суст кунад. Ба туфайли татбиқи нармафзори каме маккорона ба ӯ тавонист ҳам трафик ва ҳам истеъмоли хотираро кам кунад. Агар он танҳо як раванди алоҳидаро дар пайвасти нав оғоз кунад, он гоҳ ҳамлагарони эҳтимолӣ метавонанд бо кушодани пайвастҳои сершумор барои истихроҷи захираҳо дар мошин ҳамлаи DDoS-ро оғоз кунанд. Як ришта барои як пайвастшавӣ низ беҳтарин вариант нест, зеро ядро мансабҳоро барои идоракунии риштаҳо сарф мекунад.
Аз ин рӯ, Крис Веллонс варианти сабуктаринро барои Endlessh интихоб кард: сервери як ришта poll(2)
, ки дар он мизоҷон дар дом амалан ягон захираи изофӣ истеъмол намекунанд, бидуни ҳисоб кардани объекти розетка дар ядро ва 78 байти дигар барои пайгирӣ дар Endlessh. Барои роҳ надодан ба ҷудо кардани буферҳои қабул ва ирсол барои ҳар як муштарӣ, 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 барои навиштани тарпитҳо беҳтарин аст. Масалан, ин қалмоқ 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 як воситаи олиҷаноб барои ҷазо додани зӯроварони онлайн аст. Дуруст аст, ки баъзе хатарҳо вуҷуд доранд, баръакс, диққати онҳоро ба рафтори ғайриоддии сервери мушаххас ҷалб мекунанд. Касе
Марказҳо:
Python, Амнияти иттилоот, Нармафзор, Идоракунии система
Tags:
SSH, Endlessh, tarpit, tarpit, trap, asycio
Дом (tarpit) барои пайвастҳои воридотии SSH
Ба касе пӯшида нест, ки Интернет як муҳити хеле душманона аст. Ҳамин ки шумо серверро баланд мекунед, он фавран ба ҳамлаҳои азим ва сканҳои сершумор дучор мешавад. Барои намуна
Tarpit як бандари дом аст, ки барои суст кардани пайвастҳои воридотӣ истифода мешавад. Агар системаи тарафи сеюм ба ин порт пайваст шавад, шумо наметавонед пайвастро зуд пӯшед. Вай маҷбур мешавад, ки захираҳои системаи худро беҳуда сарф кунад ва то вақти пайвастшавиро интизор шавед ё онро дастӣ қатъ кунад.
Аксар вақт, тарпитҳо барои муҳофизат истифода мешаванд. Ин техника бори аввал барои муҳофизат аз кирмҳои компютерӣ таҳия шудааст. Ва ҳоло он метавонад барои вайрон кардани ҳаёти спаммерҳо ва муҳаққиқон истифода шавад, ки дар як саф бо сканкунии васеи ҳама суроғаҳои IP машғуланд (мисолҳо дар Habré:
Яке аз маъмурони система бо номи Крис Веллонс зоҳиран аз тамошои ин нангин хаста шудааст - ва ӯ як барномаи хурде навишт.
Насби утилита:
$ make
$ ./endlessh &
$ ssh -p2222 localhost
Тарпити дуруст иҷрошуда аз ҳамлагар нисбат ба шумо захираҳои бештар мегирад. Аммо ин хатто масъалаи захирахо нест. Муаллиф
Дар реҷаи корӣ сервери Endlessh бояд дар бандари муқаррарии 22 насб карда шавад, ки дар он авбошон оммавӣ мезананд. Тавсияҳои стандартии амният ҳамеша тавсия медиҳанд, ки SSH ба бандари дигар интиқол дода шавад, ки он фавран андозаи гузоришҳоро бо тартиби бузург коҳиш медиҳад.
Крис Веллонс мегӯяд, ки барномаи ӯ як параграфи мушаххасотро истифода мебарад SSH-
.
Барномаи Endlessh маҳз ҳамин аст: он мефиристад беохир ҷараёни маълумоти тасодуфӣ тавлидшуда, ки ба RFC 4253 мувофиқат мекунад, яъне пеш аз тасдиқ фиристед ва ҳар як сатр бо он оғоз мешавад SSH-
ва аз 255 аломат, аз ҷумла аломати охири сатр зиёд нест. Умуман, ҳама чиз мувофиқи стандарт аст.
Бо нобаёнӣ, барнома байни фиристодани бастаҳо 10 сония интизор мешавад. Ин имкон намедиҳад, ки муштарӣ аз мӯҳлат гузашта бошад, бинобар ин, муштарӣ то абад дар дом мемонад.
Азбаски маълумот пеш аз татбиқи криптография фиристода мешавад, барнома хеле содда аст. Он ба татбиқи ягон рамз ниёз надорад ва протоколҳои сершуморро дастгирӣ мекунад.
Муаллиф кӯшиш кардааст, ки хидматрасонӣ ҳадди аққал захираҳоро истеъмол кунад ва дар мошин комилан нодида кор кунад. Баръакси антивирусҳои муосир ва дигар "системаҳои амниятӣ", он набояд компютери шуморо суст кунад. Ба туфайли татбиқи нармафзори каме маккорона ба ӯ тавонист ҳам трафик ва ҳам истеъмоли хотираро кам кунад. Агар он танҳо як раванди алоҳидаро дар пайвасти нав оғоз кунад, он гоҳ ҳамлагарони эҳтимолӣ метавонанд бо кушодани пайвастҳои сершумор барои истихроҷи захираҳо дар мошин ҳамлаи DDoS-ро оғоз кунанд. Як ришта барои як пайвастшавӣ низ беҳтарин вариант нест, зеро ядро мансабҳоро барои идоракунии риштаҳо сарф мекунад.
Аз ин рӯ, Крис Веллонс варианти сабуктаринро барои Endlessh интихоб кард: сервери як ришта poll(2)
, ки дар он мизоҷон дар дом амалан ягон захираи изофӣ истеъмол намекунанд, бидуни ҳисоб кардани объекти розетка дар ядро ва 78 байти дигар барои пайгирӣ дар Endlessh. Барои роҳ надодан ба ҷудо кардани буферҳои қабул ва ирсол барои ҳар як муштарӣ, 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 барои навиштани тарпитҳо беҳтарин аст. Масалан, ин қалмоқ 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 як воситаи олиҷаноб барои ҷазо додани зӯроварони онлайн аст. Дуруст аст, ки баъзе хатарҳо вуҷуд доранд, баръакс, диққати онҳоро ба рафтори ғайриоддии сервери мушаххас ҷалб мекунанд. Касе
Манбаъ: will.com