рдЗрдирдХрдорд┐рдВрдЧ рдПрд╕рдПрд╕рдПрдЪ рдХрдиреЗрдХреНрд╢рдирд╕рд╛рдареА рдЯреНрд░реЕрдк (рдЯрд╛рд░реНрдкрд┐рдЯ).

рдЗрдВрдЯрд░рдиреЗрдЯ рд╣реЗ рдЕрддреНрдпрдВрдд рдкреНрд░рддрд┐рдХреВрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдЖрд╣реЗ рд╣реЗ рдЧреБрдкрд┐рдд рдирд╛рд╣реА. рдЖрдкрдг рд╕рд░реНрд╡реНрд╣рд░ рд╡рд╛рдврд╡рддрд╛рдЪ, рддреНрдпрд╛рд╡рд░ рддреНрд╡рд░рд┐рдд рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рд╣рд▓реНрд▓реЗ рдЖрдгрд┐ рдПрдХрд╛рдзрд┐рдХ рд╕реНрдХреЕрди рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде рд╕реБрд░рдХреНрд╖рд╛ рд░рдХреНрд╖рдХрд╛рдВрдХрдбреВрди рд╣рдиреАрдкреЙрдЯ рдпрд╛ рдХрдЪрд▒реНрдпрд╛рдЪреНрдпрд╛ рд╡рд╛рд╣рддреБрдХреАрдЪреЗ рдкреНрд░рдорд╛рдг рдХрд┐рддреА рдЕрд╕реЗрд▓ рдпрд╛рдЪрд╛ рдЕрдВрджрд╛рдЬ рддреБрдореНрд╣реА рд▓рд╛рд╡реВ рд╢рдХрддрд╛. рдЦрд░рдВ рддрд░, рд╕рд░рд╛рд╕рд░реА рд╕рд░реНрд╡реНрд╣рд░рд╡рд░, 99% рд░рд╣рджрд╛рд░реА рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдЕрд╕реВ рд╢рдХрддреЗ.

рдЯрд╛рд░реНрдкрд┐рдЯ рдПрдХ рдЯреНрд░реЕрдк рдкреЛрд░реНрдЯ рдЖрд╣реЗ рдЬреНрдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ рдЗрдирдХрдорд┐рдВрдЧ рдХрдиреЗрдХреНрд╢рди рдХрдореА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рдЬрд░ рддреГрддреАрдп-рдкрдХреНрд╖ рдкреНрд░рдгрд╛рд▓реА рдпрд╛ рдкреЛрд░реНрдЯрд╢реА рдХрдиреЗрдХреНрдЯ рд╣реЛрдд рдЕрд╕реЗрд▓, рддрд░ рддреБрдореНрд╣реА рддреНрд╡рд░рд┐рдд рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░реВ рд╢рдХрдгрд╛рд░ рдирд╛рд╣реА. рддрд┐рд▓рд╛ рддрд┐рдЪреА рд╕рд┐рд╕реНрдЯреАрдо рд╕рдВрд╕рд╛рдзрдиреЗ рд╡рд╛рдпрд╛ рдШрд╛рд▓рд╡рд╛рд╡реА рд▓рд╛рдЧрддреАрд▓ рдЖрдгрд┐ рдХрдиреЗрдХреНрд╢рди рдХрд╛рд▓рдмрд╛рд╣реНрдп рд╣реЛрдИрдкрд░реНрдпрдВрдд рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рд╛рд╡реА рд▓рд╛рдЧреЗрд▓ рдХрд┐рдВрд╡рд╛ рд╡реНрдпрдХреНрддрд┐рдЪрд▓рд┐рддрдкрдгреЗ рд╕рдорд╛рдкреНрдд рдХрд░рд╛рд╡реА рд▓рд╛рдЧреЗрд▓.

рдмрд░реНрдпрд╛рдЪрджрд╛, tarpits рд╕рдВрд░рдХреНрд╖рдгрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддрд╛рдд. рд╕рдВрдЧрдгрдХрд╛рддреАрд▓ рд╡рд░реНрдореНрд╕рдкрд╛рд╕реВрди рд╕рдВрд░рдХреНрд╖рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣реЗ рддрдВрддреНрд░ рдкреНрд░рдердо рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рдд рдЖрд▓реЗ. рдЖрдгрд┐ рдЖрддрд╛ рд╣реЗ рд╕реНрдкреЕрдорд░ рдЖрдгрд┐ рд╕рдВрд╢реЛрдзрдХрд╛рдВрдЪреЗ рдЬреАрд╡рди рдЙрдзреНрд╡рд╕реНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рдЬреЗ рд╕рд▓рдЧ рд╕рд░реНрд╡ IP рдкрддреНрддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╡рд┐рд╕реНрддреГрдд рд╕реНрдХреЕрдирд┐рдВрдЧрдордзреНрдпреЗ рдЧреБрдВрддрд▓реЗрд▓реЗ рдЖрд╣реЗрдд (рд╣реЕрдмреНрд░реЗрд╡рд░реАрд▓ рдЙрджрд╛рд╣рд░рдгреЗ: рдСрд╕реНрдЯреНрд░рд┐рдпрд╛, рдпреБрдХреНрд░реЗрди).

рдЦреНрд░рд┐рд╕ рд╡реЗрд▓рдиреНрд╕ рдирд╛рд╡рд╛рдЪреНрдпрд╛ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХрд╛рдВрдкреИрдХреА рдПрдХ рд╣рд╛ рдЕрдкрдорд╛рди рдкрд╛рд╣реВрди рдХрдВрдЯрд╛рд│рд▓рд╛ - рдЖрдгрд┐ рддреНрдпрд╛рдиреЗ рдПрдХ рдЫреЛрдЯрд╛рд╕рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рд╣рд┐рд▓рд╛ рдЕрдВрддрд╣реАрди, SSH рд╕рд╛рдареА рдПрдХ рдЯрд╛рд░реНрдкрд┐рдЯ рдЬреЗ рдЗрдирдХрдорд┐рдВрдЧ рдХрдиреЗрдХреНрд╢рди рдХрдореА рдХрд░рддреЗ. рдкреНрд░реЛрдЧреНрд░рд╛рдо рдПрдХ рдкреЛрд░реНрдЯ рдЙрдШрдбрддреЛ (рдЪрд╛рдЪрдгреАрд╕рд╛рдареА рдбреАрдлреЙрд▓реНрдЯ рдкреЛрд░реНрдЯ 2222 рдЖрд╣реЗ) рдЖрдгрд┐ рдПрд╕рдПрд╕рдПрдЪ рд╕рд░реНрд╡реНрд╣рд░ рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рднрд╛рд╕рд╡рддреЛ, рдкрд░рдВрддреБ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рддреЛ рдпреЗрдИрдкрд░реНрдпрдВрдд рдпреЗрдгрд╛рд░реНрдпрд╛ рдХреНрд▓рд╛рдпрдВрдЯрд╢реА рдЕрдВрддрд╣реАрди рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЛ. рдХреНрд▓рд╛рдпрдВрдЯ рдмрдВрдж рд╣реЛрдИрдкрд░реНрдпрдВрдд рд╣реЗ рдЕрдиреЗрдХ рджрд┐рд╡рд╕ рдХрд┐рдВрд╡рд╛ рддреНрдпрд╛рд╣реВрди рдЕрдзрд┐рдХ рдХрд╛рд│ рдЪрд╛рд▓реВ рд░рд╛рд╣реВ рд╢рдХрддреЗ.

рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЪреА рд╕реНрдерд╛рдкрдирд╛:

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

рдпреЛрдЧреНрдпрд░рд┐рддреНрдпрд╛ рдЕрдВрдорд▓рд╛рдд рдЖрдгрд▓реЗрд▓реЗ рдЯрд╛рд░реНрдкрд┐рдЯ рдЖрдХреНрд░рдордгрдХрд░реНрддреНрдпрд╛рдХрдбреВрди рддреБрдордЪреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рд╕рдВрд╕рд╛рдзрдиреЗ рдШреЗрдИрд▓. рдкрдг рддреЛ рд╕рдВрд╕рд╛рдзрдирд╛рдВрдЪрд╛рд╣реА рдореБрджреНрджрд╛ рдирд╛рд╣реА. рд▓реЗрдЦрдХ рддреЛ рд▓рд┐рд╣рд┐рддреЛрдХреА рдХрд╛рд░реНрдпрдХреНрд░рдо рд╡реНрдпрд╕рдирд╛рдзреАрди рдЖрд╣реЗ. рд╕рдзреНрдпрд╛ рдпрд╛рдд реирен рдХреНрд▓рд╛рдпрдВрдЯ рдЕрдбрдХрд▓реЗ рдЖрд╣реЗрдд, рддреНрдпрд╛рдкреИрдХреА рдХрд╛рд╣реА рдЖрдард╡рдбреНрдпрд╛рдВрдкрд╛рд╕реВрди рдЬреЛрдбрд▓реЗрд▓реЗ рдЖрд╣реЗрдд. рдХреНрд░рд┐рдпрд╛рдХрд▓рд╛рдкрд╛рдЪреНрдпрд╛ рд╢рд┐рдЦрд░рд╛рд╡рд░, 27 рдХреНрд▓рд╛рдпрдВрдЯ 1378 рддрд╛рд╕ рдЕрдбрдХрд▓реЗ рд╣реЛрддреЗ!

рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдореЛрдбрдордзреНрдпреЗ, рдПрдВрдбрд▓реЗрд╢ рд╕рд░реНрд╡реНрд╣рд░рд▓рд╛ рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдкреЛрд░реНрдЯ 22 рд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдЬреЗрдереЗ рдЧреБрдВрдб рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдареЛрдард╛рд╡рддрд╛рдд. рдорд╛рдирдХ рд╕реБрд░рдХреНрд╖рд╛ рд╢рд┐рдлрд╛рд░рд╢реА рдиреЗрд╣рдореА SSH рд▓рд╛ рд╡реЗрдЧрд│реНрдпрд╛ рдкреЛрд░реНрдЯрд╡рд░ рд╣рд▓рд╡рдгреНрдпрд╛рдЪрд╛ рд╕рд▓реНрд▓рд╛ рджреЗрддрд╛рдд, рдЬреНрдпрд╛рдореБрд│реЗ рд▓реЙрдЧрдЪрд╛ рдЖрдХрд╛рд░ рддреНрд╡рд░рд┐рдд рдХреНрд░рдорд╛рдиреЗ рдХрдореА рд╣реЛрддреЛ.

рдЦреНрд░рд┐рд╕ рд╡реЗрд▓рдиреНрд╕ рдореНрд╣рдгрддрд╛рдд рдХреА рддреНрдпрд╛рдЪрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рддрдкрд╢реАрд▓рд╛рдЪреНрдпрд╛ рдПрдХрд╛ рдкрд░рд┐рдЪреНрдЫреЗрджрд╛рдЪрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЛ рдЖрд░рдПрдлрд╕реА 4253 SSH рдкреНрд░реЛрдЯреЛрдХреЙрд▓рд▓рд╛. TCP рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдЭрд╛рд▓реНрдпрд╛рдирдВрддрд░ рд▓рдЧреЗрдЪ, рдкрд░рдВрддреБ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА, рджреЛрдиреНрд╣реА рдкрдХреНрд╖рд╛рдВрдиреА рдПрдХ рдУрд│рдЦ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рдард╡рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЖрдгрд┐ рдПрдХ рдЯреАрдк рджреЗрдЦреАрд▓ рдЖрд╣реЗ: "рд╡реНрд╣рд░реНрдЬрди рдкрдВрдХреНрддреА рдкрд╛рдард╡рдгреНрдпрд╛рдкреВрд░реНрд╡реА рд╕рд░реНрд╡реНрд╣рд░ рдбреЗрдЯрд╛рдЪреНрдпрд╛ рдЗрддрд░ рдкрдВрдХреНрддреА рдкрд╛рдард╡реВ рд╢рдХрддреЛ". рдЖрдгрд┐ рдорд░реНрдпрд╛рджрд╛ рдирд╛рд╣реА рдпрд╛ рдбреЗрдЯрд╛рдЪреНрдпрд╛ рд╡реНрд╣реЙрд▓реНрдпреВрдорд╡рд░, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдлрдХреНрдд рдкреНрд░рддреНрдпреЗрдХ рдУрд│реАрдиреЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ SSH-.

рдПрдВрдбрд▓реЗрд╢ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдиреЗрдордХреЗ рд╣реЗрдЪ рдХрд░рддреЛ: рддреЗ рдкрд╛рдард╡рддреЗ рдЕрдВрддрд╣реАрди рдпрд╛рджреГрдЪреНрдЫрд┐рдХрдкрдгреЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдбреЗрдЯрд╛рдЪрд╛ рдкреНрд░рд╡рд╛рд╣, рдЬреЗ RFC 4253 рдЪреЗ рдкрд╛рд▓рди рдХрд░рддрд╛рдд, рдореНрд╣рдгрдЬреЗрдЪ рдкреНрд░рдорд╛рдгреАрдХрд░рдгрд╛рдкреВрд░реНрд╡реА рдкрд╛рдард╡рд╛ рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рдУрд│ рдпрд╛рд╕рд╣ рд╕реБрд░реВ рд╣реЛрддреЗ SSH- рдЖрдгрд┐ рдУрд│реАрдЪреНрдпрд╛ рд╢реЗрд╡рдЯрдЪреНрдпрд╛ рд╡рд░реНрдгрд╛рд╕рд╣ 255 рд╡рд░реНрдгрд╛рдВрдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдирд╛рд╣реА. рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рд╕рд░реНрд╡ рдХрд╛рд╣реА рдорд╛рдирдХрд╛рдВрдиреБрд╕рд╛рд░ рдЖрд╣реЗ.

рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкреЕрдХреЗрдЯ рдкрд╛рдард╡рддрд╛рдирд╛ 10 рд╕реЗрдХрдВрдж рдерд╛рдВрдмрддреЛ. рд╣реЗ рдХреНрд▓рд╛рдпрдВрдЯрд▓рд╛ рдХрд╛рд▓рдмрд╛рд╣реНрдп рд╣реЛрдгреНрдпрд╛рдкрд╛рд╕реВрди рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддреЗ, рддреНрдпрд╛рдореБрд│реЗ рдХреНрд▓рд╛рдпрдВрдЯ рдХрд╛рдпрдордЪрд╛ рдЕрдбрдХрд▓рд╛ рдЬрд╛рдИрд▓.

рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА рдбреЗрдЯрд╛ рдкрд╛рдард╡рд┐рд▓рд╛ рдЬрд╛рдд рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЕрддреНрдпрдВрдд рд╕реЛрдкрд╛ рдЖрд╣реЗ. рдпрд╛рд╕ рдХреЛрдгрддреЗрд╣реА рд╕рд┐рдлрд░ рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА рдЖрдгрд┐ рдПрдХрд╛рдзрд┐рдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪреЗ рд╕рдорд░реНрдерди рдХрд░рддреЗ.

рд▓реЗрдЦрдХрд╛рдиреЗ рд╣реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛ рдХреА рдпреБрдЯрд┐рд▓рд┐рдЯреА рдХрдореАрддрдХрдореА рд╕рдВрд╕рд╛рдзрдиреЗ рд╡рд╛рдкрд░рддреЗ рдЖрдгрд┐ рдорд╢реАрдирд╡рд░ рдкреВрд░реНрдгрдкрдгреЗ рд▓рдХреНрд╖ рди рджреЗрддрд╛ рдХрд╛рд░реНрдп рдХрд░рддреЗ. рдЖрдзреБрдирд┐рдХ рдЕрдБрдЯреАрд╡реНрд╣рд╛рдпрд░рд╕ рдЖрдгрд┐ рдЗрддрд░ "рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓реА" рдЪреНрдпрд╛ рд╡рд┐рдкрд░реАрдд, рддреЗ рдЖрдкрд▓рд╛ рд╕рдВрдЧрдгрдХ рдзреАрдорд╛ рдХрд░реВ рдирдпреЗ. рдереЛрдбреНрдпрд╛ рдЕрдзрд┐рдХ рдзреВрд░реНрдд рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░рдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдореБрд│реЗ рддреНрдпрд╛рдиреЗ рд░рд╣рджрд╛рд░реА рдЖрдгрд┐ рдореЗрдорд░реА рд╡рд╛рдкрд░ рджреЛрдиреНрд╣реА рдХрдореА рдХрд░рдгреНрдпрд╛рдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ. рдЬрд░ рдпрд╛рдиреЗ рдирд╡реАрди рдХрдиреЗрдХреНрд╢рдирд╡рд░ рдПрдХ рд╡реЗрдЧрд│реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реБрд░реВ рдХреЗрд▓реА, рддрд░ рд╕рдВрднрд╛рд╡реНрдп рд╣рд▓реНрд▓реЗрдЦреЛрд░ рдорд╢реАрдирд╡рд░реАрд▓ рд╕рдВрд╕рд╛рдзрдиреЗ рд╕рдВрдкрд╡рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХрд╛рдзрд┐рдХ рдХрдиреЗрдХреНрд╢рди рдЙрдШрдбреВрди DDoS рд╣рд▓реНрд▓рд╛ рдХрд░реВ рд╢рдХрддрд╛рдд. рдкреНрд░рддрд┐ рдХрдиреЗрдХреНрд╢рди рдПрдХ рдереНрд░реЗрдб рджреЗрдЦреАрд▓ рд╕рд░реНрд╡реЛрддреНрддрдо рдкрд░реНрдпрд╛рдп рдирд╛рд╣реА, рдХрд╛рд░рдг рдХрд░реНрдирд▓ рдереНрд░реЗрдбреНрд╕ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдВрд╕рд╛рдзрдиреЗ рд╡рд╛рдпрд╛ рдШрд╛рд▓рд╡реЗрд▓.

рдореНрд╣рдгреВрдирдЪ рдХреНрд░рд┐рд╕ рд╡реЗрд▓рдиреНрд╕рдиреЗ рдПрдВрдбрд▓реЗрд╢рд╕рд╛рдареА рд╕рд░реНрд╡рд╛рдд рд╣рд▓рдХрд╛ рдкрд░реНрдпрд╛рдп рдирд┐рд╡рдбрд▓рд╛: рд╕рд┐рдВрдЧрд▓-рдереНрд░реЗрдбреЗрдб рд╕рд░реНрд╡реНрд╣рд░ poll(2), рдЬреЗрдереЗ рдЯреНрд░реЕрдкрдордзреАрд▓ рдХреНрд▓рд╛рдпрдВрдЯ рдЕрдХреНрд╖рд░рд╢рдГ рдХреЛрдгрддреАрд╣реА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд╕рд╛рдзрдиреЗ рд╡рд╛рдкрд░рдд рдирд╛рд╣реАрдд, рдХрд░реНрдирд▓рдордзреАрд▓ рд╕реЙрдХреЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЛрдЬрдд рдирд╛рд╣реАрдд рдЖрдгрд┐ рдПрдВрдбрд▓реЗрд╢рдордзреНрдпреЗ рдЯреНрд░реЕрдХрд┐рдВрдЧрд╕рд╛рдареА рдЖрдгрдЦреА 78 рдмрд╛рдЗрдЯреНрд╕. рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╛рдпрдВрдЯрд╕рд╛рдареА рд░рд┐рд╕реАрд╡реНрд╣ рдЖрдгрд┐ рд╕реЗрдВрдб рдмрдлрд░ рд╡рд╛рдЯреВ рдирдпреЗ рдореНрд╣рдгреВрди, рдПрдВрдбрд▓реЗрд╢ рдбрд╛рдпрд░реЗрдХреНрдЯ рдНрдХреНрд╕реЗрд╕ рд╕реЙрдХреЗрдЯ рдЙрдШрдбрддреЛ рдЖрдгрд┐ рдЬрд╡рд│рдЬрд╡рд│ рд╕рдВрдкреВрд░реНрдг рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо TCP/IP рд╕реНрдЯреЕрдХрд▓рд╛ рдорд╛рдЧреЗ рдЯрд╛рдХреВрди TCP рдкреЕрдХреЗрдЯреНрд╕рдЪреЗ рдереЗрдЯ рднрд╛рд╖рд╛рдВрддрд░ рдХрд░рддреЛ. рдЗрдирдХрдорд┐рдВрдЧ рдмрдлрд░рдЪреА рдЕрдЬрд┐рдмрд╛рдд рдЧрд░рдЬ рдирд╛рд╣реА, рдХрд╛рд░рдг рдЖрдореНрд╣рд╛рд▓рд╛ рдпреЗрдгрд╛рд░реНтАНрдпрд╛ рдбреЗрдЯрд╛рдордзреНрдпреЗ рд░рд╕ рдирд╛рд╣реА.

рд▓реЗрдЦрдХ рдореНрд╣рдгрддреЛ рдХреА рддреНрдпрд╛рдЪреНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдорд╛рдЪреНрдпрд╛ рд╡реЗрд│реА рдорд╛рд╣рд┐рдд рдирд╛рд╣реА Python рдЪреНрдпрд╛ asycio рдЖрдгрд┐ рдЗрддрд░ tarpits рдЪреНрдпрд╛ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдмрджреНрджрд▓. рддреНрдпрд╛рд▓рд╛ 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())

рдЯрд╛рд░реНрдкрд┐рдЯ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рд╕рд╛рдареА Asyncio рдЖрджрд░реНрд╢ рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╣рд╛ рд╣реБрдХ рдлрд╛рдпрд░рдлреЙрдХреНрд╕, рдХреНрд░реЛрдо рдХрд┐рдВрд╡рд╛ рдЗрддрд░ рдХреЛрдгрддрд╛рд╣реА рдХреНрд▓рд╛рдпрдВрдЯ рдЧреЛрдард╡реЗрд▓ рдЬреЛ рддреБрдордЪреНрдпрд╛ 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())

рдСрдирд▓рд╛рдЗрди рдЧреБрдВрдбрд╛рдВрдирд╛ рд╢рд┐рдХреНрд╖рд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА Tarpit рд╣реЗ рдПрдХ рдЙрддреНрддрдо рд╕рд╛рдзрди рдЖрд╣реЗ. рддреНрдпрд╛рдЙрд▓рдЯ, рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рд░реНрд╡реНрд╣рд░рдЪреНрдпрд╛ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╡рд░реНрддрдирд╛рдХрдбреЗ рддреНрдпрд╛рдВрдЪреЗ рд▓рдХреНрд╖ рд╡реЗрдзрдгреНрдпрд╛рдЪрд╛ рдХрд╛рд╣реА рдзреЛрдХрд╛ рдЖрд╣реЗ рд╣реЗ рдЦрд░реЗ рдЖрд╣реЗ. рдХреЛрдгреАрддрд░реА рдмрджрд▓рд╛ рдШреЗрдгреНрдпрд╛рдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░реВ рд╢рдХрддреЛ рдЖрдгрд┐ рддреБрдордЪреНрдпрд╛ IP рд╡рд░ рд▓рдХреНрд╖реНрдпрд┐рдд DDoS рд╣рд▓реНрд▓рд╛. рддрдерд╛рдкрд┐, рдЖрддрд╛рдкрд░реНрдпрдВрдд рдЕрд╢реА рдХреЛрдгрддреАрд╣реА рдкреНрд░рдХрд░рдгреЗ рдЖрдврд│рд▓реА рдирд╛рд╣реАрдд рдЖрдгрд┐ рдЯрд╛рд░реНрдкрд┐рдЯ рдЙрддреНрдХреГрд╖реНрдЯ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд.

рд╣рдм:
рдкрд╛рдпрдерди, рдорд╛рд╣рд┐рддреА рд╕реБрд░рдХреНрд╖рд╛, рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░, рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рди

рдЯреЕрдЧреНрдЬ:
SSH, Endless, tarpit, tarpit, trap, asycio
рдЗрдирдХрдорд┐рдВрдЧ рдПрд╕рдПрд╕рдПрдЪ рдХрдиреЗрдХреНрд╢рдирд╕рд╛рдареА рдЯреНрд░реЕрдк (рдЯрд╛рд░реНрдкрд┐рдЯ).

рдЗрдВрдЯрд░рдиреЗрдЯ рд╣реЗ рдЕрддреНрдпрдВрдд рдкреНрд░рддрд┐рдХреВрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдЖрд╣реЗ рд╣реЗ рдЧреБрдкрд┐рдд рдирд╛рд╣реА. рдЖрдкрдг рд╕рд░реНрд╡реНрд╣рд░ рд╡рд╛рдврд╡рддрд╛рдЪ, рддреНрдпрд╛рд╡рд░ рддреНрд╡рд░рд┐рдд рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рд╣рд▓реНрд▓реЗ рдЖрдгрд┐ рдПрдХрд╛рдзрд┐рдХ рд╕реНрдХреЕрди рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде рд╕реБрд░рдХреНрд╖рд╛ рд░рдХреНрд╖рдХрд╛рдВрдХрдбреВрди рд╣рдиреАрдкреЙрдЯ рдпрд╛ рдХрдЪрд▒реНрдпрд╛рдЪреНрдпрд╛ рд╡рд╛рд╣рддреБрдХреАрдЪреЗ рдкреНрд░рдорд╛рдг рдХрд┐рддреА рдЕрд╕реЗрд▓ рдпрд╛рдЪрд╛ рдЕрдВрджрд╛рдЬ рддреБрдореНрд╣реА рд▓рд╛рд╡реВ рд╢рдХрддрд╛. рдЦрд░рдВ рддрд░, рд╕рд░рд╛рд╕рд░реА рд╕рд░реНрд╡реНрд╣рд░рд╡рд░, 99% рд░рд╣рджрд╛рд░реА рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдЕрд╕реВ рд╢рдХрддреЗ.

рдЯрд╛рд░реНрдкрд┐рдЯ рдПрдХ рдЯреНрд░реЕрдк рдкреЛрд░реНрдЯ рдЖрд╣реЗ рдЬреНрдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ рдЗрдирдХрдорд┐рдВрдЧ рдХрдиреЗрдХреНрд╢рди рдХрдореА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рдЬрд░ рддреГрддреАрдп-рдкрдХреНрд╖ рдкреНрд░рдгрд╛рд▓реА рдпрд╛ рдкреЛрд░реНрдЯрд╢реА рдХрдиреЗрдХреНрдЯ рд╣реЛрдд рдЕрд╕реЗрд▓, рддрд░ рддреБрдореНрд╣реА рддреНрд╡рд░рд┐рдд рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░реВ рд╢рдХрдгрд╛рд░ рдирд╛рд╣реА. рддрд┐рд▓рд╛ рддрд┐рдЪреА рд╕рд┐рд╕реНрдЯреАрдо рд╕рдВрд╕рд╛рдзрдиреЗ рд╡рд╛рдпрд╛ рдШрд╛рд▓рд╡рд╛рд╡реА рд▓рд╛рдЧрддреАрд▓ рдЖрдгрд┐ рдХрдиреЗрдХреНрд╢рди рдХрд╛рд▓рдмрд╛рд╣реНрдп рд╣реЛрдИрдкрд░реНрдпрдВрдд рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рд╛рд╡реА рд▓рд╛рдЧреЗрд▓ рдХрд┐рдВрд╡рд╛ рд╡реНрдпрдХреНрддрд┐рдЪрд▓рд┐рддрдкрдгреЗ рд╕рдорд╛рдкреНрдд рдХрд░рд╛рд╡реА рд▓рд╛рдЧреЗрд▓.

рдмрд░реНрдпрд╛рдЪрджрд╛, tarpits рд╕рдВрд░рдХреНрд╖рдгрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддрд╛рдд. рд╕рдВрдЧрдгрдХрд╛рддреАрд▓ рд╡рд░реНрдореНрд╕рдкрд╛рд╕реВрди рд╕рдВрд░рдХреНрд╖рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣реЗ рддрдВрддреНрд░ рдкреНрд░рдердо рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рдд рдЖрд▓реЗ. рдЖрдгрд┐ рдЖрддрд╛ рд╣реЗ рд╕реНрдкреЕрдорд░ рдЖрдгрд┐ рд╕рдВрд╢реЛрдзрдХрд╛рдВрдЪреЗ рдЬреАрд╡рди рдЙрдзреНрд╡рд╕реНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рдЬреЗ рд╕рд▓рдЧ рд╕рд░реНрд╡ IP рдкрддреНрддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╡рд┐рд╕реНрддреГрдд рд╕реНрдХреЕрдирд┐рдВрдЧрдордзреНрдпреЗ рдЧреБрдВрддрд▓реЗрд▓реЗ рдЖрд╣реЗрдд (рд╣реЕрдмреНрд░реЗрд╡рд░реАрд▓ рдЙрджрд╛рд╣рд░рдгреЗ: рдСрд╕реНрдЯреНрд░рд┐рдпрд╛, рдпреБрдХреНрд░реЗрди).

рдЦреНрд░рд┐рд╕ рд╡реЗрд▓рдиреНрд╕ рдирд╛рд╡рд╛рдЪреНрдпрд╛ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХрд╛рдВрдкреИрдХреА рдПрдХ рд╣рд╛ рдЕрдкрдорд╛рди рдкрд╛рд╣реВрди рдХрдВрдЯрд╛рд│рд▓рд╛ - рдЖрдгрд┐ рддреНрдпрд╛рдиреЗ рдПрдХ рдЫреЛрдЯрд╛рд╕рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рд╣рд┐рд▓рд╛ рдЕрдВрддрд╣реАрди, SSH рд╕рд╛рдареА рдПрдХ рдЯрд╛рд░реНрдкрд┐рдЯ рдЬреЗ рдЗрдирдХрдорд┐рдВрдЧ рдХрдиреЗрдХреНрд╢рди рдХрдореА рдХрд░рддреЗ. рдкреНрд░реЛрдЧреНрд░рд╛рдо рдПрдХ рдкреЛрд░реНрдЯ рдЙрдШрдбрддреЛ (рдЪрд╛рдЪрдгреАрд╕рд╛рдареА рдбреАрдлреЙрд▓реНрдЯ рдкреЛрд░реНрдЯ 2222 рдЖрд╣реЗ) рдЖрдгрд┐ рдПрд╕рдПрд╕рдПрдЪ рд╕рд░реНрд╡реНрд╣рд░ рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рднрд╛рд╕рд╡рддреЛ, рдкрд░рдВрддреБ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рддреЛ рдпреЗрдИрдкрд░реНрдпрдВрдд рдпреЗрдгрд╛рд░реНрдпрд╛ рдХреНрд▓рд╛рдпрдВрдЯрд╢реА рдЕрдВрддрд╣реАрди рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЛ. рдХреНрд▓рд╛рдпрдВрдЯ рдмрдВрдж рд╣реЛрдИрдкрд░реНрдпрдВрдд рд╣реЗ рдЕрдиреЗрдХ рджрд┐рд╡рд╕ рдХрд┐рдВрд╡рд╛ рддреНрдпрд╛рд╣реВрди рдЕрдзрд┐рдХ рдХрд╛рд│ рдЪрд╛рд▓реВ рд░рд╛рд╣реВ рд╢рдХрддреЗ.

рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЪреА рд╕реНрдерд╛рдкрдирд╛:

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

рдпреЛрдЧреНрдпрд░рд┐рддреНрдпрд╛ рдЕрдВрдорд▓рд╛рдд рдЖрдгрд▓реЗрд▓реЗ рдЯрд╛рд░реНрдкрд┐рдЯ рдЖрдХреНрд░рдордгрдХрд░реНрддреНрдпрд╛рдХрдбреВрди рддреБрдордЪреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рд╕рдВрд╕рд╛рдзрдиреЗ рдШреЗрдИрд▓. рдкрдг рддреЛ рд╕рдВрд╕рд╛рдзрдирд╛рдВрдЪрд╛рд╣реА рдореБрджреНрджрд╛ рдирд╛рд╣реА. рд▓реЗрдЦрдХ рддреЛ рд▓рд┐рд╣рд┐рддреЛрдХреА рдХрд╛рд░реНрдпрдХреНрд░рдо рд╡реНрдпрд╕рдирд╛рдзреАрди рдЖрд╣реЗ. рд╕рдзреНрдпрд╛ рдпрд╛рдд реирен рдХреНрд▓рд╛рдпрдВрдЯ рдЕрдбрдХрд▓реЗ рдЖрд╣реЗрдд, рддреНрдпрд╛рдкреИрдХреА рдХрд╛рд╣реА рдЖрдард╡рдбреНрдпрд╛рдВрдкрд╛рд╕реВрди рдЬреЛрдбрд▓реЗрд▓реЗ рдЖрд╣реЗрдд. рдХреНрд░рд┐рдпрд╛рдХрд▓рд╛рдкрд╛рдЪреНрдпрд╛ рд╢рд┐рдЦрд░рд╛рд╡рд░, 27 рдХреНрд▓рд╛рдпрдВрдЯ 1378 рддрд╛рд╕ рдЕрдбрдХрд▓реЗ рд╣реЛрддреЗ!

рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдореЛрдбрдордзреНрдпреЗ, рдПрдВрдбрд▓реЗрд╢ рд╕рд░реНрд╡реНрд╣рд░рд▓рд╛ рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдкреЛрд░реНрдЯ 22 рд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдЬреЗрдереЗ рдЧреБрдВрдб рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдареЛрдард╛рд╡рддрд╛рдд. рдорд╛рдирдХ рд╕реБрд░рдХреНрд╖рд╛ рд╢рд┐рдлрд╛рд░рд╢реА рдиреЗрд╣рдореА SSH рд▓рд╛ рд╡реЗрдЧрд│реНрдпрд╛ рдкреЛрд░реНрдЯрд╡рд░ рд╣рд▓рд╡рдгреНрдпрд╛рдЪрд╛ рд╕рд▓реНрд▓рд╛ рджреЗрддрд╛рдд, рдЬреНрдпрд╛рдореБрд│реЗ рд▓реЙрдЧрдЪрд╛ рдЖрдХрд╛рд░ рддреНрд╡рд░рд┐рдд рдХреНрд░рдорд╛рдиреЗ рдХрдореА рд╣реЛрддреЛ.

рдЦреНрд░рд┐рд╕ рд╡реЗрд▓рдиреНрд╕ рдореНрд╣рдгрддрд╛рдд рдХреА рддреНрдпрд╛рдЪрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рддрдкрд╢реАрд▓рд╛рдЪреНрдпрд╛ рдПрдХрд╛ рдкрд░рд┐рдЪреНрдЫреЗрджрд╛рдЪрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЛ рдЖрд░рдПрдлрд╕реА 4253 SSH рдкреНрд░реЛрдЯреЛрдХреЙрд▓рд▓рд╛. TCP рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдЭрд╛рд▓реНрдпрд╛рдирдВрддрд░ рд▓рдЧреЗрдЪ, рдкрд░рдВрддреБ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА, рджреЛрдиреНрд╣реА рдкрдХреНрд╖рд╛рдВрдиреА рдПрдХ рдУрд│рдЦ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рдард╡рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЖрдгрд┐ рдПрдХ рдЯреАрдк рджреЗрдЦреАрд▓ рдЖрд╣реЗ: "рд╡реНрд╣рд░реНрдЬрди рдкрдВрдХреНрддреА рдкрд╛рдард╡рдгреНрдпрд╛рдкреВрд░реНрд╡реА рд╕рд░реНрд╡реНрд╣рд░ рдбреЗрдЯрд╛рдЪреНрдпрд╛ рдЗрддрд░ рдкрдВрдХреНрддреА рдкрд╛рдард╡реВ рд╢рдХрддреЛ". рдЖрдгрд┐ рдорд░реНрдпрд╛рджрд╛ рдирд╛рд╣реА рдпрд╛ рдбреЗрдЯрд╛рдЪреНрдпрд╛ рд╡реНрд╣реЙрд▓реНрдпреВрдорд╡рд░, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдлрдХреНрдд рдкреНрд░рддреНрдпреЗрдХ рдУрд│реАрдиреЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ SSH-.

рдПрдВрдбрд▓реЗрд╢ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдиреЗрдордХреЗ рд╣реЗрдЪ рдХрд░рддреЛ: рддреЗ рдкрд╛рдард╡рддреЗ рдЕрдВрддрд╣реАрди рдпрд╛рджреГрдЪреНрдЫрд┐рдХрдкрдгреЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдбреЗрдЯрд╛рдЪрд╛ рдкреНрд░рд╡рд╛рд╣, рдЬреЗ RFC 4253 рдЪреЗ рдкрд╛рд▓рди рдХрд░рддрд╛рдд, рдореНрд╣рдгрдЬреЗрдЪ рдкреНрд░рдорд╛рдгреАрдХрд░рдгрд╛рдкреВрд░реНрд╡реА рдкрд╛рдард╡рд╛ рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рдУрд│ рдпрд╛рд╕рд╣ рд╕реБрд░реВ рд╣реЛрддреЗ SSH- рдЖрдгрд┐ рдУрд│реАрдЪреНрдпрд╛ рд╢реЗрд╡рдЯрдЪреНрдпрд╛ рд╡рд░реНрдгрд╛рд╕рд╣ 255 рд╡рд░реНрдгрд╛рдВрдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдирд╛рд╣реА. рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рд╕рд░реНрд╡ рдХрд╛рд╣реА рдорд╛рдирдХрд╛рдВрдиреБрд╕рд╛рд░ рдЖрд╣реЗ.

рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкреЕрдХреЗрдЯ рдкрд╛рдард╡рддрд╛рдирд╛ 10 рд╕реЗрдХрдВрдж рдерд╛рдВрдмрддреЛ. рд╣реЗ рдХреНрд▓рд╛рдпрдВрдЯрд▓рд╛ рдХрд╛рд▓рдмрд╛рд╣реНрдп рд╣реЛрдгреНрдпрд╛рдкрд╛рд╕реВрди рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддреЗ, рддреНрдпрд╛рдореБрд│реЗ рдХреНрд▓рд╛рдпрдВрдЯ рдХрд╛рдпрдордЪрд╛ рдЕрдбрдХрд▓рд╛ рдЬрд╛рдИрд▓.

рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА рдбреЗрдЯрд╛ рдкрд╛рдард╡рд┐рд▓рд╛ рдЬрд╛рдд рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЕрддреНрдпрдВрдд рд╕реЛрдкрд╛ рдЖрд╣реЗ. рдпрд╛рд╕ рдХреЛрдгрддреЗрд╣реА рд╕рд┐рдлрд░ рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА рдЖрдгрд┐ рдПрдХрд╛рдзрд┐рдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪреЗ рд╕рдорд░реНрдерди рдХрд░рддреЗ.

рд▓реЗрдЦрдХрд╛рдиреЗ рд╣реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛ рдХреА рдпреБрдЯрд┐рд▓рд┐рдЯреА рдХрдореАрддрдХрдореА рд╕рдВрд╕рд╛рдзрдиреЗ рд╡рд╛рдкрд░рддреЗ рдЖрдгрд┐ рдорд╢реАрдирд╡рд░ рдкреВрд░реНрдгрдкрдгреЗ рд▓рдХреНрд╖ рди рджреЗрддрд╛ рдХрд╛рд░реНрдп рдХрд░рддреЗ. рдЖрдзреБрдирд┐рдХ рдЕрдБрдЯреАрд╡реНрд╣рд╛рдпрд░рд╕ рдЖрдгрд┐ рдЗрддрд░ "рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓реА" рдЪреНрдпрд╛ рд╡рд┐рдкрд░реАрдд, рддреЗ рдЖрдкрд▓рд╛ рд╕рдВрдЧрдгрдХ рдзреАрдорд╛ рдХрд░реВ рдирдпреЗ. рдереЛрдбреНрдпрд╛ рдЕрдзрд┐рдХ рдзреВрд░реНрдд рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░рдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдореБрд│реЗ рддреНрдпрд╛рдиреЗ рд░рд╣рджрд╛рд░реА рдЖрдгрд┐ рдореЗрдорд░реА рд╡рд╛рдкрд░ рджреЛрдиреНрд╣реА рдХрдореА рдХрд░рдгреНрдпрд╛рдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ. рдЬрд░ рдпрд╛рдиреЗ рдирд╡реАрди рдХрдиреЗрдХреНрд╢рдирд╡рд░ рдПрдХ рд╡реЗрдЧрд│реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реБрд░реВ рдХреЗрд▓реА, рддрд░ рд╕рдВрднрд╛рд╡реНрдп рд╣рд▓реНрд▓реЗрдЦреЛрд░ рдорд╢реАрдирд╡рд░реАрд▓ рд╕рдВрд╕рд╛рдзрдиреЗ рд╕рдВрдкрд╡рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХрд╛рдзрд┐рдХ рдХрдиреЗрдХреНрд╢рди рдЙрдШрдбреВрди DDoS рд╣рд▓реНрд▓рд╛ рдХрд░реВ рд╢рдХрддрд╛рдд. рдкреНрд░рддрд┐ рдХрдиреЗрдХреНрд╢рди рдПрдХ рдереНрд░реЗрдб рджреЗрдЦреАрд▓ рд╕рд░реНрд╡реЛрддреНрддрдо рдкрд░реНрдпрд╛рдп рдирд╛рд╣реА, рдХрд╛рд░рдг рдХрд░реНрдирд▓ рдереНрд░реЗрдбреНрд╕ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдВрд╕рд╛рдзрдиреЗ рд╡рд╛рдпрд╛ рдШрд╛рд▓рд╡реЗрд▓.

рдореНрд╣рдгреВрдирдЪ рдХреНрд░рд┐рд╕ рд╡реЗрд▓рдиреНрд╕рдиреЗ рдПрдВрдбрд▓реЗрд╢рд╕рд╛рдареА рд╕рд░реНрд╡рд╛рдд рд╣рд▓рдХрд╛ рдкрд░реНрдпрд╛рдп рдирд┐рд╡рдбрд▓рд╛: рд╕рд┐рдВрдЧрд▓-рдереНрд░реЗрдбреЗрдб рд╕рд░реНрд╡реНрд╣рд░ poll(2), рдЬреЗрдереЗ рдЯреНрд░реЕрдкрдордзреАрд▓ рдХреНрд▓рд╛рдпрдВрдЯ рдЕрдХреНрд╖рд░рд╢рдГ рдХреЛрдгрддреАрд╣реА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд╕рд╛рдзрдиреЗ рд╡рд╛рдкрд░рдд рдирд╛рд╣реАрдд, рдХрд░реНрдирд▓рдордзреАрд▓ рд╕реЙрдХреЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЛрдЬрдд рдирд╛рд╣реАрдд рдЖрдгрд┐ рдПрдВрдбрд▓реЗрд╢рдордзреНрдпреЗ рдЯреНрд░реЕрдХрд┐рдВрдЧрд╕рд╛рдареА рдЖрдгрдЦреА 78 рдмрд╛рдЗрдЯреНрд╕. рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╛рдпрдВрдЯрд╕рд╛рдареА рд░рд┐рд╕реАрд╡реНрд╣ рдЖрдгрд┐ рд╕реЗрдВрдб рдмрдлрд░ рд╡рд╛рдЯреВ рдирдпреЗ рдореНрд╣рдгреВрди, рдПрдВрдбрд▓реЗрд╢ рдбрд╛рдпрд░реЗрдХреНрдЯ рдНрдХреНрд╕реЗрд╕ рд╕реЙрдХреЗрдЯ рдЙрдШрдбрддреЛ рдЖрдгрд┐ рдЬрд╡рд│рдЬрд╡рд│ рд╕рдВрдкреВрд░реНрдг рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо TCP/IP рд╕реНрдЯреЕрдХрд▓рд╛ рдорд╛рдЧреЗ рдЯрд╛рдХреВрди TCP рдкреЕрдХреЗрдЯреНрд╕рдЪреЗ рдереЗрдЯ рднрд╛рд╖рд╛рдВрддрд░ рдХрд░рддреЛ. рдЗрдирдХрдорд┐рдВрдЧ рдмрдлрд░рдЪреА рдЕрдЬрд┐рдмрд╛рдд рдЧрд░рдЬ рдирд╛рд╣реА, рдХрд╛рд░рдг рдЖрдореНрд╣рд╛рд▓рд╛ рдпреЗрдгрд╛рд░реНтАНрдпрд╛ рдбреЗрдЯрд╛рдордзреНрдпреЗ рд░рд╕ рдирд╛рд╣реА.

рд▓реЗрдЦрдХ рдореНрд╣рдгрддреЛ рдХреА рддреНрдпрд╛рдЪреНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдорд╛рдЪреНрдпрд╛ рд╡реЗрд│реА рдорд╛рд╣рд┐рдд рдирд╛рд╣реА Python рдЪреНрдпрд╛ asycio рдЖрдгрд┐ рдЗрддрд░ tarpits рдЪреНрдпрд╛ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдмрджреНрджрд▓. рддреНрдпрд╛рд▓рд╛ 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())

рдЯрд╛рд░реНрдкрд┐рдЯ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рд╕рд╛рдареА Asyncio рдЖрджрд░реНрд╢ рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╣рд╛ рд╣реБрдХ рдлрд╛рдпрд░рдлреЙрдХреНрд╕, рдХреНрд░реЛрдо рдХрд┐рдВрд╡рд╛ рдЗрддрд░ рдХреЛрдгрддрд╛рд╣реА рдХреНрд▓рд╛рдпрдВрдЯ рдЧреЛрдард╡реЗрд▓ рдЬреЛ рддреБрдордЪреНрдпрд╛ 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())

рдСрдирд▓рд╛рдЗрди рдЧреБрдВрдбрд╛рдВрдирд╛ рд╢рд┐рдХреНрд╖рд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА Tarpit рд╣реЗ рдПрдХ рдЙрддреНрддрдо рд╕рд╛рдзрди рдЖрд╣реЗ. рддреНрдпрд╛рдЙрд▓рдЯ, рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рд░реНрд╡реНрд╣рд░рдЪреНрдпрд╛ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╡рд░реНрддрдирд╛рдХрдбреЗ рддреНрдпрд╛рдВрдЪреЗ рд▓рдХреНрд╖ рд╡реЗрдзрдгреНрдпрд╛рдЪрд╛ рдХрд╛рд╣реА рдзреЛрдХрд╛ рдЖрд╣реЗ рд╣реЗ рдЦрд░реЗ рдЖрд╣реЗ. рдХреЛрдгреАрддрд░реА рдмрджрд▓рд╛ рдШреЗрдгреНрдпрд╛рдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░реВ рд╢рдХрддреЛ рдЖрдгрд┐ рддреБрдордЪреНрдпрд╛ IP рд╡рд░ рд▓рдХреНрд╖реНрдпрд┐рдд DDoS рд╣рд▓реНрд▓рд╛. рддрдерд╛рдкрд┐, рдЖрддрд╛рдкрд░реНрдпрдВрдд рдЕрд╢реА рдХреЛрдгрддреАрд╣реА рдкреНрд░рдХрд░рдгреЗ рдЖрдврд│рд▓реА рдирд╛рд╣реАрдд рдЖрдгрд┐ рдЯрд╛рд░реНрдкрд┐рдЯ рдЙрддреНрдХреГрд╖реНрдЯ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд.

рдЗрдирдХрдорд┐рдВрдЧ рдПрд╕рдПрд╕рдПрдЪ рдХрдиреЗрдХреНрд╢рдирд╕рд╛рдареА рдЯреНрд░реЕрдк (рдЯрд╛рд░реНрдкрд┐рдЯ).

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛