เช‡เชจเช•เชฎเชฟเช‚เช— SSH เชœเซ‹เชกเชพเชฃเซ‹ เชฎเชพเชŸเซ‡ เชŸเซเชฐเซ‡เชช (เชŸเชพเชฐเซเชชเชฟเชŸ).

เชคเซ‡ เช•เซ‹เชˆ เชฐเชนเชธเซเชฏ เชจเชฅเซ€ เช•เซ‡ เช‡เชจเซเชŸเชฐเชจเซ‡เชŸ เช–เซ‚เชฌ เชœ เชชเซเชฐเชคเชฟเช•เซ‚เชณ เชตเชพเชคเชพเชตเชฐเชฃ เช›เซ‡. เชœเชฒเชฆเซ€ เชคเชฎเซ‡ เชธเชฐเซเชตเชฐ เช‰เชญเชพ เช•เชฐเซ‹ เช›เซ‹, เชคเซ‡ เชคเชฐเชค เชœ เชฎเซ‹เชŸเชพ เชนเซเชฎเชฒเชพเช“ เช…เชจเซ‡ เชฌเชนเซเชตเชฟเชง เชธเซเช•เซ‡เชจเชจเซ‹ เชญเซ‹เช— เชฌเชจเซ‡ เช›เซ‡. เชฆเชพเช–เซเชฒเชพ เชคเชฐเซ€เช•เซ‡ เชธเซเชฐเช•เซเชทเชพ เชฐเช•เซเชทเช•เซ‹ เชชเชพเชธเซ‡เชฅเซ€ เชฎเชงเชชเซ‚เชกเซ‹ เชคเชฎเซ‡ เช† เช•เชšเชฐเชพเชจเชพ เชŸเซเชฐเชพเชซเชฟเช•เชจเชพ เชธเซเช•เซ‡เชฒเชจเซ‹ เช…เช‚เชฆเชพเชœ เชฒเช—เชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹. เชนเช•เซ€เช•เชคเชฎเชพเช‚, เชธเชฐเซ‡เชฐเชพเชถ เชธเชฐเซเชตเชฐ เชชเชฐ, 99% เชŸเซเชฐเชพเชซเชฟเช• เชฆเซ‚เชทเชฟเชค เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡.

เชŸเซ‡เชฐเชชเชฟเชŸ เช เชเช• เชŸเซเชฐเซ‡เชช เชชเซ‹เชฐเซเชŸ เช›เซ‡ เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช‡เชจเช•เชฎเชฟเช‚เช— เช•เชจเซ‡เช•เซเชถเชจเชจเซ‡ เชงเซ€เชฎเซเช‚ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡. เชœเซ‹ เชคเซƒเชคเซ€เชฏ-เชชเช•เซเชท เชธเชฟเชธเซเชŸเชฎ เช† เชชเซ‹เชฐเซเชŸ เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸ เชฅเชพเชฏ เช›เซ‡, เชคเซ‹ เชคเชฎเซ‡ เชเชกเชชเชฅเซ€ เช•เชจเซ‡เช•เซเชถเชจ เชฌเช‚เชง เช•เชฐเซ€ เชถเช•เชถเซ‹ เชจเชนเซ€เช‚. เชคเซ‡เชฃเซ€เช เชคเซ‡เชจเชพ เชธเชฟเชธเซเชŸเชฎ เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ‹ เชฌเช—เชพเชก เช•เชฐเชตเซ‹ เชชเชกเชถเซ‡ เช…เชจเซ‡ เช•เชจเซ‡เช•เซเชถเชจ เชธเชฎเชฏ เชธเชฎเชพเชชเซเชค เชฅเชพเชฏ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เชฐเชพเชน เชœเซ‹เชตเซ€ เชชเชกเชถเซ‡, เช…เชฅเชตเชพ เชคเซ‡เชจเซ‡ เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ เชธเชฎเชพเชชเซเชค เช•เชฐเชตเซ€ เชชเชกเชถเซ‡.

เชฎเซ‹เชŸเซ‡เชญเชพเช—เซ‡, เชฐเช•เซเชทเชฃ เชฎเชพเชŸเซ‡ เชŸเซ‡เชฐเชชเชฟเชŸเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡. เช† เชŸเซ‡เช•เชจเชฟเช• เชธเซŒ เชชเซเชฐเชฅเชฎ เช•เซ‹เชฎเซเชชเซเชฏเซเชŸเชฐ เชตเซ‹เชฐเซเชฎเซเชธ เชธเชพเชฎเซ‡ เชฐเช•เซเชทเชฃ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡ เชตเชฟเช•เชธเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€. เช…เชจเซ‡ เชนเชตเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชธเซเชชเชพเชฎเชฐเซเชธ เช…เชจเซ‡ เชธเช‚เชถเซ‹เชงเช•เซ‹เชจเชพ เชœเซ€เชตเชจเชจเซ‡ เชฌเชฐเชฌเชพเชฆ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡ เชœเซ‡เช“ เชเช• เชชเช‚เช•เซเชคเชฟเชฎเชพเช‚ เชคเชฎเชพเชฎ IP เชธเชฐเชจเชพเชฎเชพเช‚เชจเชพ เชตเซเชฏเชพเชชเช• เชธเซเช•เซ‡เชจเชฟเช‚เช—เชฎเชพเช‚ เชฐเซ‹เช•เชพเชฏเซ‡เชฒเชพ เช›เซ‡ (เชนเซ‡เชฌเซเชฐเซ‡ เชชเชฐเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹: เช“เชธเซเชŸเซเชฐเชฟเชฏเชพ, เชฏเซเช•เซเชฐเซ‡เชจ).

เช•เซเชฐเชฟเชธ เชตเซ‡เชฒเซ‹เชจเซเชธ เชจเชพเชฎเชจเชพ เชธเชฟเชธเซเชŸเชฎ เชเชกเชฎเชฟเชจเชฟเชธเซเชŸเซเชฐเซ‡เชŸเชฐเซ‹เชฎเชพเช‚เชฅเซ€ เชเช• เชฆเซ‡เช–เซ€เชคเซ€ เชฐเซ€เชคเซ‡ เช† เชฌเชฆเชจเชพเชฎเซ€ เชœเซ‹เชˆเชจเซ‡ เช•เช‚เชŸเชพเชณเซ€ เช—เชฏเซ‹ เชนเชคเซ‹ - เช…เชจเซ‡ เชคเซ‡เชฃเซ‡ เชเช• เชจเชพเชจเซ‹ เช•เชพเชฐเซเชฏเช•เซเชฐเชฎ เชฒเช–เซเชฏเซ‹ เชนเชคเซ‹. เช…เชจเช‚เชค, SSH เชฎเชพเชŸเซ‡ เชŸเซ‡เชฐเชชเชฟเชŸ เช•เซ‡ เชœเซ‡ เช‡เชจเช•เชฎเชฟเช‚เช— เช•เชจเซ‡เช•เซเชถเชจเชจเซ‡ เชงเซ€เชฎเซเช‚ เช•เชฐเซ‡ เช›เซ‡. เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชชเซ‹เชฐเซเชŸ เช–เซ‹เชฒเซ‡ เช›เซ‡ (เชชเชฐเซ€เช•เซเชทเชฃ เชฎเชพเชŸเซ‡เชจเซเช‚ เชกเชฟเชซเซ‹เชฒเซเชŸ เชชเซ‹เชฐเซเชŸ 2222 เช›เซ‡) เช…เชจเซ‡ SSH เชธเชฐเซเชตเชฐ เชนเซ‹เชตเชพเชจเซ‹ เชขเซ‹เช‚เช— เช•เชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชตเชพเชธเซเชคเชตเชฎเชพเช‚ เชคเซ‡ เช‡เชจเช•เชฎเชฟเช‚เช— เช•เซเชฒเชพเชฏเชจเซเชŸ เชธเชพเชฅเซ‡ เช…เชจเช‚เชค เชœเซ‹เชกเชพเชฃ เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซ‡ เช›เซ‡ เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชคเซ‡ เช›เซ‹เชกเซ€ เชจ เชฆเซ‡. เช•เซเชฒเชพเชฏเช‚เชŸ เชฌเช‚เชง เชจ เชฅเชพเชฏ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เช† เช˜เชฃเชพ เชฆเชฟเชตเชธเซ‹ เช•เซ‡ เชคเซ‡เชฅเซ€ เชตเชงเซ เชธเชฎเชฏ เชธเซเชงเซ€ เชšเชพเชฒเซ เชฐเชนเซ€ เชถเช•เซ‡ เช›เซ‡.

เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเชจเซ€ เชธเซเชฅเชพเชชเชจเชพ:

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

เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชพเชฏเซ‡เชฒ เชŸเชฐเซเชชเชฟเชŸ เชนเซเชฎเชฒเชพเช–เซ‹เชฐ เชชเชพเชธเซ‡เชฅเซ€ เชคเชฎเชพเชฐเชพ เช•เชฐเชคเชพเช‚ เชตเชงเซ เชธเช‚เชธเชพเชงเชจเซ‹ เชฒเซ‡เชถเซ‡. เชชเชฐเช‚เชคเซ เชคเซ‡ เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ€ เชฌเชพเชฌเชค เชชเชฃ เชจเชฅเซ€. เชฒเซ‡เช–เช• เชคเซ‡เช“ เชฒเช–เซ‡ เช›เซ‡เช•เซ‡ เช•เชพเชฐเซเชฏเช•เซเชฐเชฎ เชตเซเชฏเชธเชจเช•เชพเชฐเช• เช›เซ‡. เช…เชคเซเชฏเชพเชฐเซ‡ เชคเซ‡เชจเชพ 27 เช—เซเชฐเชพเชนเช•เซ‹ เชซเชธเชพเชฏเซ‡เชฒเชพ เช›เซ‡, เชœเซ‡เชฎเชพเช‚เชฅเซ€ เช•เซ‡เชŸเชฒเชพเช• เช…เช เชตเชพเชกเชฟเชฏเชพเชฅเซ€ เชœเซ‹เชกเชพเชฏเซ‡เชฒเชพ เช›เซ‡. เชชเซเชฐเชตเซƒเชคเซเชคเชฟเชจเซ€ เชŸเซ‹เชš เชชเชฐ, 1378 เช—เซเชฐเชพเชนเช•เซ‹ 20 เช•เชฒเชพเช• เชธเซเชงเซ€ เชซเชธเชพเชฏเซ‡เชฒเชพ เชนเชคเชพ!

เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชฎเซ‹เชกเชฎเชพเช‚, เชเชจเซเชกเชฒเซ‡เชถ เชธเชฐเซเชตเชฐเชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชชเซ‹เชฐเซเชŸ 22 เชชเชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชœเซเชฏเชพเช‚ เช—เซเช‚เชกเชพเช“ เชเช• เชธเชพเชฅเซ‡ เชชเช›เชพเชกเซ‡ เช›เซ‡. เชฎเชพเชจเช• เชธเซเชฐเช•เซเชทเชพ เชญเชฒเชพเชฎเชฃเซ‹ เชนเช‚เชฎเซ‡เชถเชพ SSH เชจเซ‡ เช…เชฒเช— เชชเซ‹เชฐเซเชŸ เชชเชฐ เช–เชธเซ‡เชกเชตเชพเชจเซ€ เชธเชฒเชพเชน เช†เชชเซ‡ เช›เซ‡, เชœเซ‡ เชคเซเชฐเช‚เชค เชœ เชฒเซ‹เช—เชจเชพ เช•เชฆเชจเซ‡ เชคเซ€เชตเซเชฐเชคเชพเชจเชพ เช•เซเชฐเชฎเชฎเชพเช‚ เช˜เชŸเชพเชกเซ‡ เช›เซ‡.

เช•เซเชฐเชฟเชธ เชตเซ‡เชฒเซ‹เชจเซเชธ เช•เชนเซ‡ เช›เซ‡ เช•เซ‡ เชคเซ‡เชฎเชจเซ‹ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชธเซเชชเชทเซเชŸเซ€เช•เชฐเชฃเชจเชพ เชเช• เชซเช•เชฐเชพเชจเซเช‚ เชถเซ‹เชทเชฃ เช•เชฐเซ‡ เช›เซ‡ เช†เชฐเชเชซเชธเซ€ 4253 SSH เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชฎเชพเชŸเซ‡. TCP เช•เชจเซ‡เช•เซเชถเชจ เชธเซเชฅเชพเชชเชฟเชค เชฅเชฏเชพ เชชเช›เซ€ เชคเชฐเชค เชœ, เชชเชฐเช‚เชคเซ เช•เซเชฐเชฟเชชเซเชŸเซ‹เช—เซเชฐเชพเชซเซ€ เชฒเชพเช—เซ เชฅเชพเชฏ เชคเซ‡ เชชเชนเซ‡เชฒเชพเช‚, เชฌเช‚เชจเซ‡ เชชเช•เซเชทเซ‹เช เชเช• เช“เชณเช– เชธเซเชŸเซเชฐเชฟเช‚เช— เชฎเซ‹เช•เชฒเชตเซ€ เช†เชตเชถเซเชฏเช• เช›เซ‡. เช…เชจเซ‡ เชเช• เชจเซ‹เช‚เชง เชชเชฃ เช›เซ‡: "เชธเช‚เชธเซเช•เชฐเชฃ เชชเช‚เช•เซเชคเชฟ เชฎเซ‹เช•เชฒเชคเชพ เชชเชนเซ‡เชฒเชพ เชธเชฐเซเชตเชฐ เชกเซ‡เชŸเชพเชจเซ€ เช…เชจเซเชฏ เชชเช‚เช•เซเชคเชฟเช“ เชฎเซ‹เช•เชฒเซ€ เชถเช•เซ‡ เช›เซ‡". เช…เชจเซ‡ เช•เซ‹เชˆ เชฎเชฐเซเชฏเชพเชฆเชพ เชจเชนเซ€ เช† เชกเซ‡เชŸเชพเชจเชพ เชตเซ‹เชฒเซเชฏเซเชฎ เชชเชฐ, เชคเชฎเชพเชฐเซ‡ เชซเช•เซเชค เชฆเชฐเซ‡เช• เชฒเชพเช‡เชจ เชธเชพเชฅเซ‡ เชถเชฐเซ‚ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ SSH-.

เชเชจเซเชกเชฒเซ‡เชถ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชœเซ‡ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เช† เชฌเชฐเชพเชฌเชฐ เช›เซ‡: เชคเซ‡ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡ เช…เชจเช‚เชค เชฐเซ‡เชจเซเชกเชฎเชฒเซ€ เชœเชจเชฐเซ‡เชŸ เชฅเชฏเซ‡เชฒ เชกเซ‡เชŸเชพเชจเซ‹ เชชเซเชฐเชตเชพเชน, เชœเซ‡ RFC 4253 เชจเซเช‚ เชชเชพเชฒเชจ เช•เชฐเซ‡ เช›เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡, เชชเซเชฐเชฎเชพเชฃเซ€เช•เชฐเชฃ เชชเชนเซ‡เชฒเชพ เชฎเซ‹เช•เชฒเซ‹, เช…เชจเซ‡ เชฆเชฐเซ‡เช• เชฒเชพเช‡เชจ เชธเชพเชฅเซ‡ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡ SSH- เช…เชจเซ‡ 255 เช…เช•เซเชทเชฐเซ‹เชฅเซ€ เชตเชงเซ เชจเชฅเซ€, เชœเซ‡เชฎเชพเช‚ เชฒเซ€เชŸเซ€เชจเชพ เช…เช‚เชคเชจเชพ เช…เช•เซเชทเชฐเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชฌเชงเซเช‚ เชงเซ‹เชฐเชฃ เชฎเซเชœเชฌ เช›เซ‡.

เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‡, เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชชเซ‡เช•เซ‡เชŸเซ‹ เชฎเซ‹เช•เชฒเชตเชพ เชตเชšเซเชšเซ‡ 10 เชธเซ‡เช•เชจเซเชก เชฐเชพเชน เชœเซเช เช›เซ‡. เช† เช•เซเชฒเชพเชฏเช‚เชŸเชจเซ‡ เชธเชฎเชฏ เชธเชฎเชพเชชเซเชค เชฅเชตเชพเชฅเซ€ เช…เชŸเช•เชพเชตเซ‡ เช›เซ‡, เชคเซ‡เชฅเซ€ เช•เซเชฒเชพเชฏเช‚เชŸ เช•เชพเชฏเชฎ เชฎเชพเชŸเซ‡ เชซเชธเชพเชˆ เชœเชถเซ‡.

เช•เซเชฐเชฟเชชเซเชŸเซ‹เช—เซเชฐเชพเชซเซ€ เชฒเชพเช—เซ เช•เชฐเชคเชพเช‚ เชชเชนเซ‡เชฒเชพเช‚ เชกเซ‡เชŸเชพ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช†เชตเชคเซ‹ เชนเซ‹เชตเชพเชฅเซ€, เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช…เชคเซเชฏเช‚เชค เชธเชฐเชณ เช›เซ‡. เชคเซ‡เชจเซ‡ เช•เซ‹เชˆเชชเชฃ เชธเชพเช‡เชซเชฐ เชฒเชพเช—เซ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€ เช…เชจเซ‡ เชฌเชนเซเชตเชฟเชง เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเซเชธเชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡.

เชฒเซ‡เช–เช•เซ‡ เช เชธเซเชจเชฟเชถเซเชšเชฟเชค เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเชฏเซ‹ เช•เซ‡ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพ เช“เช›เชพเชฎเชพเช‚ เช“เช›เชพ เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชฎเชถเซ€เชจ เชชเชฐ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชงเซเชฏเชพเชจ เชตเช—เชฐ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡. เช†เชงเซเชจเชฟเช• เชเชจเซเชŸเชฟเชตเชพเชฏเชฐเชธ เช…เชจเซ‡ เช…เชจเซเชฏ "เชธเซเชฐเช•เซเชทเชพ เชธเชฟเชธเซเชŸเชฎเซ‹" เชฅเซ€ เชตเชฟเชชเชฐเซ€เชค, เชคเซ‡ เชคเชฎเชพเชฐเชพ เช•เชฎเซเชชเซเชฏเซเชŸเชฐเชจเซ‡ เชงเซ€เชฎเซเช‚ เชจ เช•เชฐเชตเซเช‚ เชœเซ‹เชˆเช. เชฅเซ‹เชกเชพ เชตเชงเซ เช˜เชกเชพเชฏเซ‡เชฒเซเช‚ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ เช…เชฎเชฒเซ€เช•เชฐเชฃเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชคเซ‡ เชŸเซเชฐเชพเชซเชฟเช• เช…เชจเซ‡ เชฎเซ‡เชฎเชฐเซ€ เชตเชชเชฐเชพเชถ เชฌเช‚เชจเซ‡เชจเซ‡ เช˜เชŸเชพเชกเชตเชพเชฎเชพเช‚ เชธเชซเชณ เชฐเชนเซเชฏเซ‹. เชœเซ‹ เชคเซ‡ เชจเชตเชพ เช•เชจเซ‡เช•เซเชถเชจ เชชเชฐ เชเช• เช…เชฒเช— เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‹ เชธเช‚เชญเชตเชฟเชค เชนเซเชฎเชฒเชพเช–เซ‹เชฐเซ‹ เชฎเชถเซ€เชจ เชชเชฐ เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ‡ เชเช•เซเชเซ‹เชธเซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฌเชนเซเชตเชฟเชง เช•เชจเซ‡เช•เซเชถเชจเซเชธ เช–เซ‹เชฒเซ€เชจเซ‡ DDoS เชนเซเชฎเชฒเซ‹ เชถเชฐเซ‚ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เช•เชจเซ‡เช•เซเชถเชจ เชฆเซ€เช  เชเช• เชฅเซเชฐเซ‡เชก เชชเชฃ เชถเซเชฐเซ‡เชทเซเช  เชตเชฟเช•เชฒเซเชช เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เช•เชฐเซเชจเชฒ เชฅเซเชฐเซ‡เชกเซ‹เชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ‹ เชฌเช—เชพเชก เช•เชฐเชถเซ‡.

เชคเซ‡เชฅเซ€ เชœ เช•เซเชฐเชฟเชธ เชตเซ‡เชฒเซ‹เชจเซเชธเซ‡ เชเชจเซเชกเชฒเซ‡เชถ เชฎเชพเชŸเซ‡ เชธเซŒเชฅเซ€ เชนเชณเชตเซ‹ เชตเชฟเช•เชฒเซเชช เชชเชธเช‚เชฆ เช•เชฐเซเชฏเซ‹: เชธเชฟเช‚เช—เชฒ-เชฅเซเชฐเซ‡เชกเซ‡เชก เชธเชฐเซเชตเชฐ poll(2), เชœเซเชฏเชพเช‚ เชŸเซเชฐเซ‡เชชเชฎเชพเช‚เชจเชพ เช•เซเชฒเชพเชฏเชจเซเชŸ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฐเซ€เชคเซ‡ เช•เซ‹เชˆ เชตเชงเชพเชฐเชพเชจเชพ เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพ เชจเชฅเซ€, เช•เชฐเซเชจเชฒเชฎเชพเช‚ เชธเซ‹เช•เซ‡เชŸ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเชคเชพ เชจเชฅเซ€ เช…เชจเซ‡ เชเชจเซเชกเชฒเซ‡เชถเชฎเชพเช‚ เชŸเซเชฐเซ‡เช•เชฟเช‚เช— เชฎเชพเชŸเซ‡ เช…เชจเซเชฏ 78 เชฌเชพเช‡เชŸเซเชธ. เชฆเชฐเซ‡เช• เช•เซเชฒเชพเชฏเช‚เชŸ เชฎเชพเชŸเซ‡ เชฌเชซเชฐเซเชธ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพ เช…เชจเซ‡ เชฎเซ‹เช•เชฒเชตเชพเชจเซเช‚ เชŸเชพเชณเชตเชพ เชฎเชพเชŸเซ‡, เชเชจเซเชกเชฒเซ‡เชถ เชเช• เชกเชพเชฏเชฐเซ‡เช•เซเชŸ เชเช•เซเชธเซ‡เชธ เชธเซ‹เช•เซ‡เชŸ เช–เซ‹เชฒเซ‡ เช›เซ‡ เช…เชจเซ‡ เชฒเช—เชญเช— เชธเชฎเช—เซเชฐ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ TCP/IP เชธเซเชŸเซ‡เช•เชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเซ€เชจเซ‡ TCP เชชเซ‡เช•เซ‡เชŸเซเชธเชจเซ‹ เชธเซ€เชงเซ‹ เช…เชจเซเชตเชพเชฆ เช•เชฐเซ‡ เช›เซ‡. เช‡เชจเช•เชฎเชฟเช‚เช— เชฌเชซเชฐเชจเซ€ เชฌเชฟเชฒเช•เซเชฒ เชœเชฐเซ‚เชฐ เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เช…เชฎเชจเซ‡ เช‡เชจเช•เชฎเชฟเช‚เช— เชกเซ‡เชŸเชพเชฎเชพเช‚ เชฐเชธ เชจเชฅเซ€.

เชฒเซ‡เช–เช• เช•เชนเซ‡ เช›เซ‡ เช•เซ‡ เชคเซ‡เชฎเชจเชพ เช•เชพเชฐเซเชฏเช•เซเชฐเชฎ เชธเชฎเชฏเซ‡ เช–เชฌเชฐ เชจ เชนเชคเซ€ เชชเชพเชฏเชฅเซ‹เชจเชจเชพ เชเชธเซ€เชธเซ€เช“ เช…เชจเซ‡ เช…เชจเซเชฏ เชŸเชฐเซเชชเชฟเชŸเซเชธเชจเชพ เช…เชธเซเชคเชฟเชคเซเชต เชตเชฟเชถเซ‡. เชœเซ‹ เชคเซ‡ asycio เชตเชฟเชถเซ‡ เชœเชพเชฃเชคเซ‹ เชนเซ‹เชค, เชคเซ‹ เชคเซ‡ Python เชฎเชพเช‚ เชซเช•เซเชค 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())

Asyncio tarpits เชฒเช–เชตเชพ เชฎเชพเชŸเซ‡ เช†เชฆเชฐเซเชถ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช† เชนเซ‚เช• เชซเชพเชฏเชฐเชซเซ‹เช•เซเชธ, เช•เซเชฐเซ‹เชฎ เช…เชฅเชตเชพ เช…เชจเซเชฏ เช•เซ‹เชˆเชชเชฃ เช•เซเชฒเชพเชฏเช‚เชŸเชจเซ‡ เชธเซเชฅเชฟเชฐ เช•เชฐเชถเซ‡ เชœเซ‡ เชคเชฎเชพเชฐเชพ 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 เชนเซเชฎเชฒเซ‹. เชœเซ‹ เช•เซ‡, เช…เชคเซเชฏเชพเชฐ เชธเซเชงเซ€ เช†เชตเชพ เช•เซ‹เชˆ เช•เชฟเชธเซเชธเชพ เชธเชพเชฎเซ‡ เช†เชตเซเชฏเชพ เชจเชฅเซ€, เช…เชจเซ‡ tarpits เชฎเชนเชพเชจ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡.

เชนเชฌ:
เชชเชพเชฏเชฅเซ‹เชจ, เชฎเชพเชนเชฟเชคเซ€ เชธเซเชฐเช•เซเชทเชพ, เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ, เชธเชฟเชธเซเชŸเชฎ เชเชกเชฎเชฟเชจเชฟเชธเซเชŸเซเชฐเซ‡เชถเชจ

เชŸเซ…เช—เซเชธ:
SSH, Endlesssh, tarpit, tarpit, trap, asycio
เช‡เชจเช•เชฎเชฟเช‚เช— SSH เชœเซ‹เชกเชพเชฃเซ‹ เชฎเชพเชŸเซ‡ เชŸเซเชฐเซ‡เชช (เชŸเชพเชฐเซเชชเชฟเชŸ).

เชคเซ‡ เช•เซ‹เชˆ เชฐเชนเชธเซเชฏ เชจเชฅเซ€ เช•เซ‡ เช‡เชจเซเชŸเชฐเชจเซ‡เชŸ เช–เซ‚เชฌ เชœ เชชเซเชฐเชคเชฟเช•เซ‚เชณ เชตเชพเชคเชพเชตเชฐเชฃ เช›เซ‡. เชœเชฒเชฆเซ€ เชคเชฎเซ‡ เชธเชฐเซเชตเชฐ เช‰เชญเชพ เช•เชฐเซ‹ เช›เซ‹, เชคเซ‡ เชคเชฐเชค เชœ เชฎเซ‹เชŸเชพ เชนเซเชฎเชฒเชพเช“ เช…เชจเซ‡ เชฌเชนเซเชตเชฟเชง เชธเซเช•เซ‡เชจเชจเซ‹ เชญเซ‹เช— เชฌเชจเซ‡ เช›เซ‡. เชฆเชพเช–เซเชฒเชพ เชคเชฐเซ€เช•เซ‡ เชธเซเชฐเช•เซเชทเชพ เชฐเช•เซเชทเช•เซ‹ เชชเชพเชธเซ‡เชฅเซ€ เชฎเชงเชชเซ‚เชกเซ‹ เชคเชฎเซ‡ เช† เช•เชšเชฐเชพเชจเชพ เชŸเซเชฐเชพเชซเชฟเช•เชจเชพ เชธเซเช•เซ‡เชฒเชจเซ‹ เช…เช‚เชฆเชพเชœ เชฒเช—เชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹. เชนเช•เซ€เช•เชคเชฎเชพเช‚, เชธเชฐเซ‡เชฐเชพเชถ เชธเชฐเซเชตเชฐ เชชเชฐ, 99% เชŸเซเชฐเชพเชซเชฟเช• เชฆเซ‚เชทเชฟเชค เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡.

เชŸเซ‡เชฐเชชเชฟเชŸ เช เชเช• เชŸเซเชฐเซ‡เชช เชชเซ‹เชฐเซเชŸ เช›เซ‡ เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช‡เชจเช•เชฎเชฟเช‚เช— เช•เชจเซ‡เช•เซเชถเชจเชจเซ‡ เชงเซ€เชฎเซเช‚ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡. เชœเซ‹ เชคเซƒเชคเซ€เชฏ-เชชเช•เซเชท เชธเชฟเชธเซเชŸเชฎ เช† เชชเซ‹เชฐเซเชŸ เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸ เชฅเชพเชฏ เช›เซ‡, เชคเซ‹ เชคเชฎเซ‡ เชเชกเชชเชฅเซ€ เช•เชจเซ‡เช•เซเชถเชจ เชฌเช‚เชง เช•เชฐเซ€ เชถเช•เชถเซ‹ เชจเชนเซ€เช‚. เชคเซ‡เชฃเซ€เช เชคเซ‡เชจเชพ เชธเชฟเชธเซเชŸเชฎ เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ‹ เชฌเช—เชพเชก เช•เชฐเชตเซ‹ เชชเชกเชถเซ‡ เช…เชจเซ‡ เช•เชจเซ‡เช•เซเชถเชจ เชธเชฎเชฏ เชธเชฎเชพเชชเซเชค เชฅเชพเชฏ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เชฐเชพเชน เชœเซ‹เชตเซ€ เชชเชกเชถเซ‡, เช…เชฅเชตเชพ เชคเซ‡เชจเซ‡ เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ เชธเชฎเชพเชชเซเชค เช•เชฐเชตเซ€ เชชเชกเชถเซ‡.

เชฎเซ‹เชŸเซ‡เชญเชพเช—เซ‡, เชฐเช•เซเชทเชฃ เชฎเชพเชŸเซ‡ เชŸเซ‡เชฐเชชเชฟเชŸเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡. เช† เชŸเซ‡เช•เชจเชฟเช• เชธเซŒ เชชเซเชฐเชฅเชฎ เช•เซ‹เชฎเซเชชเซเชฏเซเชŸเชฐ เชตเซ‹เชฐเซเชฎเซเชธ เชธเชพเชฎเซ‡ เชฐเช•เซเชทเชฃ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡ เชตเชฟเช•เชธเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€. เช…เชจเซ‡ เชนเชตเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชธเซเชชเชพเชฎเชฐเซเชธ เช…เชจเซ‡ เชธเช‚เชถเซ‹เชงเช•เซ‹เชจเชพ เชœเซ€เชตเชจเชจเซ‡ เชฌเชฐเชฌเชพเชฆ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡ เชœเซ‡เช“ เชเช• เชชเช‚เช•เซเชคเชฟเชฎเชพเช‚ เชคเชฎเชพเชฎ IP เชธเชฐเชจเชพเชฎเชพเช‚เชจเชพ เชตเซเชฏเชพเชชเช• เชธเซเช•เซ‡เชจเชฟเช‚เช—เชฎเชพเช‚ เชฐเซ‹เช•เชพเชฏเซ‡เชฒเชพ เช›เซ‡ (เชนเซ‡เชฌเซเชฐเซ‡ เชชเชฐเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹: เช“เชธเซเชŸเซเชฐเชฟเชฏเชพ, เชฏเซเช•เซเชฐเซ‡เชจ).

เช•เซเชฐเชฟเชธ เชตเซ‡เชฒเซ‹เชจเซเชธ เชจเชพเชฎเชจเชพ เชธเชฟเชธเซเชŸเชฎ เชเชกเชฎเชฟเชจเชฟเชธเซเชŸเซเชฐเซ‡เชŸเชฐเซ‹เชฎเชพเช‚เชฅเซ€ เชเช• เชฆเซ‡เช–เซ€เชคเซ€ เชฐเซ€เชคเซ‡ เช† เชฌเชฆเชจเชพเชฎเซ€ เชœเซ‹เชˆเชจเซ‡ เช•เช‚เชŸเชพเชณเซ€ เช—เชฏเซ‹ เชนเชคเซ‹ - เช…เชจเซ‡ เชคเซ‡เชฃเซ‡ เชเช• เชจเชพเชจเซ‹ เช•เชพเชฐเซเชฏเช•เซเชฐเชฎ เชฒเช–เซเชฏเซ‹ เชนเชคเซ‹. เช…เชจเช‚เชค, SSH เชฎเชพเชŸเซ‡ เชŸเซ‡เชฐเชชเชฟเชŸ เช•เซ‡ เชœเซ‡ เช‡เชจเช•เชฎเชฟเช‚เช— เช•เชจเซ‡เช•เซเชถเชจเชจเซ‡ เชงเซ€เชฎเซเช‚ เช•เชฐเซ‡ เช›เซ‡. เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชชเซ‹เชฐเซเชŸ เช–เซ‹เชฒเซ‡ เช›เซ‡ (เชชเชฐเซ€เช•เซเชทเชฃ เชฎเชพเชŸเซ‡เชจเซเช‚ เชกเชฟเชซเซ‹เชฒเซเชŸ เชชเซ‹เชฐเซเชŸ 2222 เช›เซ‡) เช…เชจเซ‡ SSH เชธเชฐเซเชตเชฐ เชนเซ‹เชตเชพเชจเซ‹ เชขเซ‹เช‚เช— เช•เชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชตเชพเชธเซเชคเชตเชฎเชพเช‚ เชคเซ‡ เช‡เชจเช•เชฎเชฟเช‚เช— เช•เซเชฒเชพเชฏเชจเซเชŸ เชธเชพเชฅเซ‡ เช…เชจเช‚เชค เชœเซ‹เชกเชพเชฃ เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซ‡ เช›เซ‡ เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชคเซ‡ เช›เซ‹เชกเซ€ เชจ เชฆเซ‡. เช•เซเชฒเชพเชฏเช‚เชŸ เชฌเช‚เชง เชจ เชฅเชพเชฏ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เช† เช˜เชฃเชพ เชฆเชฟเชตเชธเซ‹ เช•เซ‡ เชคเซ‡เชฅเซ€ เชตเชงเซ เชธเชฎเชฏ เชธเซเชงเซ€ เชšเชพเชฒเซ เชฐเชนเซ€ เชถเช•เซ‡ เช›เซ‡.

เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเชจเซ€ เชธเซเชฅเชพเชชเชจเชพ:

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

เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชพเชฏเซ‡เชฒ เชŸเชฐเซเชชเชฟเชŸ เชนเซเชฎเชฒเชพเช–เซ‹เชฐ เชชเชพเชธเซ‡เชฅเซ€ เชคเชฎเชพเชฐเชพ เช•เชฐเชคเชพเช‚ เชตเชงเซ เชธเช‚เชธเชพเชงเชจเซ‹ เชฒเซ‡เชถเซ‡. เชชเชฐเช‚เชคเซ เชคเซ‡ เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ€ เชฌเชพเชฌเชค เชชเชฃ เชจเชฅเซ€. เชฒเซ‡เช–เช• เชคเซ‡เช“ เชฒเช–เซ‡ เช›เซ‡เช•เซ‡ เช•เชพเชฐเซเชฏเช•เซเชฐเชฎ เชตเซเชฏเชธเชจเช•เชพเชฐเช• เช›เซ‡. เช…เชคเซเชฏเชพเชฐเซ‡ เชคเซ‡เชจเชพ 27 เช—เซเชฐเชพเชนเช•เซ‹ เชซเชธเชพเชฏเซ‡เชฒเชพ เช›เซ‡, เชœเซ‡เชฎเชพเช‚เชฅเซ€ เช•เซ‡เชŸเชฒเชพเช• เช…เช เชตเชพเชกเชฟเชฏเชพเชฅเซ€ เชœเซ‹เชกเชพเชฏเซ‡เชฒเชพ เช›เซ‡. เชชเซเชฐเชตเซƒเชคเซเชคเชฟเชจเซ€ เชŸเซ‹เชš เชชเชฐ, 1378 เช—เซเชฐเชพเชนเช•เซ‹ 20 เช•เชฒเชพเช• เชธเซเชงเซ€ เชซเชธเชพเชฏเซ‡เชฒเชพ เชนเชคเชพ!

เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชฎเซ‹เชกเชฎเชพเช‚, เชเชจเซเชกเชฒเซ‡เชถ เชธเชฐเซเชตเชฐเชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชชเซ‹เชฐเซเชŸ 22 เชชเชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชœเซเชฏเชพเช‚ เช—เซเช‚เชกเชพเช“ เชเช• เชธเชพเชฅเซ‡ เชชเช›เชพเชกเซ‡ เช›เซ‡. เชฎเชพเชจเช• เชธเซเชฐเช•เซเชทเชพ เชญเชฒเชพเชฎเชฃเซ‹ เชนเช‚เชฎเซ‡เชถเชพ SSH เชจเซ‡ เช…เชฒเช— เชชเซ‹เชฐเซเชŸ เชชเชฐ เช–เชธเซ‡เชกเชตเชพเชจเซ€ เชธเชฒเชพเชน เช†เชชเซ‡ เช›เซ‡, เชœเซ‡ เชคเซเชฐเช‚เชค เชœ เชฒเซ‹เช—เชจเชพ เช•เชฆเชจเซ‡ เชคเซ€เชตเซเชฐเชคเชพเชจเชพ เช•เซเชฐเชฎเชฎเชพเช‚ เช˜เชŸเชพเชกเซ‡ เช›เซ‡.

เช•เซเชฐเชฟเชธ เชตเซ‡เชฒเซ‹เชจเซเชธ เช•เชนเซ‡ เช›เซ‡ เช•เซ‡ เชคเซ‡เชฎเชจเซ‹ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชธเซเชชเชทเซเชŸเซ€เช•เชฐเชฃเชจเชพ เชเช• เชซเช•เชฐเชพเชจเซเช‚ เชถเซ‹เชทเชฃ เช•เชฐเซ‡ เช›เซ‡ เช†เชฐเชเชซเชธเซ€ 4253 SSH เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชฎเชพเชŸเซ‡. TCP เช•เชจเซ‡เช•เซเชถเชจ เชธเซเชฅเชพเชชเชฟเชค เชฅเชฏเชพ เชชเช›เซ€ เชคเชฐเชค เชœ, เชชเชฐเช‚เชคเซ เช•เซเชฐเชฟเชชเซเชŸเซ‹เช—เซเชฐเชพเชซเซ€ เชฒเชพเช—เซ เชฅเชพเชฏ เชคเซ‡ เชชเชนเซ‡เชฒเชพเช‚, เชฌเช‚เชจเซ‡ เชชเช•เซเชทเซ‹เช เชเช• เช“เชณเช– เชธเซเชŸเซเชฐเชฟเช‚เช— เชฎเซ‹เช•เชฒเชตเซ€ เช†เชตเชถเซเชฏเช• เช›เซ‡. เช…เชจเซ‡ เชเช• เชจเซ‹เช‚เชง เชชเชฃ เช›เซ‡: "เชธเช‚เชธเซเช•เชฐเชฃ เชชเช‚เช•เซเชคเชฟ เชฎเซ‹เช•เชฒเชคเชพ เชชเชนเซ‡เชฒเชพ เชธเชฐเซเชตเชฐ เชกเซ‡เชŸเชพเชจเซ€ เช…เชจเซเชฏ เชชเช‚เช•เซเชคเชฟเช“ เชฎเซ‹เช•เชฒเซ€ เชถเช•เซ‡ เช›เซ‡". เช…เชจเซ‡ เช•เซ‹เชˆ เชฎเชฐเซเชฏเชพเชฆเชพ เชจเชนเซ€ เช† เชกเซ‡เชŸเชพเชจเชพ เชตเซ‹เชฒเซเชฏเซเชฎ เชชเชฐ, เชคเชฎเชพเชฐเซ‡ เชซเช•เซเชค เชฆเชฐเซ‡เช• เชฒเชพเช‡เชจ เชธเชพเชฅเซ‡ เชถเชฐเซ‚ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ SSH-.

เชเชจเซเชกเชฒเซ‡เชถ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชœเซ‡ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เช† เชฌเชฐเชพเชฌเชฐ เช›เซ‡: เชคเซ‡ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡ เช…เชจเช‚เชค เชฐเซ‡เชจเซเชกเชฎเชฒเซ€ เชœเชจเชฐเซ‡เชŸ เชฅเชฏเซ‡เชฒ เชกเซ‡เชŸเชพเชจเซ‹ เชชเซเชฐเชตเชพเชน, เชœเซ‡ RFC 4253 เชจเซเช‚ เชชเชพเชฒเชจ เช•เชฐเซ‡ เช›เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡, เชชเซเชฐเชฎเชพเชฃเซ€เช•เชฐเชฃ เชชเชนเซ‡เชฒเชพ เชฎเซ‹เช•เชฒเซ‹, เช…เชจเซ‡ เชฆเชฐเซ‡เช• เชฒเชพเช‡เชจ เชธเชพเชฅเซ‡ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡ SSH- เช…เชจเซ‡ 255 เช…เช•เซเชทเชฐเซ‹เชฅเซ€ เชตเชงเซ เชจเชฅเซ€, เชœเซ‡เชฎเชพเช‚ เชฒเซ€เชŸเซ€เชจเชพ เช…เช‚เชคเชจเชพ เช…เช•เซเชทเชฐเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชฌเชงเซเช‚ เชงเซ‹เชฐเชฃ เชฎเซเชœเชฌ เช›เซ‡.

เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‡, เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชชเซ‡เช•เซ‡เชŸเซ‹ เชฎเซ‹เช•เชฒเชตเชพ เชตเชšเซเชšเซ‡ 10 เชธเซ‡เช•เชจเซเชก เชฐเชพเชน เชœเซเช เช›เซ‡. เช† เช•เซเชฒเชพเชฏเช‚เชŸเชจเซ‡ เชธเชฎเชฏ เชธเชฎเชพเชชเซเชค เชฅเชตเชพเชฅเซ€ เช…เชŸเช•เชพเชตเซ‡ เช›เซ‡, เชคเซ‡เชฅเซ€ เช•เซเชฒเชพเชฏเช‚เชŸ เช•เชพเชฏเชฎ เชฎเชพเชŸเซ‡ เชซเชธเชพเชˆ เชœเชถเซ‡.

เช•เซเชฐเชฟเชชเซเชŸเซ‹เช—เซเชฐเชพเชซเซ€ เชฒเชพเช—เซ เช•เชฐเชคเชพเช‚ เชชเชนเซ‡เชฒเชพเช‚ เชกเซ‡เชŸเชพ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช†เชตเชคเซ‹ เชนเซ‹เชตเชพเชฅเซ€, เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช…เชคเซเชฏเช‚เชค เชธเชฐเชณ เช›เซ‡. เชคเซ‡เชจเซ‡ เช•เซ‹เชˆเชชเชฃ เชธเชพเช‡เชซเชฐ เชฒเชพเช—เซ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€ เช…เชจเซ‡ เชฌเชนเซเชตเชฟเชง เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเซเชธเชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡.

เชฒเซ‡เช–เช•เซ‡ เช เชธเซเชจเชฟเชถเซเชšเชฟเชค เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเชฏเซ‹ เช•เซ‡ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพ เช“เช›เชพเชฎเชพเช‚ เช“เช›เชพ เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชฎเชถเซ€เชจ เชชเชฐ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชงเซเชฏเชพเชจ เชตเช—เชฐ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡. เช†เชงเซเชจเชฟเช• เชเชจเซเชŸเชฟเชตเชพเชฏเชฐเชธ เช…เชจเซ‡ เช…เชจเซเชฏ "เชธเซเชฐเช•เซเชทเชพ เชธเชฟเชธเซเชŸเชฎเซ‹" เชฅเซ€ เชตเชฟเชชเชฐเซ€เชค, เชคเซ‡ เชคเชฎเชพเชฐเชพ เช•เชฎเซเชชเซเชฏเซเชŸเชฐเชจเซ‡ เชงเซ€เชฎเซเช‚ เชจ เช•เชฐเชตเซเช‚ เชœเซ‹เชˆเช. เชฅเซ‹เชกเชพ เชตเชงเซ เช˜เชกเชพเชฏเซ‡เชฒเซเช‚ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ เช…เชฎเชฒเซ€เช•เชฐเชฃเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชคเซ‡ เชŸเซเชฐเชพเชซเชฟเช• เช…เชจเซ‡ เชฎเซ‡เชฎเชฐเซ€ เชตเชชเชฐเชพเชถ เชฌเช‚เชจเซ‡เชจเซ‡ เช˜เชŸเชพเชกเชตเชพเชฎเชพเช‚ เชธเชซเชณ เชฐเชนเซเชฏเซ‹. เชœเซ‹ เชคเซ‡ เชจเชตเชพ เช•เชจเซ‡เช•เซเชถเชจ เชชเชฐ เชเช• เช…เชฒเช— เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‹ เชธเช‚เชญเชตเชฟเชค เชนเซเชฎเชฒเชพเช–เซ‹เชฐเซ‹ เชฎเชถเซ€เชจ เชชเชฐ เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ‡ เชเช•เซเชเซ‹เชธเซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฌเชนเซเชตเชฟเชง เช•เชจเซ‡เช•เซเชถเชจเซเชธ เช–เซ‹เชฒเซ€เชจเซ‡ DDoS เชนเซเชฎเชฒเซ‹ เชถเชฐเซ‚ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เช•เชจเซ‡เช•เซเชถเชจ เชฆเซ€เช  เชเช• เชฅเซเชฐเซ‡เชก เชชเชฃ เชถเซเชฐเซ‡เชทเซเช  เชตเชฟเช•เชฒเซเชช เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เช•เชฐเซเชจเชฒ เชฅเซเชฐเซ‡เชกเซ‹เชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ‹ เชฌเช—เชพเชก เช•เชฐเชถเซ‡.

เชคเซ‡เชฅเซ€ เชœ เช•เซเชฐเชฟเชธ เชตเซ‡เชฒเซ‹เชจเซเชธเซ‡ เชเชจเซเชกเชฒเซ‡เชถ เชฎเชพเชŸเซ‡ เชธเซŒเชฅเซ€ เชนเชณเชตเซ‹ เชตเชฟเช•เชฒเซเชช เชชเชธเช‚เชฆ เช•เชฐเซเชฏเซ‹: เชธเชฟเช‚เช—เชฒ-เชฅเซเชฐเซ‡เชกเซ‡เชก เชธเชฐเซเชตเชฐ poll(2), เชœเซเชฏเชพเช‚ เชŸเซเชฐเซ‡เชชเชฎเชพเช‚เชจเชพ เช•เซเชฒเชพเชฏเชจเซเชŸ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฐเซ€เชคเซ‡ เช•เซ‹เชˆ เชตเชงเชพเชฐเชพเชจเชพ เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพ เชจเชฅเซ€, เช•เชฐเซเชจเชฒเชฎเชพเช‚ เชธเซ‹เช•เซ‡เชŸ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเชคเชพ เชจเชฅเซ€ เช…เชจเซ‡ เชเชจเซเชกเชฒเซ‡เชถเชฎเชพเช‚ เชŸเซเชฐเซ‡เช•เชฟเช‚เช— เชฎเชพเชŸเซ‡ เช…เชจเซเชฏ 78 เชฌเชพเช‡เชŸเซเชธ. เชฆเชฐเซ‡เช• เช•เซเชฒเชพเชฏเช‚เชŸ เชฎเชพเชŸเซ‡ เชฌเชซเชฐเซเชธ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพ เช…เชจเซ‡ เชฎเซ‹เช•เชฒเชตเชพเชจเซเช‚ เชŸเชพเชณเชตเชพ เชฎเชพเชŸเซ‡, เชเชจเซเชกเชฒเซ‡เชถ เชเช• เชกเชพเชฏเชฐเซ‡เช•เซเชŸ เชเช•เซเชธเซ‡เชธ เชธเซ‹เช•เซ‡เชŸ เช–เซ‹เชฒเซ‡ เช›เซ‡ เช…เชจเซ‡ เชฒเช—เชญเช— เชธเชฎเช—เซเชฐ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ TCP/IP เชธเซเชŸเซ‡เช•เชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเซ€เชจเซ‡ TCP เชชเซ‡เช•เซ‡เชŸเซเชธเชจเซ‹ เชธเซ€เชงเซ‹ เช…เชจเซเชตเชพเชฆ เช•เชฐเซ‡ เช›เซ‡. เช‡เชจเช•เชฎเชฟเช‚เช— เชฌเชซเชฐเชจเซ€ เชฌเชฟเชฒเช•เซเชฒ เชœเชฐเซ‚เชฐ เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เช…เชฎเชจเซ‡ เช‡เชจเช•เชฎเชฟเช‚เช— เชกเซ‡เชŸเชพเชฎเชพเช‚ เชฐเชธ เชจเชฅเซ€.

เชฒเซ‡เช–เช• เช•เชนเซ‡ เช›เซ‡ เช•เซ‡ เชคเซ‡เชฎเชจเชพ เช•เชพเชฐเซเชฏเช•เซเชฐเชฎ เชธเชฎเชฏเซ‡ เช–เชฌเชฐ เชจ เชนเชคเซ€ เชชเชพเชฏเชฅเซ‹เชจเชจเชพ เชเชธเซ€เชธเซ€เช“ เช…เชจเซ‡ เช…เชจเซเชฏ เชŸเชฐเซเชชเชฟเชŸเซเชธเชจเชพ เช…เชธเซเชคเชฟเชคเซเชต เชตเชฟเชถเซ‡. เชœเซ‹ เชคเซ‡ asycio เชตเชฟเชถเซ‡ เชœเชพเชฃเชคเซ‹ เชนเซ‹เชค, เชคเซ‹ เชคเซ‡ Python เชฎเชพเช‚ เชซเช•เซเชค 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())

Asyncio tarpits เชฒเช–เชตเชพ เชฎเชพเชŸเซ‡ เช†เชฆเชฐเซเชถ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช† เชนเซ‚เช• เชซเชพเชฏเชฐเชซเซ‹เช•เซเชธ, เช•เซเชฐเซ‹เชฎ เช…เชฅเชตเชพ เช…เชจเซเชฏ เช•เซ‹เชˆเชชเชฃ เช•เซเชฒเชพเชฏเช‚เชŸเชจเซ‡ เชธเซเชฅเชฟเชฐ เช•เชฐเชถเซ‡ เชœเซ‡ เชคเชฎเชพเชฐเชพ 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 เชนเซเชฎเชฒเซ‹. เชœเซ‹ เช•เซ‡, เช…เชคเซเชฏเชพเชฐ เชธเซเชงเซ€ เช†เชตเชพ เช•เซ‹เชˆ เช•เชฟเชธเซเชธเชพ เชธเชพเชฎเซ‡ เช†เชตเซเชฏเชพ เชจเชฅเซ€, เช…เชจเซ‡ tarpits เชฎเชนเชพเชจ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡.

เช‡เชจเช•เชฎเชฟเช‚เช— SSH เชœเซ‹เชกเชพเชฃเซ‹ เชฎเชพเชŸเซ‡ เชŸเซเชฐเซ‡เชช (เชŸเชพเชฐเซเชชเชฟเชŸ).

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹