உள்வரும் SSH இணைப்புகளுக்கான பொறி (டார்பிட்).

இணையம் மிகவும் விரோதமான சூழல் என்பது இரகசியமல்ல. நீங்கள் ஒரு சேவையகத்தை உயர்த்தியவுடன், அது உடனடியாக பாரிய தாக்குதல்கள் மற்றும் பல ஸ்கேன்களுக்கு உட்படுத்தப்படும். உதாரணத்திற்கு பாதுகாவலர்களிடமிருந்து ஹனிபாட் இந்த குப்பை போக்குவரத்தின் அளவை நீங்கள் மதிப்பிடலாம். உண்மையில், சராசரி சர்வரில், 99% டிராஃபிக் தீங்கிழைக்கும்.

டார்பிட் என்பது உள்வரும் இணைப்புகளை மெதுவாக்க பயன்படும் ஒரு ட்ராப் போர்ட் ஆகும். மூன்றாம் தரப்பு அமைப்பு இந்த போர்ட்டுடன் இணைக்கப்பட்டால், நீங்கள் விரைவாக இணைப்பை மூட முடியாது. அவள் தனது கணினி வளங்களை வீணாக்க வேண்டும் மற்றும் இணைப்பு நேரம் முடிவடையும் வரை காத்திருக்க வேண்டும் அல்லது கைமுறையாக அதை நிறுத்த வேண்டும்.

பெரும்பாலும், டார்பிட்கள் பாதுகாப்பிற்காக பயன்படுத்தப்படுகின்றன. கணினி புழுக்களிலிருந்து பாதுகாப்பதற்காக முதலில் இந்த நுட்பம் உருவாக்கப்பட்டது. இப்போது இது ஸ்பேமர்கள் மற்றும் ஆராய்ச்சியாளர்களின் வாழ்க்கையை அழிக்கப் பயன்படுகிறது, அவர்கள் ஒரு வரிசையில் அனைத்து ஐபி முகவரிகளையும் பரந்த ஸ்கேன் செய்வதில் ஈடுபட்டுள்ளனர் (ஹப்ரேயில் எடுத்துக்காட்டுகள்: ஆஸ்திரியா, உக்ரைன்).

கிறிஸ் வெல்லன்ஸ் என்ற கணினி நிர்வாகிகளில் ஒருவர் இந்த அவமானத்தைப் பார்த்து சோர்வடைந்தார் - மேலும் அவர் ஒரு சிறிய நிரலை எழுதினார். முடிவற்ற, உள்வரும் இணைப்புகளை மெதுவாக்கும் 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 பைட்டுகள். ஒவ்வொரு கிளையண்டிற்கும் பெறுதல் மற்றும் அனுப்புதல் இடையகங்களை ஒதுக்குவதைத் தவிர்க்க, எண்ட்லெஷ் ஒரு நேரடி அணுகல் சாக்கெட்டைத் திறந்து டிசிபி பாக்கெட்டுகளை நேரடியாக மொழிபெயர்த்து, கிட்டத்தட்ட முழு இயக்க முறைமை டிசிபி/ஐபி ஸ்டேக்கையும் கடந்து செல்கிறது. உள்வரும் பஃபர் தேவையில்லை, ஏனென்றால் உள்வரும் தரவுகளில் எங்களுக்கு ஆர்வம் இல்லை.

ஆசிரியர் தனது நிகழ்ச்சியின் போது கூறுகிறார் தெரியவில்லை பைத்தானின் அசிசியோ மற்றும் பிற டார்பிட்கள் இருப்பதைப் பற்றி. 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% டிராஃபிக் தீங்கிழைக்கும்.

டார்பிட் என்பது உள்வரும் இணைப்புகளை மெதுவாக்க பயன்படும் ஒரு ட்ராப் போர்ட் ஆகும். மூன்றாம் தரப்பு அமைப்பு இந்த போர்ட்டுடன் இணைக்கப்பட்டால், நீங்கள் விரைவாக இணைப்பை மூட முடியாது. அவள் தனது கணினி வளங்களை வீணாக்க வேண்டும் மற்றும் இணைப்பு நேரம் முடிவடையும் வரை காத்திருக்க வேண்டும் அல்லது கைமுறையாக அதை நிறுத்த வேண்டும்.

பெரும்பாலும், டார்பிட்கள் பாதுகாப்பிற்காக பயன்படுத்தப்படுகின்றன. கணினி புழுக்களிலிருந்து பாதுகாப்பதற்காக முதலில் இந்த நுட்பம் உருவாக்கப்பட்டது. இப்போது இது ஸ்பேமர்கள் மற்றும் ஆராய்ச்சியாளர்களின் வாழ்க்கையை அழிக்கப் பயன்படுகிறது, அவர்கள் ஒரு வரிசையில் அனைத்து ஐபி முகவரிகளையும் பரந்த ஸ்கேன் செய்வதில் ஈடுபட்டுள்ளனர் (ஹப்ரேயில் எடுத்துக்காட்டுகள்: ஆஸ்திரியா, உக்ரைன்).

கிறிஸ் வெல்லன்ஸ் என்ற கணினி நிர்வாகிகளில் ஒருவர் இந்த அவமானத்தைப் பார்த்து சோர்வடைந்தார் - மேலும் அவர் ஒரு சிறிய நிரலை எழுதினார். முடிவற்ற, உள்வரும் இணைப்புகளை மெதுவாக்கும் 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 பைட்டுகள். ஒவ்வொரு கிளையண்டிற்கும் பெறுதல் மற்றும் அனுப்புதல் இடையகங்களை ஒதுக்குவதைத் தவிர்க்க, எண்ட்லெஷ் ஒரு நேரடி அணுகல் சாக்கெட்டைத் திறந்து டிசிபி பாக்கெட்டுகளை நேரடியாக மொழிபெயர்த்து, கிட்டத்தட்ட முழு இயக்க முறைமை டிசிபி/ஐபி ஸ்டேக்கையும் கடந்து செல்கிறது. உள்வரும் பஃபர் தேவையில்லை, ஏனென்றால் உள்வரும் தரவுகளில் எங்களுக்கு ஆர்வம் இல்லை.

ஆசிரியர் தனது நிகழ்ச்சியின் போது கூறுகிறார் தெரியவில்லை பைத்தானின் அசிசியோ மற்றும் பிற டார்பிட்கள் இருப்பதைப் பற்றி. 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

கருத்தைச் சேர்