ఇన్‌కమింగ్ SSH కనెక్షన్‌ల కోసం ట్రాప్ (టార్పిట్).

ఇంటర్నెట్ చాలా ప్రతికూల వాతావరణం అని రహస్యం కాదు. మీరు సర్వర్‌ను పెంచిన వెంటనే, అది తక్షణమే భారీ దాడులు మరియు బహుళ స్కాన్‌లకు లోబడి ఉంటుంది. ఉదాహరణకి సెక్యూరిటీ గార్డుల నుండి హనీపాట్ మీరు ఈ చెత్త ట్రాఫిక్ స్థాయిని అంచనా వేయవచ్చు. వాస్తవానికి, సగటు సర్వర్‌లో, 99% ట్రాఫిక్ హానికరమైనది కావచ్చు.

టార్పిట్ అనేది ఇన్‌కమింగ్ కనెక్షన్‌లను నెమ్మదించడానికి ఉపయోగించే ట్రాప్ పోర్ట్. మూడవ పక్షం సిస్టమ్ ఈ పోర్ట్‌కు కనెక్ట్ చేయబడితే, మీరు కనెక్షన్‌ని త్వరగా మూసివేయలేరు. ఆమె తన సిస్టమ్ వనరులను వృధా చేయాలి మరియు కనెక్షన్ గడువు ముగిసే వరకు వేచి ఉండాలి లేదా దానిని మాన్యువల్‌గా ముగించాలి.

చాలా తరచుగా, టార్పిట్లను రక్షణ కోసం ఉపయోగిస్తారు. కంప్యూటర్ పురుగుల నుండి రక్షించడానికి సాంకేతికత మొదట అభివృద్ధి చేయబడింది. మరియు ఇప్పుడు అది వరుసగా అన్ని IP చిరునామాల విస్తృత స్కానింగ్‌లో నిమగ్నమై ఉన్న స్పామర్‌లు మరియు పరిశోధకుల జీవితాలను నాశనం చేయడానికి ఉపయోగించవచ్చు (హబ్రేలో ఉదాహరణలు: ఆస్ట్రియా, ఉక్రెయిన్).

క్రిస్ వెల్లన్స్ అనే సిస్టమ్ అడ్మినిస్ట్రేటర్‌లలో ఒకరు ఈ అవమానాన్ని చూసి విసిగిపోయారు - మరియు అతను ఒక చిన్న ప్రోగ్రామ్ రాశాడు అంతులేని, SSH కోసం టార్పిట్ ఇన్‌కమింగ్ కనెక్షన్‌లను నెమ్మదిస్తుంది. ప్రోగ్రామ్ ఒక పోర్ట్‌ను తెరుస్తుంది (పరీక్ష కోసం డిఫాల్ట్ పోర్ట్ 2222) మరియు SSH సర్వర్‌గా నటిస్తుంది, అయితే వాస్తవానికి ఇది వచ్చే వరకు వచ్చే క్లయింట్‌తో అంతులేని కనెక్షన్‌ను ఏర్పరుస్తుంది. క్లయింట్ పడిపోయే వరకు ఇది చాలా రోజులు లేదా అంతకంటే ఎక్కువ రోజులు కొనసాగవచ్చు.

యుటిలిటీ యొక్క సంస్థాపన:

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

సరిగ్గా అమలు చేయబడిన టార్పిట్ మీ నుండి కంటే దాడి చేసేవారి నుండి ఎక్కువ వనరులను తీసుకుంటుంది. కానీ ఇది వనరుల విషయం కూడా కాదు. రచయిత అతను వ్రాస్తూకార్యక్రమం వ్యసనపరుడైనదని. ప్రస్తుతం దానిలో 27 మంది క్లయింట్లు చిక్కుకున్నారు, వారిలో కొందరు వారాలపాటు కనెక్ట్ అయ్యారు. కార్యాచరణ యొక్క గరిష్ట సమయంలో, 1378 క్లయింట్లు 20 గంటల పాటు చిక్కుకున్నారు!

ఆపరేటింగ్ మోడ్‌లో, ఎండ్‌లెస్ సర్వర్ సాధారణ పోర్ట్ 22లో ఇన్‌స్టాల్ చేయబడాలి, ఇక్కడ పోకిరీలు మూకుమ్మడిగా కొట్టుకుంటారు. ప్రామాణిక భద్రతా సిఫార్సులు ఎల్లప్పుడూ SSHని వేరొక పోర్ట్‌కి తరలించమని సలహా ఇస్తాయి, ఇది లాగ్‌ల పరిమాణాన్ని మాగ్నిట్యూడ్ క్రమం ద్వారా వెంటనే తగ్గిస్తుంది.

క్రిస్ వెల్లన్స్ తన ప్రోగ్రామ్ స్పెసిఫికేషన్‌లోని ఒక పేరాని ఉపయోగించుకుందని చెప్పారు RFC 4253 SSH ప్రోటోకాల్‌కు. TCP కనెక్షన్ ఏర్పాటు చేయబడిన వెంటనే, కానీ క్రిప్టోగ్రఫీని వర్తింపజేయడానికి ముందు, రెండు పార్టీలు తప్పనిసరిగా గుర్తింపు స్ట్రింగ్‌ను పంపాలి. మరియు ఒక గమనిక కూడా ఉంది: "వెర్షన్ వరుసను పంపే ముందు సర్వర్ ఇతర డేటా వరుసలను పంపవచ్చు". మరియు పరిమితి లేకుండా ఈ డేటా వాల్యూమ్‌పై, మీరు ప్రతి పంక్తిని ప్రారంభించాలి SSH-.

ఇది ఎండ్‌లెస్ ప్రోగ్రామ్ చేస్తుంది: ఇది పంపుతుంది అంతులేని యాదృచ్ఛికంగా ఉత్పత్తి చేయబడిన డేటా యొక్క స్ట్రీమ్, ఇది RFC 4253కి అనుగుణంగా ఉంటుంది, అంటే, ప్రమాణీకరణకు ముందు పంపండి మరియు ప్రతి పంక్తి దీనితో ప్రారంభమవుతుంది SSH- మరియు పంక్తి ముగింపు అక్షరంతో సహా 255 అక్షరాలను మించకూడదు. సాధారణంగా, ప్రతిదీ ప్రమాణం ప్రకారం ఉంటుంది.

డిఫాల్ట్‌గా, ప్రోగ్రామ్ ప్యాకెట్‌లను పంపే మధ్య 10 సెకన్లు వేచి ఉంటుంది. ఇది క్లయింట్ సమయం ముగియకుండా నిరోధిస్తుంది, కాబట్టి క్లయింట్ ఎప్పటికీ చిక్కుకుపోతాడు.

క్రిప్టోగ్రఫీని వర్తింపజేయడానికి ముందు డేటా పంపబడినందున, ప్రోగ్రామ్ చాలా సులభం. ఇది ఏ సాంకేతికలిపిని అమలు చేయవలసిన అవసరం లేదు మరియు బహుళ ప్రోటోకాల్‌లకు మద్దతు ఇస్తుంది.

యుటిలిటీ కనీస వనరులను వినియోగిస్తుందని మరియు మెషీన్‌లో పూర్తిగా గుర్తించబడకుండా పని చేస్తుందని నిర్ధారించడానికి రచయిత ప్రయత్నించారు. ఆధునిక యాంటీవైరస్లు మరియు ఇతర "సెక్యూరిటీ సిస్టమ్స్" వలె కాకుండా, ఇది మీ కంప్యూటర్‌ను వేగాన్ని తగ్గించకూడదు. అతను కొంచెం ఎక్కువ మోసపూరిత సాఫ్ట్‌వేర్ అమలు కారణంగా ట్రాఫిక్ మరియు మెమరీ వినియోగం రెండింటినీ తగ్గించగలిగాడు. ఇది కొత్త కనెక్షన్‌పై ప్రత్యేక ప్రక్రియను ప్రారంభించినట్లయితే, సంభావ్య దాడి చేసేవారు మెషీన్‌లోని వనరులను ఎగ్జాస్ట్ చేయడానికి బహుళ కనెక్షన్‌లను తెరవడం ద్వారా DDoS దాడిని ప్రారంభించవచ్చు. ప్రతి కనెక్షన్‌కు ఒక థ్రెడ్ ఉత్తమ ఎంపిక కాదు, ఎందుకంటే కెర్నల్ థ్రెడ్‌లను నిర్వహించే వనరులను వృధా చేస్తుంది.

అందుకే క్రిస్ వెల్లన్స్ ఎండ్‌లెస్‌కు అత్యంత తేలికైన ఎంపికను ఎంచుకున్నారు: ఒకే-థ్రెడ్ సర్వర్ poll(2), ట్రాప్‌లోని క్లయింట్‌లు వాస్తవంగా అదనపు వనరులను వినియోగించరు, కెర్నల్‌లోని సాకెట్ వస్తువును మరియు ఎండ్‌లెస్‌లో ట్రాకింగ్ కోసం మరో 78 బైట్‌లను లెక్కించరు. ప్రతి క్లయింట్ కోసం రిసీవ్ మరియు పంపే బఫర్‌లను కేటాయించకుండా ఉండటానికి, ఎండ్‌లెస్ష్ డైరెక్ట్ యాక్సెస్ సాకెట్‌ను తెరుస్తుంది మరియు దాదాపు మొత్తం ఆపరేటింగ్ సిస్టమ్ TCP/IP స్టాక్‌ను దాటవేస్తూ TCP ప్యాకెట్‌లను నేరుగా అనువదిస్తుంది. ఇన్‌కమింగ్ బఫర్ అస్సలు అవసరం లేదు, ఎందుకంటే ఇన్‌కమింగ్ డేటాపై మాకు ఆసక్తి లేదు.

రచయిత తన ప్రోగ్రామ్ సమయంలో చెప్పారు తెలియదు పైథాన్ యొక్క అసిసియో మరియు ఇతర టార్పిట్‌ల ఉనికి గురించి. అతను asycio గురించి తెలిస్తే, అతను తన ప్రయోజనాన్ని పైథాన్‌లో కేవలం 18 లైన్లలో అమలు చేయగలడు:

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

టార్పిట్‌లను వ్రాయడానికి అసిన్సియో అనువైనది. ఉదాహరణకు, ఈ హుక్ Firefox, Chrome లేదా మీ HTTP సర్వర్‌కి కనెక్ట్ చేయడానికి ప్రయత్నిస్తున్న ఏదైనా ఇతర క్లయింట్ చాలా గంటలపాటు స్తంభింపజేస్తుంది:

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

ఆన్‌లైన్ బెదిరింపులను శిక్షించడానికి టార్పిట్ ఒక గొప్ప సాధనం. నిజమే, ఒక నిర్దిష్ట సర్వర్ యొక్క అసాధారణ ప్రవర్తనకు వారి దృష్టిని ఆకర్షించే కొంత ప్రమాదం ఉంది. ఎవరైనా ప్రతీకారం గురించి ఆలోచించవచ్చు మరియు మీ IPపై లక్షిత DDoS దాడి. అయితే, ఇప్పటివరకు అలాంటి కేసులు లేవు మరియు టార్పిట్‌లు గొప్పగా పనిచేస్తాయి.

కేంద్రాలు:
పైథాన్, ఇన్ఫర్మేషన్ సెక్యూరిటీ, సాఫ్ట్‌వేర్, సిస్టమ్ అడ్మినిస్ట్రేషన్

టాగ్లు:
SSH, ఎండ్లెస్, టార్పిట్, టార్పిట్, ట్రాప్, అసిసియో
ఇన్‌కమింగ్ SSH కనెక్షన్‌ల కోసం ట్రాప్ (టార్పిట్).

ఇంటర్నెట్ చాలా ప్రతికూల వాతావరణం అని రహస్యం కాదు. మీరు సర్వర్‌ను పెంచిన వెంటనే, అది తక్షణమే భారీ దాడులు మరియు బహుళ స్కాన్‌లకు లోబడి ఉంటుంది. ఉదాహరణకి సెక్యూరిటీ గార్డుల నుండి హనీపాట్ మీరు ఈ చెత్త ట్రాఫిక్ స్థాయిని అంచనా వేయవచ్చు. వాస్తవానికి, సగటు సర్వర్‌లో, 99% ట్రాఫిక్ హానికరమైనది కావచ్చు.

టార్పిట్ అనేది ఇన్‌కమింగ్ కనెక్షన్‌లను నెమ్మదించడానికి ఉపయోగించే ట్రాప్ పోర్ట్. మూడవ పక్షం సిస్టమ్ ఈ పోర్ట్‌కు కనెక్ట్ చేయబడితే, మీరు కనెక్షన్‌ని త్వరగా మూసివేయలేరు. ఆమె తన సిస్టమ్ వనరులను వృధా చేయాలి మరియు కనెక్షన్ గడువు ముగిసే వరకు వేచి ఉండాలి లేదా దానిని మాన్యువల్‌గా ముగించాలి.

చాలా తరచుగా, టార్పిట్లను రక్షణ కోసం ఉపయోగిస్తారు. కంప్యూటర్ పురుగుల నుండి రక్షించడానికి సాంకేతికత మొదట అభివృద్ధి చేయబడింది. మరియు ఇప్పుడు అది వరుసగా అన్ని IP చిరునామాల విస్తృత స్కానింగ్‌లో నిమగ్నమై ఉన్న స్పామర్‌లు మరియు పరిశోధకుల జీవితాలను నాశనం చేయడానికి ఉపయోగించవచ్చు (హబ్రేలో ఉదాహరణలు: ఆస్ట్రియా, ఉక్రెయిన్).

క్రిస్ వెల్లన్స్ అనే సిస్టమ్ అడ్మినిస్ట్రేటర్‌లలో ఒకరు ఈ అవమానాన్ని చూసి విసిగిపోయారు - మరియు అతను ఒక చిన్న ప్రోగ్రామ్ రాశాడు అంతులేని, SSH కోసం టార్పిట్ ఇన్‌కమింగ్ కనెక్షన్‌లను నెమ్మదిస్తుంది. ప్రోగ్రామ్ ఒక పోర్ట్‌ను తెరుస్తుంది (పరీక్ష కోసం డిఫాల్ట్ పోర్ట్ 2222) మరియు SSH సర్వర్‌గా నటిస్తుంది, అయితే వాస్తవానికి ఇది వచ్చే వరకు వచ్చే క్లయింట్‌తో అంతులేని కనెక్షన్‌ను ఏర్పరుస్తుంది. క్లయింట్ పడిపోయే వరకు ఇది చాలా రోజులు లేదా అంతకంటే ఎక్కువ రోజులు కొనసాగవచ్చు.

యుటిలిటీ యొక్క సంస్థాపన:

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

సరిగ్గా అమలు చేయబడిన టార్పిట్ మీ నుండి కంటే దాడి చేసేవారి నుండి ఎక్కువ వనరులను తీసుకుంటుంది. కానీ ఇది వనరుల విషయం కూడా కాదు. రచయిత అతను వ్రాస్తూకార్యక్రమం వ్యసనపరుడైనదని. ప్రస్తుతం దానిలో 27 మంది క్లయింట్లు చిక్కుకున్నారు, వారిలో కొందరు వారాలపాటు కనెక్ట్ అయ్యారు. కార్యాచరణ యొక్క గరిష్ట సమయంలో, 1378 క్లయింట్లు 20 గంటల పాటు చిక్కుకున్నారు!

ఆపరేటింగ్ మోడ్‌లో, ఎండ్‌లెస్ సర్వర్ సాధారణ పోర్ట్ 22లో ఇన్‌స్టాల్ చేయబడాలి, ఇక్కడ పోకిరీలు మూకుమ్మడిగా కొట్టుకుంటారు. ప్రామాణిక భద్రతా సిఫార్సులు ఎల్లప్పుడూ SSHని వేరొక పోర్ట్‌కి తరలించమని సలహా ఇస్తాయి, ఇది లాగ్‌ల పరిమాణాన్ని మాగ్నిట్యూడ్ క్రమం ద్వారా వెంటనే తగ్గిస్తుంది.

క్రిస్ వెల్లన్స్ తన ప్రోగ్రామ్ స్పెసిఫికేషన్‌లోని ఒక పేరాని ఉపయోగించుకుందని చెప్పారు RFC 4253 SSH ప్రోటోకాల్‌కు. TCP కనెక్షన్ ఏర్పాటు చేయబడిన వెంటనే, కానీ క్రిప్టోగ్రఫీని వర్తింపజేయడానికి ముందు, రెండు పార్టీలు తప్పనిసరిగా గుర్తింపు స్ట్రింగ్‌ను పంపాలి. మరియు ఒక గమనిక కూడా ఉంది: "వెర్షన్ వరుసను పంపే ముందు సర్వర్ ఇతర డేటా వరుసలను పంపవచ్చు". మరియు పరిమితి లేకుండా ఈ డేటా వాల్యూమ్‌పై, మీరు ప్రతి పంక్తిని ప్రారంభించాలి SSH-.

ఇది ఎండ్‌లెస్ ప్రోగ్రామ్ చేస్తుంది: ఇది పంపుతుంది అంతులేని యాదృచ్ఛికంగా ఉత్పత్తి చేయబడిన డేటా యొక్క స్ట్రీమ్, ఇది RFC 4253కి అనుగుణంగా ఉంటుంది, అంటే, ప్రమాణీకరణకు ముందు పంపండి మరియు ప్రతి పంక్తి దీనితో ప్రారంభమవుతుంది SSH- మరియు పంక్తి ముగింపు అక్షరంతో సహా 255 అక్షరాలను మించకూడదు. సాధారణంగా, ప్రతిదీ ప్రమాణం ప్రకారం ఉంటుంది.

డిఫాల్ట్‌గా, ప్రోగ్రామ్ ప్యాకెట్‌లను పంపే మధ్య 10 సెకన్లు వేచి ఉంటుంది. ఇది క్లయింట్ సమయం ముగియకుండా నిరోధిస్తుంది, కాబట్టి క్లయింట్ ఎప్పటికీ చిక్కుకుపోతాడు.

క్రిప్టోగ్రఫీని వర్తింపజేయడానికి ముందు డేటా పంపబడినందున, ప్రోగ్రామ్ చాలా సులభం. ఇది ఏ సాంకేతికలిపిని అమలు చేయవలసిన అవసరం లేదు మరియు బహుళ ప్రోటోకాల్‌లకు మద్దతు ఇస్తుంది.

యుటిలిటీ కనీస వనరులను వినియోగిస్తుందని మరియు మెషీన్‌లో పూర్తిగా గుర్తించబడకుండా పని చేస్తుందని నిర్ధారించడానికి రచయిత ప్రయత్నించారు. ఆధునిక యాంటీవైరస్లు మరియు ఇతర "సెక్యూరిటీ సిస్టమ్స్" వలె కాకుండా, ఇది మీ కంప్యూటర్‌ను వేగాన్ని తగ్గించకూడదు. అతను కొంచెం ఎక్కువ మోసపూరిత సాఫ్ట్‌వేర్ అమలు కారణంగా ట్రాఫిక్ మరియు మెమరీ వినియోగం రెండింటినీ తగ్గించగలిగాడు. ఇది కొత్త కనెక్షన్‌పై ప్రత్యేక ప్రక్రియను ప్రారంభించినట్లయితే, సంభావ్య దాడి చేసేవారు మెషీన్‌లోని వనరులను ఎగ్జాస్ట్ చేయడానికి బహుళ కనెక్షన్‌లను తెరవడం ద్వారా DDoS దాడిని ప్రారంభించవచ్చు. ప్రతి కనెక్షన్‌కు ఒక థ్రెడ్ ఉత్తమ ఎంపిక కాదు, ఎందుకంటే కెర్నల్ థ్రెడ్‌లను నిర్వహించే వనరులను వృధా చేస్తుంది.

అందుకే క్రిస్ వెల్లన్స్ ఎండ్‌లెస్‌కు అత్యంత తేలికైన ఎంపికను ఎంచుకున్నారు: ఒకే-థ్రెడ్ సర్వర్ poll(2), ట్రాప్‌లోని క్లయింట్‌లు వాస్తవంగా అదనపు వనరులను వినియోగించరు, కెర్నల్‌లోని సాకెట్ వస్తువును మరియు ఎండ్‌లెస్‌లో ట్రాకింగ్ కోసం మరో 78 బైట్‌లను లెక్కించరు. ప్రతి క్లయింట్ కోసం రిసీవ్ మరియు పంపే బఫర్‌లను కేటాయించకుండా ఉండటానికి, ఎండ్‌లెస్ష్ డైరెక్ట్ యాక్సెస్ సాకెట్‌ను తెరుస్తుంది మరియు దాదాపు మొత్తం ఆపరేటింగ్ సిస్టమ్ TCP/IP స్టాక్‌ను దాటవేస్తూ TCP ప్యాకెట్‌లను నేరుగా అనువదిస్తుంది. ఇన్‌కమింగ్ బఫర్ అస్సలు అవసరం లేదు, ఎందుకంటే ఇన్‌కమింగ్ డేటాపై మాకు ఆసక్తి లేదు.

రచయిత తన ప్రోగ్రామ్ సమయంలో చెప్పారు తెలియదు పైథాన్ యొక్క అసిసియో మరియు ఇతర టార్పిట్‌ల ఉనికి గురించి. అతను asycio గురించి తెలిస్తే, అతను తన ప్రయోజనాన్ని పైథాన్‌లో కేవలం 18 లైన్లలో అమలు చేయగలడు:

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

టార్పిట్‌లను వ్రాయడానికి అసిన్సియో అనువైనది. ఉదాహరణకు, ఈ హుక్ Firefox, Chrome లేదా మీ HTTP సర్వర్‌కి కనెక్ట్ చేయడానికి ప్రయత్నిస్తున్న ఏదైనా ఇతర క్లయింట్ చాలా గంటలపాటు స్తంభింపజేస్తుంది:

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

ఆన్‌లైన్ బెదిరింపులను శిక్షించడానికి టార్పిట్ ఒక గొప్ప సాధనం. నిజమే, ఒక నిర్దిష్ట సర్వర్ యొక్క అసాధారణ ప్రవర్తనకు వారి దృష్టిని ఆకర్షించే కొంత ప్రమాదం ఉంది. ఎవరైనా ప్రతీకారం గురించి ఆలోచించవచ్చు మరియు మీ IPపై లక్షిత DDoS దాడి. అయితే, ఇప్పటివరకు అలాంటి కేసులు లేవు మరియు టార్పిట్‌లు గొప్పగా పనిచేస్తాయి.

ఇన్‌కమింగ్ SSH కనెక్షన్‌ల కోసం ట్రాప్ (టార్పిట్).

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి