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
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é:
Ọ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.
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
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 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ẹ
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
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
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é:
Ọ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.
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
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 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ẹ
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
orisun: www.habr.com