Trap (tarpit) para sa umaabot nga mga koneksyon sa SSH

Dili kini sekreto nga ang Internet usa ka dili maayo nga palibot. Sa diha nga imong gipataas ang usa ka server, kini gipailalom dayon sa daghang mga pag-atake ug daghang mga pag-scan. Pananglitan honeypot gikan sa mga security guard mabanabana nimo ang gidak-on niining trapik sa basura. Sa tinuud, sa kasagaran nga server, 99% sa trapiko mahimong malisyoso.

Ang Tarpit usa ka lit-ag nga pantalan nga gigamit sa pagpahinay sa umaabot nga mga koneksyon. Kung ang usa ka ikatulo nga partido nga sistema magkonektar sa kini nga pantalan, dili nimo dali nga masira ang koneksyon. Kinahanglan niyang usikan ang iyang mga kahinguhaan sa sistema ug maghulat hangtod nga matapos ang koneksyon, o mano-mano nga tapuson kini.

Kasagaran, ang mga tarpit gigamit alang sa pagpanalipod. Ang teknik una nga gihimo aron mapanalipdan batok sa mga worm sa kompyuter. Ug karon kini magamit sa pagguba sa mga kinabuhi sa mga spammer ug mga tigdukiduki nga nakigbahin sa halapad nga pag-scan sa tanan nga mga adres sa IP sa usa ka laray (mga pananglitan sa HabrΓ©: Austria, Ukraine).

Usa sa mga tagdumala sa sistema nga ginganlag Chris Wellons dayag nga gikapoy sa pagtan-aw niini nga kaulawan - ug nagsulat siya usa ka gamay nga programa Walay katapusan, usa ka tarpit alang sa SSH nga nagpahinay sa umaabot nga mga koneksyon. Ang programa nag-abli sa usa ka pantalan (ang default nga pantalan alang sa pagsulay mao ang 2222) ug nagpakaaron-ingnon nga usa ka SSH server, apan sa pagkatinuod kini nagtukod og walay katapusan nga koneksyon sa umaabot nga kliyente hangtud nga kini mohunong. Mahimong magpadayon kini sulod sa pipila ka mga adlaw o labaw pa hangtod nga mahulog ang kliyente.

Pag-instalar sa utility:

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

Ang usa ka husto nga gipatuman nga tarpit magkuha ug daghang mga kapanguhaan gikan sa tig-atake kaysa gikan kanimo. Apan dili ni usa ka butang sa mga kahinguhaan. Awtor Siya misulatnga ang programa makaadik. Sa pagkakaron aduna kini 27 ka mga kliyente nga natanggong, ang uban kanila konektado sulod sa mga semana. Sa kinapungkayan sa kalihokan, 1378 ka kliyente ang natanggong sulod sa 20 ka oras!

Sa operating mode, ang Endlessh server kinahanglan nga i-install sa naandan nga port 22, diin ang mga hooligans nanuktok sa kadaghanan. Ang standard nga mga rekomendasyon sa seguridad kanunay nagtambag sa pagbalhin sa SSH ngadto sa lain nga pantalan, nga diha-diha dayon makunhuran ang gidak-on sa mga troso pinaagi sa usa ka han-ay sa magnitude.

Si Chris Wellons nag-ingon nga ang iyang programa nagpahimulos sa usa ka parapo sa detalye RFC 4253 sa SSH protocol. Diha-diha dayon human maestablisar ang koneksyon sa TCP, apan sa dili pa i-apply ang cryptography, ang duha ka partido kinahanglang magpadala ug identification string. Ug adunay usa ka nota: "Ang server MAHIMO magpadala sa ubang mga linya sa datos sa dili pa ipadala ang bersyon nga linya". Ug walay limit sa gidaghanon sa niini nga data, kamo kinahanglan lang nga magsugod sa matag linya sa SSH-.

Mao gyud kini ang gibuhat sa Endlessh program: kini nagpadala walay katapusan stream sa random nga namugna nga datos, nga nagsunod sa RFC 4253, nga mao, ipadala sa dili pa ang pag-authenticate, ug ang matag linya magsugod sa SSH- ug dili molapas sa 255 ka mga karakter, lakip ang linya nga nagtapos sa karakter. Sa kinatibuk-an, ang tanan sumala sa sumbanan.

Sa kasagaran, ang programa maghulat 10 segundos tali sa pagpadala sa mga pakete. Kini nagpugong sa kliyente nga ma-time out, mao nga ang kliyente ma-trap sa kahangturan.

Tungod kay ang datos gipadala sa wala pa magamit ang cryptography, ang programa labi ka yano. Dili kinahanglan nga ipatuman ang bisan unsang mga cipher ug gisuportahan ang daghang mga protocol.

Gisulayan sa tagsulat nga masiguro nga ang utility mogamit usa ka minimum nga mga kahinguhaan ug molihok nga wala matagad sa makina. Dili sama sa modernong mga antivirus ug uban pang "mga sistema sa seguridad," kinahanglan nga dili kini magpahinay sa imong kompyuter. Nahimo niya nga mapamenos ang trapiko ug konsumo sa panumduman tungod sa gamay nga labi ka tuso nga pagpatuman sa software. Kung naglunsad lang kini og lain nga proseso sa usa ka bag-ong koneksyon, nan ang mga potensyal nga tig-atake mahimong maglunsad og pag-atake sa DDoS pinaagi sa pag-abli sa daghang mga koneksyon aron mahurot ang mga kapanguhaan sa makina. Ang usa ka hilo matag koneksyon dili usab ang labing kaayo nga kapilian, tungod kay ang kernel mag-usik sa mga kapanguhaan sa pagdumala sa mga hilo.

Mao nga gipili ni Chris Wellons ang labing gaan nga kapilian alang sa Endlessh: usa ka single-threaded server poll(2), diin ang mga kliyente sa lit-ag halos wala'y dugang nga mga kapanguhaan, wala'y pag-ihap sa socket nga butang sa kernel ug laing 78 ka bytes alang sa pagsubay sa Endlessh. Aron malikayan ang paggahin ug pagdawat ug pagpadala ug mga buffer para sa matag kliyente, ang Endlessh nag-abli ug direktang access socket ug direktang naghubad sa mga TCP packet, nga nag-bypass sa halos tibuok operating system nga TCP/IP stack. Dili kinahanglan ang umaabot nga buffer, tungod kay dili kami interesado sa umaabot nga datos.

Ang tagsulat nag-ingon nga sa panahon sa iyang programa wala kahibalo mahitungod sa paglungtad sa Python's asycio ug uban pang mga tarpits. Kung nahibal-an niya ang bahin sa asycio, mahimo niyang ipatuman ang iyang utility sa 18 lang ka linya sa 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())

Ang Asyncio maayo alang sa pagsulat sa mga tarpit. Pananglitan, kini nga kaw-it mag-freeze sa Firefox, Chrome, o bisan unsang kliyente nga naningkamot nga makonektar sa imong HTTP server sa daghang oras:

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())

Ang Tarpit usa ka maayong himan alang sa pagsilot sa mga tigdaogdaog sa online. Tinuod, adunay pipila ka risgo, sa sukwahi, sa pagdani sa ilang pagtagad ngadto sa talagsaon nga kinaiya sa usa ka partikular nga server. Kinsa tingali maghunahuna mahitungod sa pagpanimalos ug usa ka gipunting nga pag-atake sa DDoS sa imong IP. Bisan pa, hangtod karon wala’y ingon nga mga kaso, ug maayo ang pagtrabaho sa mga tarpit.

Mga hub:
Python, Seguridad sa impormasyon, Software, Administrasyon sa sistema

Tags:
SSH, Walay Katapusan, tarpit, tarpit, lit-ag, asycio
Trap (tarpit) para sa umaabot nga mga koneksyon sa SSH

Dili kini sekreto nga ang Internet usa ka dili maayo nga palibot. Sa diha nga imong gipataas ang usa ka server, kini gipailalom dayon sa daghang mga pag-atake ug daghang mga pag-scan. Pananglitan honeypot gikan sa mga security guard mabanabana nimo ang gidak-on niining trapik sa basura. Sa tinuud, sa kasagaran nga server, 99% sa trapiko mahimong malisyoso.

Ang Tarpit usa ka lit-ag nga pantalan nga gigamit sa pagpahinay sa umaabot nga mga koneksyon. Kung ang usa ka ikatulo nga partido nga sistema magkonektar sa kini nga pantalan, dili nimo dali nga masira ang koneksyon. Kinahanglan niyang usikan ang iyang mga kahinguhaan sa sistema ug maghulat hangtod nga matapos ang koneksyon, o mano-mano nga tapuson kini.

Kasagaran, ang mga tarpit gigamit alang sa pagpanalipod. Ang teknik una nga gihimo aron mapanalipdan batok sa mga worm sa kompyuter. Ug karon kini magamit sa pagguba sa mga kinabuhi sa mga spammer ug mga tigdukiduki nga nakigbahin sa halapad nga pag-scan sa tanan nga mga adres sa IP sa usa ka laray (mga pananglitan sa HabrΓ©: Austria, Ukraine).

Usa sa mga tagdumala sa sistema nga ginganlag Chris Wellons dayag nga gikapoy sa pagtan-aw niini nga kaulawan - ug nagsulat siya usa ka gamay nga programa Walay katapusan, usa ka tarpit alang sa SSH nga nagpahinay sa umaabot nga mga koneksyon. Ang programa nag-abli sa usa ka pantalan (ang default nga pantalan alang sa pagsulay mao ang 2222) ug nagpakaaron-ingnon nga usa ka SSH server, apan sa pagkatinuod kini nagtukod og walay katapusan nga koneksyon sa umaabot nga kliyente hangtud nga kini mohunong. Mahimong magpadayon kini sulod sa pipila ka mga adlaw o labaw pa hangtod nga mahulog ang kliyente.

Pag-instalar sa utility:

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

Ang usa ka husto nga gipatuman nga tarpit magkuha ug daghang mga kapanguhaan gikan sa tig-atake kaysa gikan kanimo. Apan dili ni usa ka butang sa mga kahinguhaan. Awtor Siya misulatnga ang programa makaadik. Sa pagkakaron aduna kini 27 ka mga kliyente nga natanggong, ang uban kanila konektado sulod sa mga semana. Sa kinapungkayan sa kalihokan, 1378 ka kliyente ang natanggong sulod sa 20 ka oras!

Sa operating mode, ang Endlessh server kinahanglan nga i-install sa naandan nga port 22, diin ang mga hooligans nanuktok sa kadaghanan. Ang standard nga mga rekomendasyon sa seguridad kanunay nagtambag sa pagbalhin sa SSH ngadto sa lain nga pantalan, nga diha-diha dayon makunhuran ang gidak-on sa mga troso pinaagi sa usa ka han-ay sa magnitude.

Si Chris Wellons nag-ingon nga ang iyang programa nagpahimulos sa usa ka parapo sa detalye RFC 4253 sa SSH protocol. Diha-diha dayon human maestablisar ang koneksyon sa TCP, apan sa dili pa i-apply ang cryptography, ang duha ka partido kinahanglang magpadala ug identification string. Ug adunay usa ka nota: "Ang server MAHIMO magpadala sa ubang mga linya sa datos sa dili pa ipadala ang bersyon nga linya". Ug walay limit sa gidaghanon sa niini nga data, kamo kinahanglan lang nga magsugod sa matag linya sa SSH-.

Mao gyud kini ang gibuhat sa Endlessh program: kini nagpadala walay katapusan stream sa random nga namugna nga datos, nga nagsunod sa RFC 4253, nga mao, ipadala sa dili pa ang pag-authenticate, ug ang matag linya magsugod sa SSH- ug dili molapas sa 255 ka mga karakter, lakip ang linya nga nagtapos sa karakter. Sa kinatibuk-an, ang tanan sumala sa sumbanan.

Sa kasagaran, ang programa maghulat 10 segundos tali sa pagpadala sa mga pakete. Kini nagpugong sa kliyente nga ma-time out, mao nga ang kliyente ma-trap sa kahangturan.

Tungod kay ang datos gipadala sa wala pa magamit ang cryptography, ang programa labi ka yano. Dili kinahanglan nga ipatuman ang bisan unsang mga cipher ug gisuportahan ang daghang mga protocol.

Gisulayan sa tagsulat nga masiguro nga ang utility mogamit usa ka minimum nga mga kahinguhaan ug molihok nga wala matagad sa makina. Dili sama sa modernong mga antivirus ug uban pang "mga sistema sa seguridad," kinahanglan nga dili kini magpahinay sa imong kompyuter. Nahimo niya nga mapamenos ang trapiko ug konsumo sa panumduman tungod sa gamay nga labi ka tuso nga pagpatuman sa software. Kung naglunsad lang kini og lain nga proseso sa usa ka bag-ong koneksyon, nan ang mga potensyal nga tig-atake mahimong maglunsad og pag-atake sa DDoS pinaagi sa pag-abli sa daghang mga koneksyon aron mahurot ang mga kapanguhaan sa makina. Ang usa ka hilo matag koneksyon dili usab ang labing kaayo nga kapilian, tungod kay ang kernel mag-usik sa mga kapanguhaan sa pagdumala sa mga hilo.

Mao nga gipili ni Chris Wellons ang labing gaan nga kapilian alang sa Endlessh: usa ka single-threaded server poll(2), diin ang mga kliyente sa lit-ag halos wala'y dugang nga mga kapanguhaan, wala'y pag-ihap sa socket nga butang sa kernel ug laing 78 ka bytes alang sa pagsubay sa Endlessh. Aron malikayan ang paggahin ug pagdawat ug pagpadala ug mga buffer para sa matag kliyente, ang Endlessh nag-abli ug direktang access socket ug direktang naghubad sa mga TCP packet, nga nag-bypass sa halos tibuok operating system nga TCP/IP stack. Dili kinahanglan ang umaabot nga buffer, tungod kay dili kami interesado sa umaabot nga datos.

Ang tagsulat nag-ingon nga sa panahon sa iyang programa wala kahibalo mahitungod sa paglungtad sa Python's asycio ug uban pang mga tarpits. Kung nahibal-an niya ang bahin sa asycio, mahimo niyang ipatuman ang iyang utility sa 18 lang ka linya sa 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())

Ang Asyncio maayo alang sa pagsulat sa mga tarpit. Pananglitan, kini nga kaw-it mag-freeze sa Firefox, Chrome, o bisan unsang kliyente nga naningkamot nga makonektar sa imong HTTP server sa daghang oras:

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())

Ang Tarpit usa ka maayong himan alang sa pagsilot sa mga tigdaogdaog sa online. Tinuod, adunay pipila ka risgo, sa sukwahi, sa pagdani sa ilang pagtagad ngadto sa talagsaon nga kinaiya sa usa ka partikular nga server. Kinsa tingali maghunahuna mahitungod sa pagpanimalos ug usa ka gipunting nga pag-atake sa DDoS sa imong IP. Bisan pa, hangtod karon wala’y ingon nga mga kaso, ug maayo ang pagtrabaho sa mga tarpit.

Trap (tarpit) para sa umaabot nga mga koneksyon sa SSH

Source: www.habr.com

Idugang sa usa ka comment