Nassa (tarpit) għal konnessjonijiet SSH deħlin

Mhuwiex sigriet li l-Internet huwa ambjent ostili ħafna. Hekk kif tgħolli server, huwa istantanjament soġġett għal attakki massivi u skans multipli. Pereżempju honeypot mill-gwardjani tas-sigurtà tista' tistma l-iskala ta' dan it-traffiku taż-żibel. Fil-fatt, fuq is-server medju, 99% tat-traffiku jista 'jkun malizzjuż.

Tarpit huwa port nassa użat biex inaqqas il-konnessjonijiet deħlin. Jekk sistema ta 'parti terza tikkonnettja ma' dan il-port, ma tkunx tista 'tagħlaq il-konnessjoni malajr. Hija se jkollha taħli r-riżorsi tas-sistema tagħha u tistenna sakemm jiskadu l-ħin tal-konnessjoni, jew ittemmha manwalment.

Ħafna drabi, tarpits jintużaw għall-protezzjoni. It-teknika ġiet żviluppata l-ewwel biex tipproteġi kontra d-dud tal-kompjuter. U issa tista 'tintuża biex tħassar il-ħajja ta' min jispammja u riċerkaturi li huma involuti fi skannjar wiesa 'ta' l-indirizzi IP kollha wara xulxin (eżempji fuq Habré: Awstrija, Ukraina).

Wieħed mill-amministraturi tas-sistema jismu Chris Wellons jidher li għajjien jara din l-għajb - u kiteb programm żgħir Bla tarf, tarpit għal SSH li jrażżan il-konnessjonijiet deħlin. Il-programm jiftaħ port (il-port default għall-ittestjar huwa 2222) u jippretendi li huwa server SSH, iżda fir-realtà jistabbilixxi konnessjoni bla tarf mal-klijent li jkun dieħel sakemm iċedi. Dan jista 'jkompli għal diversi jiem jew aktar sakemm il-klijent jaqa'.

Installazzjoni tal-utilità:

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

Tarpit implimentat kif suppost se jieħu aktar riżorsi mingħand l-attakkant milli mingħandek. Imma lanqas hija kwistjoni ta’ riżorsi. Awtur jiktebli l-programm huwa vizzju. Bħalissa għandha 27 klijent maqbuda, uħud minnhom konnessi għal ġimgħat. Fil-quċċata tal-attività, 1378 klijent kienu maqbuda għal 20 siegħa!

Fil-mod ta 'tħaddim, is-server Endlessh jeħtieġ li jiġi installat fuq il-port tas-soltu 22, fejn il-hooligans iħabbtu b'mod massiv. Rakkomandazzjonijiet ta 'sigurtà standard dejjem jagħtu parir li SSH jiċċaqlaq għal port differenti, li immedjatament inaqqas id-daqs taż-zkuk b'ordni ta' kobor.

Chris Wellons jgħid li l-programm tiegħu jisfrutta paragrafu wieħed tal-ispeċifikazzjoni RFC 4253 għall-protokoll SSH. Immedjatament wara li tiġi stabbilita konnessjoni TCP, iżda qabel ma tiġi applikata l-kriptografija, iż-żewġ partijiet għandhom jibagħtu string ta 'identifikazzjoni. U hemm ukoll nota: "Is-server JISTA' jibgħat ringieli oħra ta' dejta qabel ma jibgħat ir-ringiela tal-verżjoni". U ebda limitu fuq il-volum ta 'din id-data, għandek bżonn biss li tibda kull linja ma SSH-.

Dan huwa eżattament dak li jagħmel il-programm Endlessh: it tibgħat bla tarf fluss ta’ data ġġenerata b’mod każwali, li jikkonformaw ma 'RFC 4253, jiġifieri, ibgħat qabel l-awtentikazzjoni, u kull linja tibda b' SSH- u ma jaqbiżx il-255 karattru, inkluż il-karattru tat-tmiem tal-linja. B'mod ġenerali, kollox huwa skond l-istandard.

B'mod awtomatiku, il-programm jistenna 10 sekondi bejn jibgħat il-pakketti. Dan jipprevjeni lill-klijent milli jiġi time out, u għalhekk il-klijent ikun maqbud għal dejjem.

Peress li d-dejta tintbagħat qabel ma tiġi applikata l-kriptografija, il-programm huwa estremament sempliċi. M'għandux għalfejn jimplimenta xi ċifra u jappoġġja protokolli multipli.

L-awtur ipprova jiżgura li l-utilità tikkonsma minimu ta 'riżorsi u taħdem kompletament inosservata fuq il-magna. B'differenza mill-antiviruses moderni u "sistemi ta' sigurtà" oħra, m'għandux inaqqas il-veloċità tal-kompjuter tiegħek. Huwa rnexxielu jimminimizza kemm it-traffiku kif ukoll il-konsum tal-memorja minħabba implimentazzjoni ta 'softwer kemmxejn aktar għaqlija. Jekk sempliċement nediet proċess separat fuq konnessjoni ġdida, allura attakkanti potenzjali jistgħu jniedu attakk DDoS billi jiftħu konnessjonijiet multipli biex jeżawrixxu r-riżorsi fuq il-magna. Ħajt wieħed għal kull konnessjoni wkoll mhuwiex l-aħjar għażla, minħabba li l-qalba se jaħli r-riżorsi li jimmaniġġjaw il-ħjut.

Huwa għalhekk li Chris Wellons għażel l-iktar għażla ħafifa għal Endlessh: server b'ħajt wieħed poll(2), fejn il-klijenti fin-nassa jikkonsmaw prattikament l-ebda riżorsi żejda, mingħajr ma jgħoddu l-oġġett tas-socket fil-qalba u 78 bytes oħra għat-traċċar f'Endlessh. Biex tevita li talloka riċeviment u tibgħat buffers għal kull klijent, Endlessh tiftaħ socket ta 'aċċess dirett u tittraduċi pakketti TCP direttament, billi tevita kważi l-munzell TCP/IP kollu tas-sistema operattiva. Il-buffer li jkun dieħel mhu meħtieġ xejn, għax m'aħniex interessati fid-dejta li tkun deħlin.

L-awtur jgħid li fil-ħin tal-programm tiegħu ma kontx naf dwar l-eżistenza ta 'asycio ta' Python u tarpits oħra. Kieku kien jaf dwar asycio, seta' jimplimenta l-utilità tiegħu fi 18-il linja biss f'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 huwa ideali għall-kitba tarpits. Pereżempju, dan il-ganċ se jiffriża Firefox, Chrome, jew kwalunkwe klijent ieħor li qed jipprova jikkonnettja mas-server HTTP tiegħek għal ħafna sigħat:

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 huwa għodda kbira biex tikkastiga l-bulli onlajn. Veru, hemm xi riskju, għall-kuntrarju, li jiġbdu l-attenzjoni tagħhom għall-imġieba mhux tas-soltu ta 'server partikolari. Xi ħadd jista 'jaħseb dwar vendetta u attakk DDoS immirat fuq l-IP tiegħek. Madankollu, s'issa ma kien hemm l-ebda każijiet bħal dawn, u t-tarpits jaħdmu tajjeb.

Hubs:
Python, Sigurtà tal-Informazzjoni, Software, Amministrazzjoni tas-sistema

Tags:
SSH, Endlessh, tarpit, tarpit, nassa, asycio
Nassa (tarpit) għal konnessjonijiet SSH deħlin

Mhuwiex sigriet li l-Internet huwa ambjent ostili ħafna. Hekk kif tgħolli server, huwa istantanjament soġġett għal attakki massivi u skans multipli. Pereżempju honeypot mill-gwardjani tas-sigurtà tista' tistma l-iskala ta' dan it-traffiku taż-żibel. Fil-fatt, fuq is-server medju, 99% tat-traffiku jista 'jkun malizzjuż.

Tarpit huwa port nassa użat biex inaqqas il-konnessjonijiet deħlin. Jekk sistema ta 'parti terza tikkonnettja ma' dan il-port, ma tkunx tista 'tagħlaq il-konnessjoni malajr. Hija se jkollha taħli r-riżorsi tas-sistema tagħha u tistenna sakemm jiskadu l-ħin tal-konnessjoni, jew ittemmha manwalment.

Ħafna drabi, tarpits jintużaw għall-protezzjoni. It-teknika ġiet żviluppata l-ewwel biex tipproteġi kontra d-dud tal-kompjuter. U issa tista 'tintuża biex tħassar il-ħajja ta' min jispammja u riċerkaturi li huma involuti fi skannjar wiesa 'ta' l-indirizzi IP kollha wara xulxin (eżempji fuq Habré: Awstrija, Ukraina).

Wieħed mill-amministraturi tas-sistema jismu Chris Wellons jidher li għajjien jara din l-għajb - u kiteb programm żgħir Bla tarf, tarpit għal SSH li jrażżan il-konnessjonijiet deħlin. Il-programm jiftaħ port (il-port default għall-ittestjar huwa 2222) u jippretendi li huwa server SSH, iżda fir-realtà jistabbilixxi konnessjoni bla tarf mal-klijent li jkun dieħel sakemm iċedi. Dan jista 'jkompli għal diversi jiem jew aktar sakemm il-klijent jaqa'.

Installazzjoni tal-utilità:

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

Tarpit implimentat kif suppost se jieħu aktar riżorsi mingħand l-attakkant milli mingħandek. Imma lanqas hija kwistjoni ta’ riżorsi. Awtur jiktebli l-programm huwa vizzju. Bħalissa għandha 27 klijent maqbuda, uħud minnhom konnessi għal ġimgħat. Fil-quċċata tal-attività, 1378 klijent kienu maqbuda għal 20 siegħa!

Fil-mod ta 'tħaddim, is-server Endlessh jeħtieġ li jiġi installat fuq il-port tas-soltu 22, fejn il-hooligans iħabbtu b'mod massiv. Rakkomandazzjonijiet ta 'sigurtà standard dejjem jagħtu parir li SSH jiċċaqlaq għal port differenti, li immedjatament inaqqas id-daqs taż-zkuk b'ordni ta' kobor.

Chris Wellons jgħid li l-programm tiegħu jisfrutta paragrafu wieħed tal-ispeċifikazzjoni RFC 4253 għall-protokoll SSH. Immedjatament wara li tiġi stabbilita konnessjoni TCP, iżda qabel ma tiġi applikata l-kriptografija, iż-żewġ partijiet għandhom jibagħtu string ta 'identifikazzjoni. U hemm ukoll nota: "Is-server JISTA' jibgħat ringieli oħra ta' dejta qabel ma jibgħat ir-ringiela tal-verżjoni". U ebda limitu fuq il-volum ta 'din id-data, għandek bżonn biss li tibda kull linja ma SSH-.

Dan huwa eżattament dak li jagħmel il-programm Endlessh: it tibgħat bla tarf fluss ta’ data ġġenerata b’mod każwali, li jikkonformaw ma 'RFC 4253, jiġifieri, ibgħat qabel l-awtentikazzjoni, u kull linja tibda b' SSH- u ma jaqbiżx il-255 karattru, inkluż il-karattru tat-tmiem tal-linja. B'mod ġenerali, kollox huwa skond l-istandard.

B'mod awtomatiku, il-programm jistenna 10 sekondi bejn jibgħat il-pakketti. Dan jipprevjeni lill-klijent milli jiġi time out, u għalhekk il-klijent ikun maqbud għal dejjem.

Peress li d-dejta tintbagħat qabel ma tiġi applikata l-kriptografija, il-programm huwa estremament sempliċi. M'għandux għalfejn jimplimenta xi ċifra u jappoġġja protokolli multipli.

L-awtur ipprova jiżgura li l-utilità tikkonsma minimu ta 'riżorsi u taħdem kompletament inosservata fuq il-magna. B'differenza mill-antiviruses moderni u "sistemi ta' sigurtà" oħra, m'għandux inaqqas il-veloċità tal-kompjuter tiegħek. Huwa rnexxielu jimminimizza kemm it-traffiku kif ukoll il-konsum tal-memorja minħabba implimentazzjoni ta 'softwer kemmxejn aktar għaqlija. Jekk sempliċement nediet proċess separat fuq konnessjoni ġdida, allura attakkanti potenzjali jistgħu jniedu attakk DDoS billi jiftħu konnessjonijiet multipli biex jeżawrixxu r-riżorsi fuq il-magna. Ħajt wieħed għal kull konnessjoni wkoll mhuwiex l-aħjar għażla, minħabba li l-qalba se jaħli r-riżorsi li jimmaniġġjaw il-ħjut.

Huwa għalhekk li Chris Wellons għażel l-iktar għażla ħafifa għal Endlessh: server b'ħajt wieħed poll(2), fejn il-klijenti fin-nassa jikkonsmaw prattikament l-ebda riżorsi żejda, mingħajr ma jgħoddu l-oġġett tas-socket fil-qalba u 78 bytes oħra għat-traċċar f'Endlessh. Biex tevita li talloka riċeviment u tibgħat buffers għal kull klijent, Endlessh tiftaħ socket ta 'aċċess dirett u tittraduċi pakketti TCP direttament, billi tevita kważi l-munzell TCP/IP kollu tas-sistema operattiva. Il-buffer li jkun dieħel mhu meħtieġ xejn, għax m'aħniex interessati fid-dejta li tkun deħlin.

L-awtur jgħid li fil-ħin tal-programm tiegħu ma kontx naf dwar l-eżistenza ta 'asycio ta' Python u tarpits oħra. Kieku kien jaf dwar asycio, seta' jimplimenta l-utilità tiegħu fi 18-il linja biss f'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 huwa ideali għall-kitba tarpits. Pereżempju, dan il-ganċ se jiffriża Firefox, Chrome, jew kwalunkwe klijent ieħor li qed jipprova jikkonnettja mas-server HTTP tiegħek għal ħafna sigħat:

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 huwa għodda kbira biex tikkastiga l-bulli onlajn. Veru, hemm xi riskju, għall-kuntrarju, li jiġbdu l-attenzjoni tagħhom għall-imġieba mhux tas-soltu ta 'server partikolari. Xi ħadd jista 'jaħseb dwar vendetta u attakk DDoS immirat fuq l-IP tiegħek. Madankollu, s'issa ma kien hemm l-ebda każijiet bħal dawn, u t-tarpits jaħdmu tajjeb.

Nassa (tarpit) għal konnessjonijiet SSH deħlin

Sors: www.habr.com

Żid kumment