Trap (tarpit) bakeng sa likhokahano tsa SSH tse kenang

Ha se sephiri hore Marang-rang ke sebaka se tletseng bora. Hang ha o phahamisa seva, hang-hang e hlaseloa ke litlhaselo tse kholo le litlhahlobo tse ngata. Ka mohlala pitsa ea mahe a linotsi ho tsoa ho balebeli o ka hakanya boholo ba sephethephethe sena sa lithōle. Ha e le hantle, ka seva se tloaelehileng, 99% ea sephethephethe e ka 'na ea e-ba kotsi.

Tarpit ke sebaka sa marang-rang se sebelisoang ho fokotsa likhokahano tse kenang. Haeba tsamaiso ea motho oa boraro e hokela koung ena, u ke ke ua khona ho koala khokahanyo ka potlako. O tla tlameha ho senya lisebelisoa tsa sistimi ea hae mme a eme ho fihlela nako ea khokahano e fela, kapa a e felise ka letsoho.

Hangata, li-tarpit li sebelisetsoa ho sireletsa. Mokhoa ona o ile oa ntlafatsoa pele ho itšireletsa khahlanong le liboko tsa k'homphieutha. 'Me joale e ka sebelisoa ho senya bophelo ba batho ba spammers le bafuputsi ba sebetsanang le ho hlahloba liaterese tsohle tsa IP ka tatellano (mehlala ho Habre: Austria, Ukraine).

E mong oa batsamaisi ba tsamaiso ea bitsoang Chris Wellons ho bonahala a khathetse ke ho shebella lihlong tsena - mme a ngola lenaneo le lenyenyane. E sa feleng, tarpit bakeng sa SSH e liehisang likhokahano tse kenang. Lenaneo le bula boema-kepe (sebaka sa kamehla sa tlhahlobo ke 2222) mme se iketsa eka ke seva sa SSH, empa ha e le hantle se theha khokahano e sa feleng le moreki ea tlang ho fihlela e tela. Sena se ka 'na sa tsoela pele ka matsatsi a' maloa kapa ho feta ho fihlela moreki a oela.

Ho kenya lisebelisoa:

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

Tarpit e kentsoeng hantle e tla nka lisebelisoa tse ngata ho tsoa ho mohlaseli ho feta ho uena. Empa ha se taba ea lisebelisoa. Mongoli o ngolahore lenaneo le lemalla. Hona joale e na le bareki ba 27 ba qabeletsoeng, ba bang ba bona ba hokahane ka libeke. Sehlohlolong sa tšebetso, bareki ba 1378 20 ba ile ba qabelloa ka lihora tse XNUMX!

Boemong ba ts'ebetso, seva sa Endlessh se hloka ho kenngoa boema-kepeng bo tloaelehileng ba 22, moo li-hooligans li kokotang ka bongata. Litlhahiso tse tloaelehileng tsa ts'ireletso li lula li eletsa ho tsamaisa SSH ho ea boema-kepe bo fapaneng, e leng hang-hang e fokotsang boholo ba lifate ka taelo ea boholo.

Chris Wellons o re lenaneo la hae le sebelisa serapa se le seng sa litlhaloso RFC 4253 ho protocol ea SSH. Hang ka mor'a hore ho thehoe khokahanyo ea TCP, empa pele ho sebelisoa li-cryptography, mahlakore ka bobeli a tlameha ho romela khoele ea boitsebiso. Hape ho na le molaetsa: "Seva e kanna ea romela mela e meng ea data pele e romella mofuta oa mofuta". Mme ha ho na moeli ka bophahamo ba data ena, o hloka feela ho qala mola o mong le o mong ka SSH-.

Sena ke sona seo lenaneo la Endlessh le se etsang: eona romela sa feleng lethathamo la data e entsoeng ka tšohanyetso, e tsamaellanang le RFC 4253, ke hore, romella pele ho netefatso, 'me mohala o mong le o mong o qala ka SSH- mme ha e fete ditlhaku tse 255, ho kenyeletswa le tlhaku e qetellang moleng. Ka kakaretso, ntho e 'ngoe le e' ngoe e latela maemo.

Ka kamehla, lenaneo le emela metsotsoana e 10 pakeng tsa ho romela lipakete. Sena se etsa hore moreki a se ke a beheloa nako, kahoo moreki o tla qabelloa ka ho sa feleng.

Kaha data e romelloa pele cryptography e sebelisoa, lenaneo le bonolo haholo. Ha e hloke ho kenya ts'ebetsong li-ciphers le ho ts'ehetsa liprothokholo tse ngata.

Sengoli se lekile ho etsa bonnete ba hore sesebelisoa se sebelisa bonyane ba lisebelisoa mme se sebetsa se sa hlokomeloe ka botlalo mochining. Ho fapana le li-antivirus tsa sejoale-joale le "litsamaiso tse ling tsa ts'ireletso," ha ea lokela ho khoehlisa komporo ea hau. O khonne ho fokotsa ts'ebeliso ea sephethephethe le mohopolo ka lebaka la ts'ebetso e bohlale ea software. Haeba e ne e qala ts'ebetso e arohaneng mabapi le khokahano e ncha, joale bahlaseli ba ka bang teng ba ka qala tlhaselo ea DDoS ka ho bula likhokahano tse ngata ho qeta lisebelisoa mochining. Khoele e le 'ngoe ka khokahano le eona ha se khetho e ntle ka ho fetisisa, hobane kernel e tla senya lisebelisoa tse tsamaisang likhoele.

Ke ka lebaka leo Chris Wellons a khethileng khetho e bobebe ka ho fetisisa bakeng sa Endlessh: seva se nang le khoele e le 'ngoe poll(2), moo bareki ba lerabeng ba jang hoo e ka bang ha ho na lisebelisoa tse eketsehileng, ho sa bale ntho ea socket ka har'a kernel le li-byte tse ling tse 78 bakeng sa ho latela Endlesssh. Ho qoba ho fana ka li-buffers bakeng sa moreki e mong le e mong, Endlessh e bula sokete ea phihlello e tobileng mme e fetolela lipakete tsa TCP ka kotloloho, e feta hoo e batlang e le sistimi eohle ea ts'ebetso ea TCP/IP. Buffer e kenang ha e hlokehe ho hang, hobane ha re thahaselle data e kenang.

Mongodi o re ka nako ya lenaneo la hae ne ke sa tsebe mabapi le boteng ba Python's asycio le li-tarpits tse ling. Haeba a ne a tseba ka asycio, a ka kenya ts'ebeliso ea hae ka mela e 18 feela ho 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 e loketse ho ngola li-tarpits. Mohlala, hook ena e tla homisa Firefox, Chrome, kapa moreki ofe kapa ofe ea lekang ho hokela seva sa hau sa HTTP ka lihora tse ngata:

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 ke sesebelisoa se setle sa ho otla bo-'mampoli ba inthaneteng. Ke 'nete, ho na le kotsi e itseng, ho fapana le hoo, ea ho lebisa tlhokomelo ea bona boitšoarong bo sa tloaelehang ba seva se itseng. Motho emong o ka nahana ka boiphetetso le tlhaselo e lebisitsoeng ea DDoS ho IP ea hau. Leha ho le joalo, ho fihlela joale ha ho so be le linyeoe tse joalo, 'me li-tarpits li sebetsa hantle.

Hubs:
Python, Tšireletso ea Boitsebiso, Software, Tsamaiso ea Tsamaiso

Tags:
SSH, Endlesssh, tarpit, tarpit, trap, asycio
Trap (tarpit) bakeng sa likhokahano tsa SSH tse kenang

Ha se sephiri hore Marang-rang ke sebaka se tletseng bora. Hang ha o phahamisa seva, hang-hang e hlaseloa ke litlhaselo tse kholo le litlhahlobo tse ngata. Ka mohlala pitsa ea mahe a linotsi ho tsoa ho balebeli o ka hakanya boholo ba sephethephethe sena sa lithōle. Ha e le hantle, ka seva se tloaelehileng, 99% ea sephethephethe e ka 'na ea e-ba kotsi.

Tarpit ke sebaka sa marang-rang se sebelisoang ho fokotsa likhokahano tse kenang. Haeba tsamaiso ea motho oa boraro e hokela koung ena, u ke ke ua khona ho koala khokahanyo ka potlako. O tla tlameha ho senya lisebelisoa tsa sistimi ea hae mme a eme ho fihlela nako ea khokahano e fela, kapa a e felise ka letsoho.

Hangata, li-tarpit li sebelisetsoa ho sireletsa. Mokhoa ona o ile oa ntlafatsoa pele ho itšireletsa khahlanong le liboko tsa k'homphieutha. 'Me joale e ka sebelisoa ho senya bophelo ba batho ba spammers le bafuputsi ba sebetsanang le ho hlahloba liaterese tsohle tsa IP ka tatellano (mehlala ho Habre: Austria, Ukraine).

E mong oa batsamaisi ba tsamaiso ea bitsoang Chris Wellons ho bonahala a khathetse ke ho shebella lihlong tsena - mme a ngola lenaneo le lenyenyane. E sa feleng, tarpit bakeng sa SSH e liehisang likhokahano tse kenang. Lenaneo le bula boema-kepe (sebaka sa kamehla sa tlhahlobo ke 2222) mme se iketsa eka ke seva sa SSH, empa ha e le hantle se theha khokahano e sa feleng le moreki ea tlang ho fihlela e tela. Sena se ka 'na sa tsoela pele ka matsatsi a' maloa kapa ho feta ho fihlela moreki a oela.

Ho kenya lisebelisoa:

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

Tarpit e kentsoeng hantle e tla nka lisebelisoa tse ngata ho tsoa ho mohlaseli ho feta ho uena. Empa ha se taba ea lisebelisoa. Mongoli o ngolahore lenaneo le lemalla. Hona joale e na le bareki ba 27 ba qabeletsoeng, ba bang ba bona ba hokahane ka libeke. Sehlohlolong sa tšebetso, bareki ba 1378 20 ba ile ba qabelloa ka lihora tse XNUMX!

Boemong ba ts'ebetso, seva sa Endlessh se hloka ho kenngoa boema-kepeng bo tloaelehileng ba 22, moo li-hooligans li kokotang ka bongata. Litlhahiso tse tloaelehileng tsa ts'ireletso li lula li eletsa ho tsamaisa SSH ho ea boema-kepe bo fapaneng, e leng hang-hang e fokotsang boholo ba lifate ka taelo ea boholo.

Chris Wellons o re lenaneo la hae le sebelisa serapa se le seng sa litlhaloso RFC 4253 ho protocol ea SSH. Hang ka mor'a hore ho thehoe khokahanyo ea TCP, empa pele ho sebelisoa li-cryptography, mahlakore ka bobeli a tlameha ho romela khoele ea boitsebiso. Hape ho na le molaetsa: "Seva e kanna ea romela mela e meng ea data pele e romella mofuta oa mofuta". Mme ha ho na moeli ka bophahamo ba data ena, o hloka feela ho qala mola o mong le o mong ka SSH-.

Sena ke sona seo lenaneo la Endlessh le se etsang: eona romela sa feleng lethathamo la data e entsoeng ka tšohanyetso, e tsamaellanang le RFC 4253, ke hore, romella pele ho netefatso, 'me mohala o mong le o mong o qala ka SSH- mme ha e fete ditlhaku tse 255, ho kenyeletswa le tlhaku e qetellang moleng. Ka kakaretso, ntho e 'ngoe le e' ngoe e latela maemo.

Ka kamehla, lenaneo le emela metsotsoana e 10 pakeng tsa ho romela lipakete. Sena se etsa hore moreki a se ke a beheloa nako, kahoo moreki o tla qabelloa ka ho sa feleng.

Kaha data e romelloa pele cryptography e sebelisoa, lenaneo le bonolo haholo. Ha e hloke ho kenya ts'ebetsong li-ciphers le ho ts'ehetsa liprothokholo tse ngata.

Sengoli se lekile ho etsa bonnete ba hore sesebelisoa se sebelisa bonyane ba lisebelisoa mme se sebetsa se sa hlokomeloe ka botlalo mochining. Ho fapana le li-antivirus tsa sejoale-joale le "litsamaiso tse ling tsa ts'ireletso," ha ea lokela ho khoehlisa komporo ea hau. O khonne ho fokotsa ts'ebeliso ea sephethephethe le mohopolo ka lebaka la ts'ebetso e bohlale ea software. Haeba e ne e qala ts'ebetso e arohaneng mabapi le khokahano e ncha, joale bahlaseli ba ka bang teng ba ka qala tlhaselo ea DDoS ka ho bula likhokahano tse ngata ho qeta lisebelisoa mochining. Khoele e le 'ngoe ka khokahano le eona ha se khetho e ntle ka ho fetisisa, hobane kernel e tla senya lisebelisoa tse tsamaisang likhoele.

Ke ka lebaka leo Chris Wellons a khethileng khetho e bobebe ka ho fetisisa bakeng sa Endlessh: seva se nang le khoele e le 'ngoe poll(2), moo bareki ba lerabeng ba jang hoo e ka bang ha ho na lisebelisoa tse eketsehileng, ho sa bale ntho ea socket ka har'a kernel le li-byte tse ling tse 78 bakeng sa ho latela Endlesssh. Ho qoba ho fana ka li-buffers bakeng sa moreki e mong le e mong, Endlessh e bula sokete ea phihlello e tobileng mme e fetolela lipakete tsa TCP ka kotloloho, e feta hoo e batlang e le sistimi eohle ea ts'ebetso ea TCP/IP. Buffer e kenang ha e hlokehe ho hang, hobane ha re thahaselle data e kenang.

Mongodi o re ka nako ya lenaneo la hae ne ke sa tsebe mabapi le boteng ba Python's asycio le li-tarpits tse ling. Haeba a ne a tseba ka asycio, a ka kenya ts'ebeliso ea hae ka mela e 18 feela ho 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 e loketse ho ngola li-tarpits. Mohlala, hook ena e tla homisa Firefox, Chrome, kapa moreki ofe kapa ofe ea lekang ho hokela seva sa hau sa HTTP ka lihora tse ngata:

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 ke sesebelisoa se setle sa ho otla bo-'mampoli ba inthaneteng. Ke 'nete, ho na le kotsi e itseng, ho fapana le hoo, ea ho lebisa tlhokomelo ea bona boitšoarong bo sa tloaelehang ba seva se itseng. Motho emong o ka nahana ka boiphetetso le tlhaselo e lebisitsoeng ea DDoS ho IP ea hau. Leha ho le joalo, ho fihlela joale ha ho so be le linyeoe tse joalo, 'me li-tarpits li sebetsa hantle.

Trap (tarpit) bakeng sa likhokahano tsa SSH tse kenang

Source: www.habr.com

Eketsa ka tlhaloso