በይነመረብ በጣም ጠበኛ የሆነ አካባቢ ለመሆኑ ሚስጥር አይደለም። አገልጋይ እንዳሳደጉ ወዲያውኑ ለትላልቅ ጥቃቶች እና በርካታ ፍተሻዎች ይጋለጣሉ። ለምሳሌ
ታርፒት ገቢ ግንኙነቶችን ለማዘግየት የሚያገለግል የወጥመድ ወደብ ነው። የሶስተኛ ወገን ስርዓት ከዚህ ወደብ ጋር ከተገናኘ ግንኙነቱን በፍጥነት መዝጋት አይችሉም። የስርዓት ሀብቷን ማባከን እና የግንኙነቱ ጊዜ እስኪያልቅ ድረስ መጠበቅ አለባት ወይም በእጅ ማቆም አለባት።
ብዙውን ጊዜ, ታርፒቶች ለመከላከል ጥቅም ላይ ይውላሉ. ቴክኒኩ በመጀመሪያ የተሰራው ከኮምፒዩተር ትሎች ለመከላከል ነው። እና አሁን ሁሉንም የአይ ፒ አድራሻዎችን በተከታታይ በመቃኘት ላይ የተሰማሩ አይፈለጌ መልዕክት ሰሪዎችን እና ተመራማሪዎችን ህይወት ለማጥፋት ስራ ላይ ሊውል ይችላል (በሀበሬ ላይ ያሉ ምሳሌዎች፡-
ከስርዓቱ አስተዳዳሪዎች አንዱ ክሪስ ዌሎንስ ይህን ውርደት መመልከት ሰልችቶት ይመስላል - እና ትንሽ ፕሮግራም ጻፈ።
የመገልገያውን ጭነት;
$ make
$ ./endlessh &
$ ssh -p2222 localhost
በትክክል የተተገበረ ታርፒት ከእርስዎ ይልቅ ብዙ ሀብቶችን ከአጥቂው ይወስዳል። ግን የሃብት ጉዳይ እንኳን አይደለም። ደራሲ
በኦፕሬቲንግ ሞድ ውስጥ፣ ‹Endless› አገልጋይ በተለመደው ወደብ 22 ላይ መጫን አለበት፣ እዚያም hooligans በጅምላ ያንኳኳል። መደበኛ የደህንነት ምክሮች ሁልጊዜ ኤስኤስኤች ወደተለየ ወደብ እንዲዘዋወሩ ይመክራሉ, ይህም ወዲያውኑ የምዝግብ ማስታወሻዎችን በቅደም ተከተል ይቀንሳል.
ክሪስ ዌሎንስ የእሱ ፕሮግራም የዝርዝሩን አንድ አንቀጽ ይጠቀማል ይላል። SSH-
.
ይህ በትክክል Endlesssh ፕሮግራም የሚያደርገው ነው: እሱ ይልካል ማለቂያ የለውም በዘፈቀደ የመነጨ የውሂብ ፍሰትከ RFC 4253 ጋር የሚጣጣም ማለትም ከማረጋገጡ በፊት ይላኩ እና እያንዳንዱ መስመር የሚጀምረው በ SSH-
እና ከ 255 ቁምፊዎች አይበልጥም, የመስመር መጨረሻ ባህሪን ጨምሮ. በአጠቃላይ ሁሉም ነገር በደረጃው መሰረት ነው.
በነባሪ, ፓኬጆችን መላክ መካከል ፕሮግራሙ 10 ሰከንድ ይጠብቃል. ይህ ደንበኛው ጊዜ እንዳያልቅ ይከላከላል, ስለዚህ ደንበኛው ለዘላለም ይጠመዳል.
መረጃው የተላከው ክሪፕቶግራፊ ከመተግበሩ በፊት ስለሆነ, ፕሮግራሙ እጅግ በጣም ቀላል ነው. ምንም ምስጠራዎችን መተግበር አያስፈልገውም እና በርካታ ፕሮቶኮሎችን ይደግፋል።
ደራሲው መገልገያው አነስተኛውን ሀብቶች እንደሚበላ እና በማሽኑ ላይ ሙሉ በሙሉ ሳይታወቅ እንደሚሰራ ለማረጋገጥ ሞክሯል. እንደ ዘመናዊ ፀረ-ቫይረስ እና ሌሎች "የደህንነት ስርዓቶች" የኮምፒተርዎን ፍጥነት መቀነስ የለበትም. በትንሹ ተንኮለኛ የሶፍትዌር ትግበራ ምክንያት ሁለቱንም የትራፊክ እና የማህደረ ትውስታ ፍጆታን መቀነስ ችሏል። በቀላሉ በአዲስ ግንኙነት ላይ የተለየ ሂደት ከጀመረ፣ እምቅ አጥቂዎች በማሽኑ ላይ ያሉ ሀብቶችን ለማሟጠጥ ብዙ ግንኙነቶችን በመክፈት የ DDoS ጥቃትን ሊጀምሩ ይችላሉ። በአንድ ግንኙነት አንድ ክር እንዲሁ የተሻለው አማራጭ አይደለም፣ ምክንያቱም ከርነሉ ክሮችን የማስተዳደር ሀብቶችን ያባክናል።
ለዚህም ነው Chris Wellons በጣም ቀላል ክብደት ያለውን አማራጭ ለ Endless: ባለአንድ ክር አገልጋይ የመረጠው poll(2)
በወጥመዱ ውስጥ ያሉት ደንበኞቻቸው ምንም ተጨማሪ ግብአት የሚወስዱበት፣ በከርነል ውስጥ ያለውን የሶኬት ነገር እና በ Endlessh ውስጥ ለመከታተል ሌላ 78 ባይት ሳይቆጠሩ። ለእያንዳንዱ ደንበኛ መቀበያ እና መላክ እንዳይኖር፣ Endlessh የቀጥታ መዳረሻ ሶኬት ከፍቶ የTCP ፓኬቶችን በቀጥታ ይተረጉማል፣ ከሞላ ጎደል ሙሉውን የስርዓተ ክወና TCP/IP ቁልል በማለፍ። መጪው ቋት ጨርሶ አያስፈልግም፣ ምክንያቱም ለገቢው ውሂብ ፍላጎት የለንም።
ደራሲው በፕሮግራሙ ጊዜ
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())
አሲንሲዮ ታርፒቶችን ለመጻፍ ተስማሚ ነው. ለምሳሌ፣ ይህ መንጠቆ ፋየርፎክስን፣ Chromeን፣ ወይም ሌላ ማንኛውንም ደንበኛ ከኤችቲቲፒ አገልጋይህ ጋር ለብዙ ሰዓታት ለመገናኘት የሚሞክርን ያቆማል።
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())
ታርፒት በመስመር ላይ ጉልበተኞችን ለመቅጣት ጥሩ መሳሪያ ነው። እውነት ነው, ትኩረታቸውን ወደ አንድ የተወሰነ አገልጋይ ያልተለመደ ባህሪ ለመሳብ, በተቃራኒው, የተወሰነ አደጋ አለ. አንድ ሰው
መገናኛዎች፡
Python፣ የመረጃ ደህንነት፣ ሶፍትዌር፣ የስርዓት አስተዳደር
መለያዎች:
ኤስኤስኤች፣ ማለቂያ የሌለው፣ ታርፒት፣ ታርፒት፣ ወጥመድ፣ አሲሲዮ
ወጥመድ (ታርፒት) ለገቢ የኤስኤስኤች ግንኙነቶች
በይነመረብ በጣም ጠበኛ የሆነ አካባቢ ለመሆኑ ሚስጥር አይደለም። አገልጋይ እንዳሳደጉ ወዲያውኑ ለትላልቅ ጥቃቶች እና በርካታ ፍተሻዎች ይጋለጣሉ። ለምሳሌ
ታርፒት ገቢ ግንኙነቶችን ለማዘግየት የሚያገለግል የወጥመድ ወደብ ነው። የሶስተኛ ወገን ስርዓት ከዚህ ወደብ ጋር ከተገናኘ ግንኙነቱን በፍጥነት መዝጋት አይችሉም። የስርዓት ሀብቷን ማባከን እና የግንኙነቱ ጊዜ እስኪያልቅ ድረስ መጠበቅ አለባት ወይም በእጅ ማቆም አለባት።
ብዙውን ጊዜ, ታርፒቶች ለመከላከል ጥቅም ላይ ይውላሉ. ቴክኒኩ በመጀመሪያ የተሰራው ከኮምፒዩተር ትሎች ለመከላከል ነው። እና አሁን ሁሉንም የአይ ፒ አድራሻዎችን በተከታታይ በመቃኘት ላይ የተሰማሩ አይፈለጌ መልዕክት ሰሪዎችን እና ተመራማሪዎችን ህይወት ለማጥፋት ስራ ላይ ሊውል ይችላል (በሀበሬ ላይ ያሉ ምሳሌዎች፡-
ከስርዓቱ አስተዳዳሪዎች አንዱ ክሪስ ዌሎንስ ይህን ውርደት መመልከት ሰልችቶት ይመስላል - እና ትንሽ ፕሮግራም ጻፈ።
የመገልገያውን ጭነት;
$ make
$ ./endlessh &
$ ssh -p2222 localhost
በትክክል የተተገበረ ታርፒት ከእርስዎ ይልቅ ብዙ ሀብቶችን ከአጥቂው ይወስዳል። ግን የሃብት ጉዳይ እንኳን አይደለም። ደራሲ
በኦፕሬቲንግ ሞድ ውስጥ፣ ‹Endless› አገልጋይ በተለመደው ወደብ 22 ላይ መጫን አለበት፣ እዚያም hooligans በጅምላ ያንኳኳል። መደበኛ የደህንነት ምክሮች ሁልጊዜ ኤስኤስኤች ወደተለየ ወደብ እንዲዘዋወሩ ይመክራሉ, ይህም ወዲያውኑ የምዝግብ ማስታወሻዎችን በቅደም ተከተል ይቀንሳል.
ክሪስ ዌሎንስ የእሱ ፕሮግራም የዝርዝሩን አንድ አንቀጽ ይጠቀማል ይላል። SSH-
.
ይህ በትክክል Endlesssh ፕሮግራም የሚያደርገው ነው: እሱ ይልካል ማለቂያ የለውም በዘፈቀደ የመነጨ የውሂብ ፍሰትከ RFC 4253 ጋር የሚጣጣም ማለትም ከማረጋገጡ በፊት ይላኩ እና እያንዳንዱ መስመር የሚጀምረው በ SSH-
እና ከ 255 ቁምፊዎች አይበልጥም, የመስመር መጨረሻ ባህሪን ጨምሮ. በአጠቃላይ ሁሉም ነገር በደረጃው መሰረት ነው.
በነባሪ, ፓኬጆችን መላክ መካከል ፕሮግራሙ 10 ሰከንድ ይጠብቃል. ይህ ደንበኛው ጊዜ እንዳያልቅ ይከላከላል, ስለዚህ ደንበኛው ለዘላለም ይጠመዳል.
መረጃው የተላከው ክሪፕቶግራፊ ከመተግበሩ በፊት ስለሆነ, ፕሮግራሙ እጅግ በጣም ቀላል ነው. ምንም ምስጠራዎችን መተግበር አያስፈልገውም እና በርካታ ፕሮቶኮሎችን ይደግፋል።
ደራሲው መገልገያው አነስተኛውን ሀብቶች እንደሚበላ እና በማሽኑ ላይ ሙሉ በሙሉ ሳይታወቅ እንደሚሰራ ለማረጋገጥ ሞክሯል. እንደ ዘመናዊ ፀረ-ቫይረስ እና ሌሎች "የደህንነት ስርዓቶች" የኮምፒተርዎን ፍጥነት መቀነስ የለበትም. በትንሹ ተንኮለኛ የሶፍትዌር ትግበራ ምክንያት ሁለቱንም የትራፊክ እና የማህደረ ትውስታ ፍጆታን መቀነስ ችሏል። በቀላሉ በአዲስ ግንኙነት ላይ የተለየ ሂደት ከጀመረ፣ እምቅ አጥቂዎች በማሽኑ ላይ ያሉ ሀብቶችን ለማሟጠጥ ብዙ ግንኙነቶችን በመክፈት የ DDoS ጥቃትን ሊጀምሩ ይችላሉ። በአንድ ግንኙነት አንድ ክር እንዲሁ የተሻለው አማራጭ አይደለም፣ ምክንያቱም ከርነሉ ክሮችን የማስተዳደር ሀብቶችን ያባክናል።
ለዚህም ነው Chris Wellons በጣም ቀላል ክብደት ያለውን አማራጭ ለ Endless: ባለአንድ ክር አገልጋይ የመረጠው poll(2)
በወጥመዱ ውስጥ ያሉት ደንበኞቻቸው ምንም ተጨማሪ ግብአት የሚወስዱበት፣ በከርነል ውስጥ ያለውን የሶኬት ነገር እና በ Endlessh ውስጥ ለመከታተል ሌላ 78 ባይት ሳይቆጠሩ። ለእያንዳንዱ ደንበኛ መቀበያ እና መላክ እንዳይኖር፣ Endlessh የቀጥታ መዳረሻ ሶኬት ከፍቶ የTCP ፓኬቶችን በቀጥታ ይተረጉማል፣ ከሞላ ጎደል ሙሉውን የስርዓተ ክወና TCP/IP ቁልል በማለፍ። መጪው ቋት ጨርሶ አያስፈልግም፣ ምክንያቱም ለገቢው ውሂብ ፍላጎት የለንም።
ደራሲው በፕሮግራሙ ጊዜ
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())
አሲንሲዮ ታርፒቶችን ለመጻፍ ተስማሚ ነው. ለምሳሌ፣ ይህ መንጠቆ ፋየርፎክስን፣ Chromeን፣ ወይም ሌላ ማንኛውንም ደንበኛ ከኤችቲቲፒ አገልጋይህ ጋር ለብዙ ሰዓታት ለመገናኘት የሚሞክርን ያቆማል።
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())
ታርፒት በመስመር ላይ ጉልበተኞችን ለመቅጣት ጥሩ መሳሪያ ነው። እውነት ነው, ትኩረታቸውን ወደ አንድ የተወሰነ አገልጋይ ያልተለመደ ባህሪ ለመሳብ, በተቃራኒው, የተወሰነ አደጋ አለ. አንድ ሰው
ምንጭ: hab.com