Pakute (tarpit) fun awọn asopọ SSH ti nwọle

Kii ṣe aṣiri pe Intanẹẹti jẹ agbegbe ọta pupọ. Ni kete ti o ba gbe olupin soke, o ti tẹriba lesekese si awọn ikọlu nla ati awọn ọlọjẹ lọpọlọpọ. Fun apere honeypot lati aabo olusona o le ṣe iṣiro iwọn ti ijabọ idoti yii. Ni otitọ, lori olupin apapọ, 99% ti ijabọ le jẹ irira.

Tarpit jẹ ibudo idẹkùn ti a lo lati fa fifalẹ awọn asopọ ti nwọle. Ti eto ẹnikẹta kan ba sopọ si ibudo yii, iwọ kii yoo ni anfani lati yara ti asopọ naa. Yoo ni lati padanu awọn orisun eto rẹ ki o duro titi akoko asopọ yoo fi pari, tabi fi opin si pẹlu ọwọ.

Ni ọpọlọpọ igba, awọn tarpits ni a lo fun aabo. Ilana naa ni idagbasoke akọkọ lati daabobo lodi si awọn kokoro kọmputa. Ati ni bayi o le ṣee lo lati ba awọn igbesi aye awọn spammers jẹ ati awọn oniwadi ti o ṣiṣẹ ni ọlọjẹ gbooro ti gbogbo awọn adirẹsi IP ni ọna kan (awọn apẹẹrẹ lori Habré: Austria, Ukraine).

Ọkan ninu awọn oludari eto ti a npè ni Chris Wellons dabi ẹni pe o rẹwẹsi wiwo itiju yii - o si kọ eto kekere kan. Ailopin, Tarpit fun SSH ti o fa fifalẹ awọn asopọ ti nwọle. Eto naa ṣii ibudo kan (ibudo aiyipada fun idanwo jẹ 2222) ati pe o dibọn pe o jẹ olupin SSH, ṣugbọn ni otitọ o ṣe agbekalẹ asopọ ailopin pẹlu alabara ti nwọle titi yoo fi silẹ. Eyi le tẹsiwaju fun awọn ọjọ pupọ tabi diẹ sii titi ti alabara yoo fi ṣubu.

Fifi sori ẹrọ ti ohun elo:

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

Tarpit ti a ṣe imuse daradara yoo gba awọn orisun diẹ sii lati ọdọ ikọlu ju lati ọdọ rẹ lọ. Sugbon o ni ko ani ọrọ kan ti oro. Onkọwe o Levinpe eto naa jẹ afẹsodi. Ni bayi o ni awọn alabara 27 ti o ni idẹkùn, diẹ ninu wọn ti sopọ fun awọn ọsẹ. Ni tente oke ti iṣẹ ṣiṣe, awọn alabara 1378 wa ni idẹkùn fun awọn wakati 20!

Ni ipo iṣẹ, olupin Endless nilo lati fi sori ẹrọ lori ibudo 22 deede, nibiti awọn hooligans kolu ni ọpọ. Awọn iṣeduro aabo boṣewa nigbagbogbo ni imọran gbigbe SSH si ibudo ti o yatọ, eyiti o dinku iwọn awọn akọọlẹ lẹsẹkẹsẹ nipasẹ aṣẹ titobi.

Chris Wellons sọ pe eto rẹ lo paragira kan ti sipesifikesonu naa RFC 4253 si ilana SSH. Lẹsẹkẹsẹ lẹhin asopọ TCP ti fi idi mulẹ, ṣugbọn ṣaaju lilo cryptography, ẹgbẹ mejeeji gbọdọ fi okun idanimọ ranṣẹ. Ati pe akọsilẹ tun wa: "Olupinpin le fi awọn ori ila data miiran ranṣẹ ṣaaju fifiranṣẹ laini ikede naa"... ATI ko si iye to lori iwọn didun ti data yii, o kan nilo lati bẹrẹ laini kọọkan pẹlu SSH-.

Eyi ni pato ohun ti eto Endlessh ṣe: o rán ailopin ṣiṣan ti ipilẹṣẹ data laileto, eyiti o ni ibamu pẹlu RFC 4253, iyẹn ni, firanṣẹ ṣaaju iṣeduro, ati laini kọọkan bẹrẹ pẹlu SSH- ati pe ko kọja awọn ohun kikọ 255, pẹlu kikọ ipari ila. Ni gbogbogbo, ohun gbogbo wa ni ibamu si boṣewa.

Nipa aiyipada, eto naa duro fun iṣẹju-aaya 10 laarin awọn apo-iwe fifiranṣẹ. Eyi ṣe idiwọ alabara lati ni akoko, nitorinaa alabara yoo wa ni idẹkùn lailai.

Niwọn igba ti a ti firanṣẹ data ṣaaju lilo cryptography, eto naa rọrun pupọ. Ko nilo lati ṣe imuṣe awọn apamọ eyikeyi ati ṣe atilẹyin awọn ilana pupọ.

Onkọwe gbiyanju lati rii daju pe IwUlO n gba awọn orisun ti o kere ju ati pe o ṣiṣẹ laisi akiyesi patapata lori ẹrọ naa. Ko dabi awọn antivirus ode oni ati “awọn eto aabo,” ko yẹ ki o fa fifalẹ kọnputa rẹ. O ṣakoso lati dinku ijabọ mejeeji ati agbara iranti nitori imuse sọfitiwia arekereke diẹ diẹ sii. Ti o ba ṣe ifilọlẹ ilana lọtọ nirọrun lori asopọ tuntun, lẹhinna awọn ikọlu agbara le ṣe ifilọlẹ ikọlu DDoS kan nipa ṣiṣi awọn asopọ pupọ si awọn orisun eefi lori ẹrọ naa. Okun kan fun asopọ tun kii ṣe aṣayan ti o dara julọ, nitori ekuro yoo padanu awọn orisun iṣakoso awọn okun.

Ti o ni idi ti Chris Wellons yan aṣayan iwuwo fẹẹrẹ julọ fun Endlessh: olupin asapo kan poll(2), nibiti awọn alabara ti o wa ninu pakute ko jẹ awọn orisun afikun, kii ṣe kika ohun elo iho ninu ekuro ati awọn baiti 78 miiran fun titọpa ni Endlessh. Lati yago fun nini lati pin gbigba ati firanṣẹ awọn buffers fun alabara kọọkan, Endlessh ṣii iho iwọle taara kan ati tumọ awọn apo-iwe TCP taara, nipa gbigbe fere gbogbo ẹrọ ṣiṣe TCP/IP akopọ. Ifipamọ ti nwọle ko nilo rara, nitori a ko nifẹ si data ti nwọle.

Onkọwe sọ pe ni akoko eto rẹ ko mọ nipa aye ti Python's asycio ati awọn tarpits miiran. Ti o ba mọ nipa asycio, o le ṣe imuse ohun elo rẹ ni awọn laini 18 nikan ni 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 jẹ apẹrẹ fun kikọ awọn tarpits. Fun apẹẹrẹ, kio yii yoo di Firefox, Chrome, tabi eyikeyi alabara miiran ti o ngbiyanju lati sopọ si olupin HTTP rẹ fun awọn wakati pupọ:

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 jẹ irinṣẹ nla fun ijiya awọn onijagidijagan ori ayelujara. Ni otitọ, diẹ ninu ewu wa, ni ilodi si, ti fifa ifojusi wọn si ihuwasi dani ti olupin kan pato. Ẹnikan le ronu nipa ẹsan ati ikọlu DDoS ti a fojusi lori IP rẹ. Sibẹsibẹ, titi di isisiyi ko si iru awọn ọran bẹ, ati pe awọn tarpits ṣiṣẹ nla.

Awọn ibudo:
Python, Aabo alaye, Software, Isakoso eto

Tags:
SSH, Ailopin, tarpit, tarpit, pakute, asycio
Pakute (tarpit) fun awọn asopọ SSH ti nwọle

Kii ṣe aṣiri pe Intanẹẹti jẹ agbegbe ọta pupọ. Ni kete ti o ba gbe olupin soke, o ti tẹriba lesekese si awọn ikọlu nla ati awọn ọlọjẹ lọpọlọpọ. Fun apere honeypot lati aabo olusona o le ṣe iṣiro iwọn ti ijabọ idoti yii. Ni otitọ, lori olupin apapọ, 99% ti ijabọ le jẹ irira.

Tarpit jẹ ibudo idẹkùn ti a lo lati fa fifalẹ awọn asopọ ti nwọle. Ti eto ẹnikẹta kan ba sopọ si ibudo yii, iwọ kii yoo ni anfani lati yara ti asopọ naa. Yoo ni lati padanu awọn orisun eto rẹ ki o duro titi akoko asopọ yoo fi pari, tabi fi opin si pẹlu ọwọ.

Ni ọpọlọpọ igba, awọn tarpits ni a lo fun aabo. Ilana naa ni idagbasoke akọkọ lati daabobo lodi si awọn kokoro kọmputa. Ati ni bayi o le ṣee lo lati ba awọn igbesi aye awọn spammers jẹ ati awọn oniwadi ti o ṣiṣẹ ni ọlọjẹ gbooro ti gbogbo awọn adirẹsi IP ni ọna kan (awọn apẹẹrẹ lori Habré: Austria, Ukraine).

Ọkan ninu awọn oludari eto ti a npè ni Chris Wellons dabi ẹni pe o rẹwẹsi wiwo itiju yii - o si kọ eto kekere kan. Ailopin, Tarpit fun SSH ti o fa fifalẹ awọn asopọ ti nwọle. Eto naa ṣii ibudo kan (ibudo aiyipada fun idanwo jẹ 2222) ati pe o dibọn pe o jẹ olupin SSH, ṣugbọn ni otitọ o ṣe agbekalẹ asopọ ailopin pẹlu alabara ti nwọle titi yoo fi silẹ. Eyi le tẹsiwaju fun awọn ọjọ pupọ tabi diẹ sii titi ti alabara yoo fi ṣubu.

Fifi sori ẹrọ ti ohun elo:

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

Tarpit ti a ṣe imuse daradara yoo gba awọn orisun diẹ sii lati ọdọ ikọlu ju lati ọdọ rẹ lọ. Sugbon o ni ko ani ọrọ kan ti oro. Onkọwe o Levinpe eto naa jẹ afẹsodi. Ni bayi o ni awọn alabara 27 ti o ni idẹkùn, diẹ ninu wọn ti sopọ fun awọn ọsẹ. Ni tente oke ti iṣẹ ṣiṣe, awọn alabara 1378 wa ni idẹkùn fun awọn wakati 20!

Ni ipo iṣẹ, olupin Endless nilo lati fi sori ẹrọ lori ibudo 22 deede, nibiti awọn hooligans kolu ni ọpọ. Awọn iṣeduro aabo boṣewa nigbagbogbo ni imọran gbigbe SSH si ibudo ti o yatọ, eyiti o dinku iwọn awọn akọọlẹ lẹsẹkẹsẹ nipasẹ aṣẹ titobi.

Chris Wellons sọ pe eto rẹ lo paragira kan ti sipesifikesonu naa RFC 4253 si ilana SSH. Lẹsẹkẹsẹ lẹhin asopọ TCP ti fi idi mulẹ, ṣugbọn ṣaaju lilo cryptography, ẹgbẹ mejeeji gbọdọ fi okun idanimọ ranṣẹ. Ati pe akọsilẹ tun wa: "Olupinpin le fi awọn ori ila data miiran ranṣẹ ṣaaju fifiranṣẹ laini ikede naa"... ATI ko si iye to lori iwọn didun ti data yii, o kan nilo lati bẹrẹ laini kọọkan pẹlu SSH-.

Eyi ni pato ohun ti eto Endlessh ṣe: o rán ailopin ṣiṣan ti ipilẹṣẹ data laileto, eyiti o ni ibamu pẹlu RFC 4253, iyẹn ni, firanṣẹ ṣaaju iṣeduro, ati laini kọọkan bẹrẹ pẹlu SSH- ati pe ko kọja awọn ohun kikọ 255, pẹlu kikọ ipari ila. Ni gbogbogbo, ohun gbogbo wa ni ibamu si boṣewa.

Nipa aiyipada, eto naa duro fun iṣẹju-aaya 10 laarin awọn apo-iwe fifiranṣẹ. Eyi ṣe idiwọ alabara lati ni akoko, nitorinaa alabara yoo wa ni idẹkùn lailai.

Niwọn igba ti a ti firanṣẹ data ṣaaju lilo cryptography, eto naa rọrun pupọ. Ko nilo lati ṣe imuṣe awọn apamọ eyikeyi ati ṣe atilẹyin awọn ilana pupọ.

Onkọwe gbiyanju lati rii daju pe IwUlO n gba awọn orisun ti o kere ju ati pe o ṣiṣẹ laisi akiyesi patapata lori ẹrọ naa. Ko dabi awọn antivirus ode oni ati “awọn eto aabo,” ko yẹ ki o fa fifalẹ kọnputa rẹ. O ṣakoso lati dinku ijabọ mejeeji ati agbara iranti nitori imuse sọfitiwia arekereke diẹ diẹ sii. Ti o ba ṣe ifilọlẹ ilana lọtọ nirọrun lori asopọ tuntun, lẹhinna awọn ikọlu agbara le ṣe ifilọlẹ ikọlu DDoS kan nipa ṣiṣi awọn asopọ pupọ si awọn orisun eefi lori ẹrọ naa. Okun kan fun asopọ tun kii ṣe aṣayan ti o dara julọ, nitori ekuro yoo padanu awọn orisun iṣakoso awọn okun.

Ti o ni idi ti Chris Wellons yan aṣayan iwuwo fẹẹrẹ julọ fun Endlessh: olupin asapo kan poll(2), nibiti awọn alabara ti o wa ninu pakute ko jẹ awọn orisun afikun, kii ṣe kika ohun elo iho ninu ekuro ati awọn baiti 78 miiran fun titọpa ni Endlessh. Lati yago fun nini lati pin gbigba ati firanṣẹ awọn buffers fun alabara kọọkan, Endlessh ṣii iho iwọle taara kan ati tumọ awọn apo-iwe TCP taara, nipa gbigbe fere gbogbo ẹrọ ṣiṣe TCP/IP akopọ. Ifipamọ ti nwọle ko nilo rara, nitori a ko nifẹ si data ti nwọle.

Onkọwe sọ pe ni akoko eto rẹ ko mọ nipa aye ti Python's asycio ati awọn tarpits miiran. Ti o ba mọ nipa asycio, o le ṣe imuse ohun elo rẹ ni awọn laini 18 nikan ni 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 jẹ apẹrẹ fun kikọ awọn tarpits. Fun apẹẹrẹ, kio yii yoo di Firefox, Chrome, tabi eyikeyi alabara miiran ti o ngbiyanju lati sopọ si olupin HTTP rẹ fun awọn wakati pupọ:

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 jẹ irinṣẹ nla fun ijiya awọn onijagidijagan ori ayelujara. Ni otitọ, diẹ ninu ewu wa, ni ilodi si, ti fifa ifojusi wọn si ihuwasi dani ti olupin kan pato. Ẹnikan le ronu nipa ẹsan ati ikọlu DDoS ti a fojusi lori IP rẹ. Sibẹsibẹ, titi di isisiyi ko si iru awọn ọran bẹ, ati pe awọn tarpits ṣiṣẹ nla.

Pakute (tarpit) fun awọn asopọ SSH ti nwọle

orisun: www.habr.com

Fi ọrọìwòye kun