Nid yw'n gyfrinach bod y Rhyngrwyd yn amgylchedd gelyniaethus iawn. Cyn gynted ag y byddwch chi'n codi gweinydd, mae'n destun ymosodiadau enfawr a sganiau lluosog ar unwaith. Er enghraifft
Mae tarpit yn borthladd trap a ddefnyddir i arafu cysylltiadau sy'n dod i mewn. Os yw system trydydd parti yn cysylltu â'r porthladd hwn, ni fyddwch yn gallu cau'r cysylltiad yn gyflym. Bydd yn rhaid iddi wastraffu adnoddau ei system ac aros tan i'r goramser cysylltiad ddod i ben, neu ei derfynu â llaw.
Yn fwyaf aml, defnyddir tarpits i amddiffyn. Datblygwyd y dechneg gyntaf i amddiffyn rhag llyngyr cyfrifiadurol. A nawr gellir ei ddefnyddio i ddifetha bywydau sbamwyr ac ymchwilwyr sy'n ymwneud â sganio eang o'r holl gyfeiriadau IP yn olynol (enghreifftiau ar Habré:
Mae'n debyg bod un o weinyddwyr y system o'r enw Chris Wellons wedi blino gwylio'r gwarth hwn - ac ysgrifennodd raglen fach
Gosod y cyfleustodau:
$ make
$ ./endlessh &
$ ssh -p2222 localhost
Bydd tarpit a weithredir yn gywir yn cymryd mwy o adnoddau gan yr ymosodwr nag oddi wrthych. Ond nid yw hyd yn oed yn fater o adnoddau. Awdur
Yn y modd gweithredu, mae angen gosod y gweinydd Endlessh ar y porthladd arferol 22, lle mae hwliganiaid yn curo en masse. Mae argymhellion diogelwch safonol bob amser yn cynghori symud SSH i borthladd gwahanol, sy'n lleihau maint y boncyffion ar unwaith yn ôl trefn maint.
Dywed Chris Wellons fod ei raglen yn ecsbloetio un paragraff o'r fanyleb SSH-
.
Dyma’n union y mae’r rhaglen Endlessh yn ei wneud: fe yn anfon diddiwedd ffrwd o ddata a gynhyrchir ar hap, sy'n cydymffurfio â RFC 4253, hynny yw, anfon cyn dilysu, ac mae pob llinell yn dechrau gyda SSH-
ac nad yw'n fwy na 255 nod, gan gynnwys y nod terfynu llinell. Yn gyffredinol, mae popeth yn unol â'r safon.
Yn ddiofyn, mae'r rhaglen yn aros 10 eiliad rhwng anfon pecynnau. Mae hyn yn atal y cleient rhag cael ei amseru allan, felly bydd y cleient yn gaeth am byth.
Gan fod y data yn cael ei anfon cyn cymhwyso cryptograffeg, mae'r rhaglen yn hynod o syml. Nid oes angen iddo weithredu unrhyw seiffrau ac mae'n cefnogi protocolau lluosog.
Ceisiodd yr awdur sicrhau bod y cyfleustodau'n defnyddio lleiafswm o adnoddau ac yn gweithio'n gwbl ddisylw ar y peiriant. Yn wahanol i wrthfeirysau modern a “systemau diogelwch” eraill, ni ddylai arafu eich cyfrifiadur. Llwyddodd i leihau'r defnydd o draffig a chof oherwydd gweithrediad meddalwedd ychydig yn fwy cyfrwys. Pe bai'n lansio proses ar wahân ar gysylltiad newydd yn unig, yna gallai ymosodwyr posibl lansio ymosodiad DDoS trwy agor cysylltiadau lluosog i wacáu adnoddau ar y peiriant. Nid un edefyn fesul cysylltiad yw'r opsiwn gorau chwaith, oherwydd bydd y cnewyllyn yn gwastraffu adnoddau yn rheoli edafedd.
Dyna pam y dewisodd Chris Wellons yr opsiwn mwyaf ysgafn ar gyfer Endlessh: gweinydd un edau poll(2)
, lle mae'r cleientiaid yn y trap yn defnyddio bron dim adnoddau ychwanegol, heb gyfrif y gwrthrych soced yn y cnewyllyn a 78 beit arall ar gyfer olrhain yn Endlessh. Er mwyn osgoi gorfod dyrannu byfferau derbyn ac anfon ar gyfer pob cleient, mae Endlessh yn agor soced mynediad uniongyrchol ac yn cyfieithu pecynnau TCP yn uniongyrchol, gan osgoi bron yr holl system weithredu TCP/IP stack. Nid oes angen y byffer sy'n dod i mewn o gwbl, oherwydd nid oes gennym ddiddordeb yn y data sy'n dod i mewn.
Dywed yr awdwr mai adeg ei raglen
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())
Mae Asyncio yn ddelfrydol ar gyfer ysgrifennu tarpits. Er enghraifft, bydd y bachyn hwn yn rhewi Firefox, Chrome, neu unrhyw gleient arall sy'n ceisio cysylltu â'ch gweinydd HTTP am oriau lawer:
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())
Mae Tarpit yn arf gwych ar gyfer cosbi bwlis ar-lein. Yn wir, mae rhywfaint o risg, i'r gwrthwyneb, o dynnu eu sylw at ymddygiad anarferol gweinydd penodol. Rhywun
Hybiau:
Python, Diogelwch gwybodaeth, Meddalwedd, Gweinyddu System
Tagiau:
SSH, Annherfynol, tarpit, tarpit, trap, asycio
Trap (tarpit) ar gyfer cysylltiadau SSH sy'n dod i mewn
Nid yw'n gyfrinach bod y Rhyngrwyd yn amgylchedd gelyniaethus iawn. Cyn gynted ag y byddwch chi'n codi gweinydd, mae'n destun ymosodiadau enfawr a sganiau lluosog ar unwaith. Er enghraifft
Mae tarpit yn borthladd trap a ddefnyddir i arafu cysylltiadau sy'n dod i mewn. Os yw system trydydd parti yn cysylltu â'r porthladd hwn, ni fyddwch yn gallu cau'r cysylltiad yn gyflym. Bydd yn rhaid iddi wastraffu adnoddau ei system ac aros tan i'r goramser cysylltiad ddod i ben, neu ei derfynu â llaw.
Yn fwyaf aml, defnyddir tarpits i amddiffyn. Datblygwyd y dechneg gyntaf i amddiffyn rhag llyngyr cyfrifiadurol. A nawr gellir ei ddefnyddio i ddifetha bywydau sbamwyr ac ymchwilwyr sy'n ymwneud â sganio eang o'r holl gyfeiriadau IP yn olynol (enghreifftiau ar Habré:
Mae'n debyg bod un o weinyddwyr y system o'r enw Chris Wellons wedi blino gwylio'r gwarth hwn - ac ysgrifennodd raglen fach
Gosod y cyfleustodau:
$ make
$ ./endlessh &
$ ssh -p2222 localhost
Bydd tarpit a weithredir yn gywir yn cymryd mwy o adnoddau gan yr ymosodwr nag oddi wrthych. Ond nid yw hyd yn oed yn fater o adnoddau. Awdur
Yn y modd gweithredu, mae angen gosod y gweinydd Endlessh ar y porthladd arferol 22, lle mae hwliganiaid yn curo en masse. Mae argymhellion diogelwch safonol bob amser yn cynghori symud SSH i borthladd gwahanol, sy'n lleihau maint y boncyffion ar unwaith yn ôl trefn maint.
Dywed Chris Wellons fod ei raglen yn ecsbloetio un paragraff o'r fanyleb SSH-
.
Dyma’n union y mae’r rhaglen Endlessh yn ei wneud: fe yn anfon diddiwedd ffrwd o ddata a gynhyrchir ar hap, sy'n cydymffurfio â RFC 4253, hynny yw, anfon cyn dilysu, ac mae pob llinell yn dechrau gyda SSH-
ac nad yw'n fwy na 255 nod, gan gynnwys y nod terfynu llinell. Yn gyffredinol, mae popeth yn unol â'r safon.
Yn ddiofyn, mae'r rhaglen yn aros 10 eiliad rhwng anfon pecynnau. Mae hyn yn atal y cleient rhag cael ei amseru allan, felly bydd y cleient yn gaeth am byth.
Gan fod y data yn cael ei anfon cyn cymhwyso cryptograffeg, mae'r rhaglen yn hynod o syml. Nid oes angen iddo weithredu unrhyw seiffrau ac mae'n cefnogi protocolau lluosog.
Ceisiodd yr awdur sicrhau bod y cyfleustodau'n defnyddio lleiafswm o adnoddau ac yn gweithio'n gwbl ddisylw ar y peiriant. Yn wahanol i wrthfeirysau modern a “systemau diogelwch” eraill, ni ddylai arafu eich cyfrifiadur. Llwyddodd i leihau'r defnydd o draffig a chof oherwydd gweithrediad meddalwedd ychydig yn fwy cyfrwys. Pe bai'n lansio proses ar wahân ar gysylltiad newydd yn unig, yna gallai ymosodwyr posibl lansio ymosodiad DDoS trwy agor cysylltiadau lluosog i wacáu adnoddau ar y peiriant. Nid un edefyn fesul cysylltiad yw'r opsiwn gorau chwaith, oherwydd bydd y cnewyllyn yn gwastraffu adnoddau yn rheoli edafedd.
Dyna pam y dewisodd Chris Wellons yr opsiwn mwyaf ysgafn ar gyfer Endlessh: gweinydd un edau poll(2)
, lle mae'r cleientiaid yn y trap yn defnyddio bron dim adnoddau ychwanegol, heb gyfrif y gwrthrych soced yn y cnewyllyn a 78 beit arall ar gyfer olrhain yn Endlessh. Er mwyn osgoi gorfod dyrannu byfferau derbyn ac anfon ar gyfer pob cleient, mae Endlessh yn agor soced mynediad uniongyrchol ac yn cyfieithu pecynnau TCP yn uniongyrchol, gan osgoi bron yr holl system weithredu TCP/IP stack. Nid oes angen y byffer sy'n dod i mewn o gwbl, oherwydd nid oes gennym ddiddordeb yn y data sy'n dod i mewn.
Dywed yr awdwr mai adeg ei raglen
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())
Mae Asyncio yn ddelfrydol ar gyfer ysgrifennu tarpits. Er enghraifft, bydd y bachyn hwn yn rhewi Firefox, Chrome, neu unrhyw gleient arall sy'n ceisio cysylltu â'ch gweinydd HTTP am oriau lawer:
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())
Mae Tarpit yn arf gwych ar gyfer cosbi bwlis ar-lein. Yn wir, mae rhywfaint o risg, i'r gwrthwyneb, o dynnu eu sylw at ymddygiad anarferol gweinydd penodol. Rhywun
Ffynhonnell: hab.com