Ne veşartî ye ku înternet hawîrdorek pir dijminane ye. Hema ku hûn serverek rabikin, ew tavilê rastî êrişên girseyî û şaneyên pirjimar tê. Bo nimûne
Tarpit portek xefikê ye ku ji bo hêdîkirina girêdanên hatinê tê bikar anîn. Ger pergalek sêyemîn bi vê portê ve girêdide, hûn ê nikaribin zû pêwendiyê bigirin. Ew ê neçar be ku çavkaniyên pergala xwe winda bike û li bendê bimîne heya ku dema pêwendiyê biqede, an bi destan wê biqedîne.
Bi gelemperî, tarpit ji bo parastinê têne bikar anîn. Teknîkî yekem car ji bo parastina li dijî kurmên komputerê hate pêşve xistin. Û naha ew dikare were bikar anîn da ku jiyana spammers û lêkolînerên ku di rêzê de bi şopandina berfireh a hemî navnîşanên IP-yê mijûl dibin (mînakên li ser Habré:
Yek ji rêvebirên pergalê bi navê Chris Wellons xuya ye ku ji temaşekirina vê şermê westiyaye - û wî bernameyek piçûk nivîsand.
Sazkirina karûbar:
$ make
$ ./endlessh &
$ ssh -p2222 localhost
Tarpitek bi rêkûpêk hatî bicîh kirin dê ji we bêtir çavkaniyan ji êrîşkar bigire. Lê ev ne meseleya çavkaniyan e jî. Nivîskar
Di moda xebitandinê de, servera Endlessh pêdivî ye ku li porta asayî 22 were saz kirin, ku li wir holîgan bi girseyî lêdixin. Pêşniyarên ewlehiyê yên standard her gav şîret dikin ku SSH biguhezînin portek cûda, ku tavilê mezinahiya têketin bi rêzek mezinahî kêm dike.
Chris Wellons dibêje bernameya wî yek paragrafê taybetmendiyê bikar tîne SSH-
.
Ya ku bernameya Endlessh dike ev e: ew dişîne bêdawî herikîna daneyên ku bi korfelaqî hatî çêkirin, ku bi RFC 4253 re tevdigerin, ango, berî pejirandinê bişînin, û her rêzek bi SSH-
û ji 255 tîpan derbas nabe, tevî karaktera dawiya rêzê. Bi gelemperî, her tişt li gorî standardê ye.
Bi xwerû, bername di navbera şandina pakêtan de 10 çirke li bendê dimîne. Ev rê nade ku xerîdar biqede, ji ber vê yekê xerîdar dê her û her were girtin.
Ji ber ku berî ku krîptografî were sepandin, dane têne şandin, bername pir hêsan e. Ew ne hewce ye ku tu şîfreyan bicîh bîne û pir protokolan piştgirî dike.
Nivîskar hewl da ku bicîh bike ku karûbar herî kêm çavkaniyan dixwe û li ser makîneyê bi tevahî nedîtî dixebite. Berevajî antivirusên nûjen û "pergalên ewlehiyê" yên din, divê ew komputera we hêdî neke. Wî karî hem trafîkê û hem jî mezaxtina bîranînê kêm bike ji ber pêkanîna nermalava piçek jêhatî. Ger ew bi tenê pêvajoyek cihêreng li ser pêwendiyek nû dest pê kir, wê hingê êrişkerên potansiyel dikarin bi vekirina gelek girêdan ve êrişek DDoS bidin destpêkirin da ku çavkaniyên li ser makîneyê biqewirînin. Mijarek ji bo girêdanê di heman demê de ne vebijarka çêtirîn e, ji ber ku kernel dê çavkaniyên birêvebirina mijaran winda bike.
Ji ber vê yekê Chris Wellons ji bo Endlessh vebijarka herî sivik hilbijart: serverek yek-têkilî poll(2)
, li cihê ku xerîdarên di xefikê de bi rastî tu çavkaniyên zêde naxwin, nehesibandina objeya soketê ya di kernelê de û 78 baytên din ji bo şopandina li Endlessh. Ji bo ku ji bo her xerîdar veqetandin û şandina tamponan nehêle, Endlessh soketek gihîştina rasterast vedike û pakêtên TCP rasterast werdigerîne, hema hema tevahiya stoka pergala xebitandinê TCP/IP derbas dike. Tampona hatinê qet ne hewce ye, ji ber ku em bi daneyên hatinê re eleqedar nabin.
Nivîskar di dema bernameya xwe de dibêje
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 ji bo nivîsandina tarpîtan îdeal e. Mînakî, ev hook dê Firefox, Chrome, an xerîdarek din a ku hewl dide gelek demjimêran bi servera xweya HTTP-ê ve girêde bicemidîne:
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 ji bo cezakirina zordarên serhêl amûrek girîng e. Rast e, berevajî vê, hin xetereyek heye ku bala wan bikişîne ser behreya neasayî ya serverek taybetî. Kesek
Navend:
Python, Ewlekariya Agahdariyê, Nermalava, Rêveberiya Pergalê
Tags:
SSH, Endlesssh, tarpit, tarpit, xefik, asycio
Xop (tarpit) ji bo girêdanên SSH yên hatinî
Ne veşartî ye ku înternet hawîrdorek pir dijminane ye. Hema ku hûn serverek rabikin, ew tavilê rastî êrişên girseyî û şaneyên pirjimar tê. Bo nimûne
Tarpit portek xefikê ye ku ji bo hêdîkirina girêdanên hatinê tê bikar anîn. Ger pergalek sêyemîn bi vê portê ve girêdide, hûn ê nikaribin zû pêwendiyê bigirin. Ew ê neçar be ku çavkaniyên pergala xwe winda bike û li bendê bimîne heya ku dema pêwendiyê biqede, an bi destan wê biqedîne.
Bi gelemperî, tarpit ji bo parastinê têne bikar anîn. Teknîkî yekem car ji bo parastina li dijî kurmên komputerê hate pêşve xistin. Û naha ew dikare were bikar anîn da ku jiyana spammers û lêkolînerên ku di rêzê de bi şopandina berfireh a hemî navnîşanên IP-yê mijûl dibin (mînakên li ser Habré:
Yek ji rêvebirên pergalê bi navê Chris Wellons xuya ye ku ji temaşekirina vê şermê westiyaye - û wî bernameyek piçûk nivîsand.
Sazkirina karûbar:
$ make
$ ./endlessh &
$ ssh -p2222 localhost
Tarpitek bi rêkûpêk hatî bicîh kirin dê ji we bêtir çavkaniyan ji êrîşkar bigire. Lê ev ne meseleya çavkaniyan e jî. Nivîskar
Di moda xebitandinê de, servera Endlessh pêdivî ye ku li porta asayî 22 were saz kirin, ku li wir holîgan bi girseyî lêdixin. Pêşniyarên ewlehiyê yên standard her gav şîret dikin ku SSH biguhezînin portek cûda, ku tavilê mezinahiya têketin bi rêzek mezinahî kêm dike.
Chris Wellons dibêje bernameya wî yek paragrafê taybetmendiyê bikar tîne SSH-
.
Ya ku bernameya Endlessh dike ev e: ew dişîne bêdawî herikîna daneyên ku bi korfelaqî hatî çêkirin, ku bi RFC 4253 re tevdigerin, ango, berî pejirandinê bişînin, û her rêzek bi SSH-
û ji 255 tîpan derbas nabe, tevî karaktera dawiya rêzê. Bi gelemperî, her tişt li gorî standardê ye.
Bi xwerû, bername di navbera şandina pakêtan de 10 çirke li bendê dimîne. Ev rê nade ku xerîdar biqede, ji ber vê yekê xerîdar dê her û her were girtin.
Ji ber ku berî ku krîptografî were sepandin, dane têne şandin, bername pir hêsan e. Ew ne hewce ye ku tu şîfreyan bicîh bîne û pir protokolan piştgirî dike.
Nivîskar hewl da ku bicîh bike ku karûbar herî kêm çavkaniyan dixwe û li ser makîneyê bi tevahî nedîtî dixebite. Berevajî antivirusên nûjen û "pergalên ewlehiyê" yên din, divê ew komputera we hêdî neke. Wî karî hem trafîkê û hem jî mezaxtina bîranînê kêm bike ji ber pêkanîna nermalava piçek jêhatî. Ger ew bi tenê pêvajoyek cihêreng li ser pêwendiyek nû dest pê kir, wê hingê êrişkerên potansiyel dikarin bi vekirina gelek girêdan ve êrişek DDoS bidin destpêkirin da ku çavkaniyên li ser makîneyê biqewirînin. Mijarek ji bo girêdanê di heman demê de ne vebijarka çêtirîn e, ji ber ku kernel dê çavkaniyên birêvebirina mijaran winda bike.
Ji ber vê yekê Chris Wellons ji bo Endlessh vebijarka herî sivik hilbijart: serverek yek-têkilî poll(2)
, li cihê ku xerîdarên di xefikê de bi rastî tu çavkaniyên zêde naxwin, nehesibandina objeya soketê ya di kernelê de û 78 baytên din ji bo şopandina li Endlessh. Ji bo ku ji bo her xerîdar veqetandin û şandina tamponan nehêle, Endlessh soketek gihîştina rasterast vedike û pakêtên TCP rasterast werdigerîne, hema hema tevahiya stoka pergala xebitandinê TCP/IP derbas dike. Tampona hatinê qet ne hewce ye, ji ber ku em bi daneyên hatinê re eleqedar nabin.
Nivîskar di dema bernameya xwe de dibêje
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 ji bo nivîsandina tarpîtan îdeal e. Mînakî, ev hook dê Firefox, Chrome, an xerîdarek din a ku hewl dide gelek demjimêran bi servera xweya HTTP-ê ve girêde bicemidîne:
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 ji bo cezakirina zordarên serhêl amûrek girîng e. Rast e, berevajî vê, hin xetereyek heye ku bala wan bikişîne ser behreya neasayî ya serverek taybetî. Kesek
Source: www.habr.com