ಇಂಟರ್ನೆಟ್ ತುಂಬಾ ಪ್ರತಿಕೂಲ ವಾತಾವರಣವಾಗಿದೆ ಎಂಬುದು ರಹಸ್ಯವಲ್ಲ. ನೀವು ಸರ್ವರ್ ಅನ್ನು ಹೆಚ್ಚಿಸಿದ ತಕ್ಷಣ, ಅದು ತಕ್ಷಣವೇ ಬೃಹತ್ ದಾಳಿಗಳು ಮತ್ತು ಬಹು ಸ್ಕ್ಯಾನ್ಗಳಿಗೆ ಒಳಗಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ
ಟಾರ್ಪಿಟ್ ಒಳಬರುವ ಸಂಪರ್ಕಗಳನ್ನು ನಿಧಾನಗೊಳಿಸಲು ಬಳಸಲಾಗುವ ಟ್ರ್ಯಾಪ್ ಪೋರ್ಟ್ ಆಗಿದೆ. ಮೂರನೇ ವ್ಯಕ್ತಿಯ ವ್ಯವಸ್ಥೆಯು ಈ ಪೋರ್ಟ್ಗೆ ಸಂಪರ್ಕಗೊಂಡರೆ, ಸಂಪರ್ಕವನ್ನು ತ್ವರಿತವಾಗಿ ಮುಚ್ಚಲು ನಿಮಗೆ ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ. ಅವಳು ತನ್ನ ಸಿಸ್ಟಮ್ ಸಂಪನ್ಮೂಲಗಳನ್ನು ವ್ಯರ್ಥ ಮಾಡಬೇಕಾಗುತ್ತದೆ ಮತ್ತು ಸಂಪರ್ಕದ ಅವಧಿ ಮುಗಿಯುವವರೆಗೆ ಕಾಯಬೇಕು ಅಥವಾ ಹಸ್ತಚಾಲಿತವಾಗಿ ಅದನ್ನು ಕೊನೆಗೊಳಿಸಬೇಕು.
ಹೆಚ್ಚಾಗಿ, ಟಾರ್ಪಿಟ್ಗಳನ್ನು ರಕ್ಷಣೆಗಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ಕಂಪ್ಯೂಟರ್ ವರ್ಮ್ಗಳಿಂದ ರಕ್ಷಿಸಲು ತಂತ್ರವನ್ನು ಮೊದಲು ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಯಿತು. ಮತ್ತು ಈಗ ಇದನ್ನು ಸತತವಾಗಿ ಎಲ್ಲಾ IP ವಿಳಾಸಗಳ ವಿಶಾಲ ಸ್ಕ್ಯಾನಿಂಗ್ನಲ್ಲಿ ತೊಡಗಿರುವ ಸ್ಪ್ಯಾಮರ್ಗಳು ಮತ್ತು ಸಂಶೋಧಕರ ಜೀವನವನ್ನು ಹಾಳುಮಾಡಲು ಬಳಸಬಹುದು (ಹಬ್ರೆಯಲ್ಲಿ ಉದಾಹರಣೆಗಳು:
ಕ್ರಿಸ್ ವೆಲ್ಲೋನ್ಸ್ ಎಂಬ ಹೆಸರಿನ ಸಿಸ್ಟಮ್ ನಿರ್ವಾಹಕರಲ್ಲಿ ಒಬ್ಬರು ಈ ಅವಮಾನವನ್ನು ವೀಕ್ಷಿಸಲು ಸುಸ್ತಾಗಿದ್ದರು - ಮತ್ತು ಅವರು ಸಣ್ಣ ಕಾರ್ಯಕ್ರಮವನ್ನು ಬರೆದರು
ಉಪಯುಕ್ತತೆಯ ಸ್ಥಾಪನೆ:
$ make
$ ./endlessh &
$ ssh -p2222 localhost
ಸರಿಯಾಗಿ ಅಳವಡಿಸಲಾದ ಟಾರ್ಪಿಟ್ ನಿಮ್ಮಿಂದ ಹೆಚ್ಚು ಸಂಪನ್ಮೂಲಗಳನ್ನು ಆಕ್ರಮಣಕಾರರಿಂದ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. ಆದರೆ ಇದು ಸಂಪನ್ಮೂಲಗಳ ವಿಷಯವೂ ಅಲ್ಲ. ಲೇಖಕ
ಆಪರೇಟಿಂಗ್ ಮೋಡ್ನಲ್ಲಿ, ಎಂಡ್ಲೆಶ್ ಸರ್ವರ್ ಅನ್ನು ಸಾಮಾನ್ಯ ಪೋರ್ಟ್ 22 ನಲ್ಲಿ ಸ್ಥಾಪಿಸಬೇಕಾಗಿದೆ, ಅಲ್ಲಿ ಗೂಂಡಾಗಳು ಸಾಮೂಹಿಕವಾಗಿ ನಾಕ್ ಮಾಡುತ್ತಾರೆ. ಪ್ರಮಾಣಿತ ಭದ್ರತಾ ಶಿಫಾರಸುಗಳು ಯಾವಾಗಲೂ SSH ಅನ್ನು ಬೇರೆ ಪೋರ್ಟ್ಗೆ ಸರಿಸಲು ಸಲಹೆ ನೀಡುತ್ತವೆ, ಇದು ತಕ್ಷಣವೇ ಲಾಗ್ಗಳ ಗಾತ್ರವನ್ನು ಪರಿಮಾಣದ ಕ್ರಮದಿಂದ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.
ಕ್ರಿಸ್ ವೆಲ್ಲೋನ್ಸ್ ಅವರ ಪ್ರೋಗ್ರಾಂ ನಿರ್ದಿಷ್ಟತೆಯ ಒಂದು ಪ್ಯಾರಾಗ್ರಾಫ್ ಅನ್ನು ಬಳಸಿಕೊಳ್ಳುತ್ತದೆ ಎಂದು ಹೇಳುತ್ತಾರೆ SSH-
.
ಎಂಡ್ಲೆಶ್ ಪ್ರೋಗ್ರಾಂ ನಿಖರವಾಗಿ ಏನು ಮಾಡುತ್ತದೆ: ಇದು ಕಳುಹಿಸುತ್ತದೆ ಅಂತ್ಯವಿಲ್ಲದ ಯಾದೃಚ್ಛಿಕವಾಗಿ ರಚಿಸಲಾದ ಡೇಟಾದ ಸ್ಟ್ರೀಮ್, ಇದು RFC 4253 ಅನ್ನು ಅನುಸರಿಸುತ್ತದೆ, ಅಂದರೆ, ದೃಢೀಕರಣದ ಮೊದಲು ಕಳುಹಿಸಿ, ಮತ್ತು ಪ್ರತಿ ಸಾಲು ಪ್ರಾರಂಭವಾಗುತ್ತದೆ SSH-
ಮತ್ತು ಸಾಲಿನ ಅಂತ್ಯದ ಅಕ್ಷರ ಸೇರಿದಂತೆ 255 ಅಕ್ಷರಗಳನ್ನು ಮೀರುವುದಿಲ್ಲ. ಸಾಮಾನ್ಯವಾಗಿ, ಎಲ್ಲವೂ ಮಾನದಂಡದ ಪ್ರಕಾರ.
ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ, ಪ್ಯಾಕೆಟ್ಗಳನ್ನು ಕಳುಹಿಸುವ ನಡುವೆ ಪ್ರೋಗ್ರಾಂ 10 ಸೆಕೆಂಡುಗಳ ಕಾಲ ಕಾಯುತ್ತದೆ. ಇದು ಕ್ಲೈಂಟ್ಗೆ ಸಮಯ ಮೀರದಂತೆ ತಡೆಯುತ್ತದೆ, ಆದ್ದರಿಂದ ಕ್ಲೈಂಟ್ ಶಾಶ್ವತವಾಗಿ ಸಿಕ್ಕಿಬೀಳುತ್ತದೆ.
ಕ್ರಿಪ್ಟೋಗ್ರಫಿಯನ್ನು ಅನ್ವಯಿಸುವ ಮೊದಲು ಡೇಟಾವನ್ನು ಕಳುಹಿಸಲಾಗಿರುವುದರಿಂದ, ಪ್ರೋಗ್ರಾಂ ತುಂಬಾ ಸರಳವಾಗಿದೆ. ಇದು ಯಾವುದೇ ಸೈಫರ್ಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಅಗತ್ಯವಿಲ್ಲ ಮತ್ತು ಬಹು ಪ್ರೋಟೋಕಾಲ್ಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ.
ಉಪಯುಕ್ತತೆಯು ಕನಿಷ್ಟ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಬಳಸುತ್ತದೆ ಮತ್ತು ಯಂತ್ರದಲ್ಲಿ ಸಂಪೂರ್ಣವಾಗಿ ಗಮನಿಸದೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಲೇಖಕರು ಪ್ರಯತ್ನಿಸಿದರು. ಆಧುನಿಕ ಆಂಟಿವೈರಸ್ಗಳು ಮತ್ತು ಇತರ "ಭದ್ರತಾ ವ್ಯವಸ್ಥೆಗಳು" ಭಿನ್ನವಾಗಿ, ಇದು ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ನಿಧಾನಗೊಳಿಸಬಾರದು. ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಕುತಂತ್ರದ ಸಾಫ್ಟ್ವೇರ್ ಅಳವಡಿಕೆಯಿಂದಾಗಿ ಅವರು ಟ್ರಾಫಿಕ್ ಮತ್ತು ಮೆಮೊರಿ ಬಳಕೆ ಎರಡನ್ನೂ ಕಡಿಮೆ ಮಾಡಲು ನಿರ್ವಹಿಸುತ್ತಿದ್ದರು. ಹೊಸ ಸಂಪರ್ಕದಲ್ಲಿ ಪ್ರತ್ಯೇಕ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪ್ರಾರಂಭಿಸಿದರೆ, ಸಂಭಾವ್ಯ ದಾಳಿಕೋರರು ಗಣಕದಲ್ಲಿ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಹೊರಹಾಕಲು ಬಹು ಸಂಪರ್ಕಗಳನ್ನು ತೆರೆಯುವ ಮೂಲಕ DDoS ದಾಳಿಯನ್ನು ಪ್ರಾರಂಭಿಸಬಹುದು. ಪ್ರತಿ ಸಂಪರ್ಕಕ್ಕೆ ಒಂದು ಥ್ರೆಡ್ ಉತ್ತಮ ಆಯ್ಕೆಯಾಗಿಲ್ಲ, ಏಕೆಂದರೆ ಕರ್ನಲ್ ಥ್ರೆಡ್ಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಸಂಪನ್ಮೂಲಗಳನ್ನು ವ್ಯರ್ಥ ಮಾಡುತ್ತದೆ.
ಅದಕ್ಕಾಗಿಯೇ ಕ್ರಿಸ್ ವೆಲ್ಲೋನ್ಸ್ ಎಂಡ್ಲೆಶ್ಗಾಗಿ ಅತ್ಯಂತ ಹಗುರವಾದ ಆಯ್ಕೆಯನ್ನು ಆರಿಸಿಕೊಂಡರು: ಏಕ-ಥ್ರೆಡ್ ಸರ್ವರ್ poll(2)
, ಬಲೆಯಲ್ಲಿರುವ ಕ್ಲೈಂಟ್ಗಳು ವಾಸ್ತವಿಕವಾಗಿ ಯಾವುದೇ ಹೆಚ್ಚುವರಿ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಬಳಸುವುದಿಲ್ಲ, ಕರ್ನಲ್ನಲ್ಲಿರುವ ಸಾಕೆಟ್ ಆಬ್ಜೆಕ್ಟ್ ಮತ್ತು ಎಂಡ್ಲೆಶ್ನಲ್ಲಿ ಟ್ರ್ಯಾಕಿಂಗ್ ಮಾಡಲು ಮತ್ತೊಂದು 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())
ಅಸಿನ್ಸಿಯೊ ಟಾರ್ಪಿಟ್ಗಳನ್ನು ಬರೆಯಲು ಸೂಕ್ತವಾಗಿದೆ. ಉದಾಹರಣೆಗೆ, ಈ ಹುಕ್ ಫೈರ್ಫಾಕ್ಸ್, ಕ್ರೋಮ್ ಅಥವಾ ನಿಮ್ಮ 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())
ಆನ್ಲೈನ್ ಬೆದರಿಸುವವರನ್ನು ಶಿಕ್ಷಿಸಲು ಟಾರ್ಪಿಟ್ ಉತ್ತಮ ಸಾಧನವಾಗಿದೆ. ನಿಜ, ಇದಕ್ಕೆ ವಿರುದ್ಧವಾಗಿ, ನಿರ್ದಿಷ್ಟ ಸರ್ವರ್ನ ಅಸಾಮಾನ್ಯ ನಡವಳಿಕೆಗೆ ಅವರ ಗಮನವನ್ನು ಸೆಳೆಯುವ ಅಪಾಯವಿದೆ. ಯಾರೋ
ಕೇಂದ್ರಗಳು:
ಪೈಥಾನ್, ಮಾಹಿತಿ ಭದ್ರತೆ, ಸಾಫ್ಟ್ವೇರ್, ಸಿಸ್ಟಮ್ ಆಡಳಿತ
ಟ್ಯಾಗ್ಗಳು:
SSH, ಎಂಡ್ಲೆಶ್, ಟಾರ್ಪಿಟ್, ಟಾರ್ಪಿಟ್, ಟ್ರ್ಯಾಪ್, ಅಸಿಸಿಯೋ
ಒಳಬರುವ SSH ಸಂಪರ್ಕಗಳಿಗಾಗಿ ಟ್ರ್ಯಾಪ್ (ಟಾರ್ಪಿಟ್).
ಇಂಟರ್ನೆಟ್ ತುಂಬಾ ಪ್ರತಿಕೂಲ ವಾತಾವರಣವಾಗಿದೆ ಎಂಬುದು ರಹಸ್ಯವಲ್ಲ. ನೀವು ಸರ್ವರ್ ಅನ್ನು ಹೆಚ್ಚಿಸಿದ ತಕ್ಷಣ, ಅದು ತಕ್ಷಣವೇ ಬೃಹತ್ ದಾಳಿಗಳು ಮತ್ತು ಬಹು ಸ್ಕ್ಯಾನ್ಗಳಿಗೆ ಒಳಗಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ
ಟಾರ್ಪಿಟ್ ಒಳಬರುವ ಸಂಪರ್ಕಗಳನ್ನು ನಿಧಾನಗೊಳಿಸಲು ಬಳಸಲಾಗುವ ಟ್ರ್ಯಾಪ್ ಪೋರ್ಟ್ ಆಗಿದೆ. ಮೂರನೇ ವ್ಯಕ್ತಿಯ ವ್ಯವಸ್ಥೆಯು ಈ ಪೋರ್ಟ್ಗೆ ಸಂಪರ್ಕಗೊಂಡರೆ, ಸಂಪರ್ಕವನ್ನು ತ್ವರಿತವಾಗಿ ಮುಚ್ಚಲು ನಿಮಗೆ ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ. ಅವಳು ತನ್ನ ಸಿಸ್ಟಮ್ ಸಂಪನ್ಮೂಲಗಳನ್ನು ವ್ಯರ್ಥ ಮಾಡಬೇಕಾಗುತ್ತದೆ ಮತ್ತು ಸಂಪರ್ಕದ ಅವಧಿ ಮುಗಿಯುವವರೆಗೆ ಕಾಯಬೇಕು ಅಥವಾ ಹಸ್ತಚಾಲಿತವಾಗಿ ಅದನ್ನು ಕೊನೆಗೊಳಿಸಬೇಕು.
ಹೆಚ್ಚಾಗಿ, ಟಾರ್ಪಿಟ್ಗಳನ್ನು ರಕ್ಷಣೆಗಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ಕಂಪ್ಯೂಟರ್ ವರ್ಮ್ಗಳಿಂದ ರಕ್ಷಿಸಲು ತಂತ್ರವನ್ನು ಮೊದಲು ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಯಿತು. ಮತ್ತು ಈಗ ಇದನ್ನು ಸತತವಾಗಿ ಎಲ್ಲಾ IP ವಿಳಾಸಗಳ ವಿಶಾಲ ಸ್ಕ್ಯಾನಿಂಗ್ನಲ್ಲಿ ತೊಡಗಿರುವ ಸ್ಪ್ಯಾಮರ್ಗಳು ಮತ್ತು ಸಂಶೋಧಕರ ಜೀವನವನ್ನು ಹಾಳುಮಾಡಲು ಬಳಸಬಹುದು (ಹಬ್ರೆಯಲ್ಲಿ ಉದಾಹರಣೆಗಳು:
ಕ್ರಿಸ್ ವೆಲ್ಲೋನ್ಸ್ ಎಂಬ ಹೆಸರಿನ ಸಿಸ್ಟಮ್ ನಿರ್ವಾಹಕರಲ್ಲಿ ಒಬ್ಬರು ಈ ಅವಮಾನವನ್ನು ವೀಕ್ಷಿಸಲು ಸುಸ್ತಾಗಿದ್ದರು - ಮತ್ತು ಅವರು ಸಣ್ಣ ಕಾರ್ಯಕ್ರಮವನ್ನು ಬರೆದರು
ಉಪಯುಕ್ತತೆಯ ಸ್ಥಾಪನೆ:
$ make
$ ./endlessh &
$ ssh -p2222 localhost
ಸರಿಯಾಗಿ ಅಳವಡಿಸಲಾದ ಟಾರ್ಪಿಟ್ ನಿಮ್ಮಿಂದ ಹೆಚ್ಚು ಸಂಪನ್ಮೂಲಗಳನ್ನು ಆಕ್ರಮಣಕಾರರಿಂದ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. ಆದರೆ ಇದು ಸಂಪನ್ಮೂಲಗಳ ವಿಷಯವೂ ಅಲ್ಲ. ಲೇಖಕ
ಆಪರೇಟಿಂಗ್ ಮೋಡ್ನಲ್ಲಿ, ಎಂಡ್ಲೆಶ್ ಸರ್ವರ್ ಅನ್ನು ಸಾಮಾನ್ಯ ಪೋರ್ಟ್ 22 ನಲ್ಲಿ ಸ್ಥಾಪಿಸಬೇಕಾಗಿದೆ, ಅಲ್ಲಿ ಗೂಂಡಾಗಳು ಸಾಮೂಹಿಕವಾಗಿ ನಾಕ್ ಮಾಡುತ್ತಾರೆ. ಪ್ರಮಾಣಿತ ಭದ್ರತಾ ಶಿಫಾರಸುಗಳು ಯಾವಾಗಲೂ SSH ಅನ್ನು ಬೇರೆ ಪೋರ್ಟ್ಗೆ ಸರಿಸಲು ಸಲಹೆ ನೀಡುತ್ತವೆ, ಇದು ತಕ್ಷಣವೇ ಲಾಗ್ಗಳ ಗಾತ್ರವನ್ನು ಪರಿಮಾಣದ ಕ್ರಮದಿಂದ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.
ಕ್ರಿಸ್ ವೆಲ್ಲೋನ್ಸ್ ಅವರ ಪ್ರೋಗ್ರಾಂ ನಿರ್ದಿಷ್ಟತೆಯ ಒಂದು ಪ್ಯಾರಾಗ್ರಾಫ್ ಅನ್ನು ಬಳಸಿಕೊಳ್ಳುತ್ತದೆ ಎಂದು ಹೇಳುತ್ತಾರೆ SSH-
.
ಎಂಡ್ಲೆಶ್ ಪ್ರೋಗ್ರಾಂ ನಿಖರವಾಗಿ ಏನು ಮಾಡುತ್ತದೆ: ಇದು ಕಳುಹಿಸುತ್ತದೆ ಅಂತ್ಯವಿಲ್ಲದ ಯಾದೃಚ್ಛಿಕವಾಗಿ ರಚಿಸಲಾದ ಡೇಟಾದ ಸ್ಟ್ರೀಮ್, ಇದು RFC 4253 ಅನ್ನು ಅನುಸರಿಸುತ್ತದೆ, ಅಂದರೆ, ದೃಢೀಕರಣದ ಮೊದಲು ಕಳುಹಿಸಿ, ಮತ್ತು ಪ್ರತಿ ಸಾಲು ಪ್ರಾರಂಭವಾಗುತ್ತದೆ SSH-
ಮತ್ತು ಸಾಲಿನ ಅಂತ್ಯದ ಅಕ್ಷರ ಸೇರಿದಂತೆ 255 ಅಕ್ಷರಗಳನ್ನು ಮೀರುವುದಿಲ್ಲ. ಸಾಮಾನ್ಯವಾಗಿ, ಎಲ್ಲವೂ ಮಾನದಂಡದ ಪ್ರಕಾರ.
ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ, ಪ್ಯಾಕೆಟ್ಗಳನ್ನು ಕಳುಹಿಸುವ ನಡುವೆ ಪ್ರೋಗ್ರಾಂ 10 ಸೆಕೆಂಡುಗಳ ಕಾಲ ಕಾಯುತ್ತದೆ. ಇದು ಕ್ಲೈಂಟ್ಗೆ ಸಮಯ ಮೀರದಂತೆ ತಡೆಯುತ್ತದೆ, ಆದ್ದರಿಂದ ಕ್ಲೈಂಟ್ ಶಾಶ್ವತವಾಗಿ ಸಿಕ್ಕಿಬೀಳುತ್ತದೆ.
ಕ್ರಿಪ್ಟೋಗ್ರಫಿಯನ್ನು ಅನ್ವಯಿಸುವ ಮೊದಲು ಡೇಟಾವನ್ನು ಕಳುಹಿಸಲಾಗಿರುವುದರಿಂದ, ಪ್ರೋಗ್ರಾಂ ತುಂಬಾ ಸರಳವಾಗಿದೆ. ಇದು ಯಾವುದೇ ಸೈಫರ್ಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಅಗತ್ಯವಿಲ್ಲ ಮತ್ತು ಬಹು ಪ್ರೋಟೋಕಾಲ್ಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ.
ಉಪಯುಕ್ತತೆಯು ಕನಿಷ್ಟ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಬಳಸುತ್ತದೆ ಮತ್ತು ಯಂತ್ರದಲ್ಲಿ ಸಂಪೂರ್ಣವಾಗಿ ಗಮನಿಸದೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಲೇಖಕರು ಪ್ರಯತ್ನಿಸಿದರು. ಆಧುನಿಕ ಆಂಟಿವೈರಸ್ಗಳು ಮತ್ತು ಇತರ "ಭದ್ರತಾ ವ್ಯವಸ್ಥೆಗಳು" ಭಿನ್ನವಾಗಿ, ಇದು ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ನಿಧಾನಗೊಳಿಸಬಾರದು. ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಕುತಂತ್ರದ ಸಾಫ್ಟ್ವೇರ್ ಅಳವಡಿಕೆಯಿಂದಾಗಿ ಅವರು ಟ್ರಾಫಿಕ್ ಮತ್ತು ಮೆಮೊರಿ ಬಳಕೆ ಎರಡನ್ನೂ ಕಡಿಮೆ ಮಾಡಲು ನಿರ್ವಹಿಸುತ್ತಿದ್ದರು. ಹೊಸ ಸಂಪರ್ಕದಲ್ಲಿ ಪ್ರತ್ಯೇಕ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪ್ರಾರಂಭಿಸಿದರೆ, ಸಂಭಾವ್ಯ ದಾಳಿಕೋರರು ಗಣಕದಲ್ಲಿ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಹೊರಹಾಕಲು ಬಹು ಸಂಪರ್ಕಗಳನ್ನು ತೆರೆಯುವ ಮೂಲಕ DDoS ದಾಳಿಯನ್ನು ಪ್ರಾರಂಭಿಸಬಹುದು. ಪ್ರತಿ ಸಂಪರ್ಕಕ್ಕೆ ಒಂದು ಥ್ರೆಡ್ ಉತ್ತಮ ಆಯ್ಕೆಯಾಗಿಲ್ಲ, ಏಕೆಂದರೆ ಕರ್ನಲ್ ಥ್ರೆಡ್ಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಸಂಪನ್ಮೂಲಗಳನ್ನು ವ್ಯರ್ಥ ಮಾಡುತ್ತದೆ.
ಅದಕ್ಕಾಗಿಯೇ ಕ್ರಿಸ್ ವೆಲ್ಲೋನ್ಸ್ ಎಂಡ್ಲೆಶ್ಗಾಗಿ ಅತ್ಯಂತ ಹಗುರವಾದ ಆಯ್ಕೆಯನ್ನು ಆರಿಸಿಕೊಂಡರು: ಏಕ-ಥ್ರೆಡ್ ಸರ್ವರ್ poll(2)
, ಬಲೆಯಲ್ಲಿರುವ ಕ್ಲೈಂಟ್ಗಳು ವಾಸ್ತವಿಕವಾಗಿ ಯಾವುದೇ ಹೆಚ್ಚುವರಿ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಬಳಸುವುದಿಲ್ಲ, ಕರ್ನಲ್ನಲ್ಲಿರುವ ಸಾಕೆಟ್ ಆಬ್ಜೆಕ್ಟ್ ಮತ್ತು ಎಂಡ್ಲೆಶ್ನಲ್ಲಿ ಟ್ರ್ಯಾಕಿಂಗ್ ಮಾಡಲು ಮತ್ತೊಂದು 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())
ಅಸಿನ್ಸಿಯೊ ಟಾರ್ಪಿಟ್ಗಳನ್ನು ಬರೆಯಲು ಸೂಕ್ತವಾಗಿದೆ. ಉದಾಹರಣೆಗೆ, ಈ ಹುಕ್ ಫೈರ್ಫಾಕ್ಸ್, ಕ್ರೋಮ್ ಅಥವಾ ನಿಮ್ಮ 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())
ಆನ್ಲೈನ್ ಬೆದರಿಸುವವರನ್ನು ಶಿಕ್ಷಿಸಲು ಟಾರ್ಪಿಟ್ ಉತ್ತಮ ಸಾಧನವಾಗಿದೆ. ನಿಜ, ಇದಕ್ಕೆ ವಿರುದ್ಧವಾಗಿ, ನಿರ್ದಿಷ್ಟ ಸರ್ವರ್ನ ಅಸಾಮಾನ್ಯ ನಡವಳಿಕೆಗೆ ಅವರ ಗಮನವನ್ನು ಸೆಳೆಯುವ ಅಪಾಯವಿದೆ. ಯಾರೋ
ಮೂಲ: www.habr.com