рдЖрдиреЗ рд╡рд╛рд▓реЗ рдПрд╕рдПрд╕рдПрдЪ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЯреНрд░реИрдк (рдЯрд╛рд░рдкрд┐рдЯ)ред

рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХ рдмрд╣реБрдд рд╣реА рдкреНрд░рддрд┐рдХреВрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИред рдЬреИрд╕реЗ рд╣реА рдЖрдк рдПрдХ рд╕рд░реНрд╡рд░ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ, рдЙрд╕ рдкрд░ рддреБрд░рдВрдд рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╣рдорд▓реЗ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдХрдИ рдмрд╛рд░ рд╕реНрдХреИрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд╛ рдЧрд╛рд░реНрдбреЛрдВ рд╕реЗ рд╣рдиреАрдкреЛрдЯ рдЖрдк рдЗрд╕ рдХрдЪрд░рд╛ рдпрд╛рддрд╛рдпрд╛рдд рдХреЗ рдкреИрдорд╛рдиреЗ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдФрд╕рдд рд╕рд░реНрд╡рд░ рдкрд░ 99% рдЯреНрд░реИрдлрд╝рд┐рдХ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

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

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

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

рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреА рд╕реНрдерд╛рдкрдирд╛:

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

рдареАрдХ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдЯрд╛рд░рдкрд┐рдЯ рдЖрдкрдХреЗ рдореБрдХрд╛рдмрд▓реЗ рд╣рдорд▓рд╛рд╡рд░ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрд╕рд╛рдзрди рд▓реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдмрд╛рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рднреА рдирд╣реАрдВ рд╣реИ. рд▓реЗрдЦрдХ ├Р ┬┐├Р ┬╕ ├С├Р╬╝├С,рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╡реНрдпрд╕рдиреА рд╣реИ. рдлрд┐рд▓рд╣рд╛рд▓ рдЗрд╕рдХреЗ 27 рдЧреНрд░рд╛рд╣рдХ рдлрдВрд╕реЗ рд╣реБрдП рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╣рдлреНрддреЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рдЪрд░рдо рдкрд░, 1378 рдЧреНрд░рд╛рд╣рдХ 20 рдШрдВрдЯреЛрдВ рддрдХ рдлрдВрд╕реЗ рд░рд╣реЗ!

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

рдХреНрд░рд┐рд╕ рд╡реЗрд▓рдиреНрд╕ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЙрдирдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдПрдХ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХрд╛ рдлрд╛рдпрджрд╛ рдЙрдард╛рддрд╛ рд╣реИ RFC 4253 SSH рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд▓рд┐рдП. рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, рд▓реЗрдХрд┐рди рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рджреЛрдиреЛрдВ рдкрдХреНрд╖реЛрдВ рдХреЛ рдПрдХ рдкрд╣рдЪрд╛рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рднреЗрдЬрдиреА рд╣реЛрдЧреАред рдФрд░ рдПрдХ рдиреЛрдЯ рднреА рд╣реИ: "рд╕рдВрд╕реНрдХрд░рдг рдкрдВрдХреНрддрд┐ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рд░реНрд╡рд░ рдбреЗрдЯрд╛ рдХреА рдЕрдиреНрдп рдкрдВрдХреНрддрд┐рдпрд╛рдБ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ"ред рдФрд░ рдХреЛрдИ рд╕реАрдорд╛ рдирд╣реАрдВ рдЗрд╕ рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдкрд░, рдЖрдкрдХреЛ рдмрд╕ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ SSH-.

рдПрдВрдбрд▓реЗрд╕реЗрд╢ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрд┐рд▓реНрдХреБрд▓ рдпрд╣реА рдХрд░рддрд╛ рд╣реИ: рдпрд╣ рднреЗрдЬрддрд╛ рд╣реИ рдЕрдирдВрдд рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдЙрддреНрдкрдиреНрди рдбреЗрдЯрд╛ рдХреА рдзрд╛рд░рд╛, рдЬреЛ рдЖрд░рдПрдлрд╕реА 4253 рдХрд╛ рдЕрдиреБрдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ, рдпрд╛рдиреА рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕реЗ рдкрд╣рд▓реЗ рднреЗрдЬрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ SSH- рдФрд░ рдкрдВрдХреНрддрд┐ рдХреЗ рдЕрдВрдд рд╡рд╛рд▓реЗ рд╡рд░реНрдг рд╕рд╣рд┐рдд 255 рд╡рд░реНрдгреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдм рдХреБрдЫ рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реЛрддрд╛ рд╣реИред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкреИрдХреЗрдЯ рднреЗрдЬрдиреЗ рдХреЗ рдмреАрдЪ 10 рд╕реЗрдХрдВрдб рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЯрд╛рдЗрдо рдЖрдЙрдЯ рд╣реЛрдиреЗ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдлрдВрд╕ рдЬрд╛рдПрдЧрд╛ред

рдЪреВрдВрдХрд┐ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реИред рдЗрд╕реЗ рдХрд┐рд╕реА рд╕рд┐рдлрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣ рдХрдИ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

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

рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдХреНрд░рд┐рд╕ рд╡реЗрд▓рдиреНрд╕ рдиреЗ рдПрдВрдбрд▓реЗрд╕реЗрд╢ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╣рд▓реНрдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛: рдПрдХ рд╕рд┐рдВрдЧрд▓-рдереНрд░реЗрдбреЗрдб рд╕рд░реНрд╡рд░ poll(2), рдЬрд╣рд╛рдВ рдЬрд╛рд▓ рдореЗрдВ рдЧреНрд░рд╛рд╣рдХ рд╡рд╕реНрддреБрддрдГ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдХрд░реНрдиреЗрд▓ рдореЗрдВ рд╕реЙрдХреЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдПрдВрдбрд▓реЗрд╕ рдореЗрдВ рдЯреНрд░реИрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп 78 рдмрд╛рдЗрдЯреНрд╕ рдХреА рдЧрд┐рдирддреА рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд░рд┐рд╕реАрд╡ рдФрд░ рд╕реЗрдВрдб рдмрдлрд╝рд░реНрд╕ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдВрдбрд▓реЗрд╢ рдПрдХ рдбрд╛рдпрд░реЗрдХреНрдЯ рдПрдХреНрд╕реЗрд╕ рд╕реЙрдХреЗрдЯ рдЦреЛрд▓рддрд╛ рд╣реИ рдФрд░ рд▓рдЧрднрдЧ рдкреВрд░реЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдЯреАрд╕реАрдкреА/рдЖрдИрдкреА рд╕реНрдЯреИрдХ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реБрдП рд╕реАрдзреЗ рдЯреАрд╕реАрдкреА рдкреИрдХреЗрдЯ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИред рдЖрдиреЗ рд╡рд╛рд▓реЗ рдмрдлрд╝рд░ рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдореЗрдВ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд╣реИред

рдРрд╕рд╛ рд▓реЗрдЦрдХ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рдордп рдХрд╣рддреЗ рд╣реИрдВ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдкрд╛рдпрдерди рдХреЗ рдПрд╕рд┐рд╕рд┐рдпреЛ рдФрд░ рдЕрдиреНрдп рдЯрд╛рд░рдкрд┐рдЯ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдпрджрд┐ рд╡рд╣ рдПрд╕рд┐рд╕рд┐рдпреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛, рддреЛ рд╡рд╣ рдЕрдкрдиреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рдкрд╛рдпрдерди рдореЗрдВ рдХреЗрд╡рд▓ 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())

рдСрдирд▓рд╛рдЗрди рдмрджрдорд╛рд╢реЛрдВ рдХреЛ рджрдВрдбрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рд░рдкрд┐рдЯ рдПрдХ рдмреЗрд╣рддрд░реАрди рдЙрдкрдХрд░рдг рд╣реИред рд╕рдЪ рд╣реИ, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╕рд░реНрд╡рд░ рдХреЗ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдУрд░ рдЙрдирдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреБрдЫ рдЬреЛрдЦрд┐рдо рд╣реИред рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдмрджрд▓рд╛ рд▓реЗрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЗ рдЖрдИрдкреА рдкрд░ рд▓рдХреНрд╖рд┐рдд DDoS рд╣рдорд▓рд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрднреА рддрдХ рдРрд╕рд╛ рдХреЛрдИ рдорд╛рдорд▓рд╛ рд╕рд╛рдордиреЗ рдирд╣реАрдВ рдЖрдпрд╛ рд╣реИ, рдФрд░ рдЯрд╛рд░рдкрд┐рдЯ рдмрдврд╝рд┐рдпрд╛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

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

рдЯреИрдЧ:
рдПрд╕рдПрд╕рдПрдЪ, рдПрдВрдбрд▓реЗрд╕реЗрд╢, рдЯрд╛рд░рдкрд┐рдЯ, рдЯрд╛рд░рдкрд┐рдЯ, рдЯреНрд░реИрдк, рдПрд╕рд┐рд╕рд┐рдпреЛ
рдЖрдиреЗ рд╡рд╛рд▓реЗ рдПрд╕рдПрд╕рдПрдЪ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЯреНрд░реИрдк (рдЯрд╛рд░рдкрд┐рдЯ)ред

рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХ рдмрд╣реБрдд рд╣реА рдкреНрд░рддрд┐рдХреВрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИред рдЬреИрд╕реЗ рд╣реА рдЖрдк рдПрдХ рд╕рд░реНрд╡рд░ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ, рдЙрд╕ рдкрд░ рддреБрд░рдВрдд рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╣рдорд▓реЗ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдХрдИ рдмрд╛рд░ рд╕реНрдХреИрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд╛ рдЧрд╛рд░реНрдбреЛрдВ рд╕реЗ рд╣рдиреАрдкреЛрдЯ рдЖрдк рдЗрд╕ рдХрдЪрд░рд╛ рдпрд╛рддрд╛рдпрд╛рдд рдХреЗ рдкреИрдорд╛рдиреЗ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдФрд╕рдд рд╕рд░реНрд╡рд░ рдкрд░ 99% рдЯреНрд░реИрдлрд╝рд┐рдХ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

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

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

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

рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреА рд╕реНрдерд╛рдкрдирд╛:

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

рдареАрдХ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдЯрд╛рд░рдкрд┐рдЯ рдЖрдкрдХреЗ рдореБрдХрд╛рдмрд▓реЗ рд╣рдорд▓рд╛рд╡рд░ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрд╕рд╛рдзрди рд▓реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдмрд╛рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рднреА рдирд╣реАрдВ рд╣реИ. рд▓реЗрдЦрдХ ├Р ┬┐├Р ┬╕ ├С├Р╬╝├С,рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╡реНрдпрд╕рдиреА рд╣реИ. рдлрд┐рд▓рд╣рд╛рд▓ рдЗрд╕рдХреЗ 27 рдЧреНрд░рд╛рд╣рдХ рдлрдВрд╕реЗ рд╣реБрдП рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╣рдлреНрддреЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рдЪрд░рдо рдкрд░, 1378 рдЧреНрд░рд╛рд╣рдХ 20 рдШрдВрдЯреЛрдВ рддрдХ рдлрдВрд╕реЗ рд░рд╣реЗ!

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

рдХреНрд░рд┐рд╕ рд╡реЗрд▓рдиреНрд╕ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЙрдирдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдПрдХ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХрд╛ рдлрд╛рдпрджрд╛ рдЙрдард╛рддрд╛ рд╣реИ RFC 4253 SSH рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд▓рд┐рдП. рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, рд▓реЗрдХрд┐рди рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рджреЛрдиреЛрдВ рдкрдХреНрд╖реЛрдВ рдХреЛ рдПрдХ рдкрд╣рдЪрд╛рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рднреЗрдЬрдиреА рд╣реЛрдЧреАред рдФрд░ рдПрдХ рдиреЛрдЯ рднреА рд╣реИ: "рд╕рдВрд╕реНрдХрд░рдг рдкрдВрдХреНрддрд┐ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рд░реНрд╡рд░ рдбреЗрдЯрд╛ рдХреА рдЕрдиреНрдп рдкрдВрдХреНрддрд┐рдпрд╛рдБ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ"ред рдФрд░ рдХреЛрдИ рд╕реАрдорд╛ рдирд╣реАрдВ рдЗрд╕ рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдкрд░, рдЖрдкрдХреЛ рдмрд╕ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ SSH-.

рдПрдВрдбрд▓реЗрд╕реЗрд╢ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрд┐рд▓реНрдХреБрд▓ рдпрд╣реА рдХрд░рддрд╛ рд╣реИ: рдпрд╣ рднреЗрдЬрддрд╛ рд╣реИ рдЕрдирдВрдд рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдЙрддреНрдкрдиреНрди рдбреЗрдЯрд╛ рдХреА рдзрд╛рд░рд╛, рдЬреЛ рдЖрд░рдПрдлрд╕реА 4253 рдХрд╛ рдЕрдиреБрдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ, рдпрд╛рдиреА рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕реЗ рдкрд╣рд▓реЗ рднреЗрдЬрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ SSH- рдФрд░ рдкрдВрдХреНрддрд┐ рдХреЗ рдЕрдВрдд рд╡рд╛рд▓реЗ рд╡рд░реНрдг рд╕рд╣рд┐рдд 255 рд╡рд░реНрдгреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдм рдХреБрдЫ рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реЛрддрд╛ рд╣реИред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкреИрдХреЗрдЯ рднреЗрдЬрдиреЗ рдХреЗ рдмреАрдЪ 10 рд╕реЗрдХрдВрдб рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЯрд╛рдЗрдо рдЖрдЙрдЯ рд╣реЛрдиреЗ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдлрдВрд╕ рдЬрд╛рдПрдЧрд╛ред

рдЪреВрдВрдХрд┐ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реИред рдЗрд╕реЗ рдХрд┐рд╕реА рд╕рд┐рдлрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣ рдХрдИ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

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

рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдХреНрд░рд┐рд╕ рд╡реЗрд▓рдиреНрд╕ рдиреЗ рдПрдВрдбрд▓реЗрд╕реЗрд╢ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╣рд▓реНрдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛: рдПрдХ рд╕рд┐рдВрдЧрд▓-рдереНрд░реЗрдбреЗрдб рд╕рд░реНрд╡рд░ poll(2), рдЬрд╣рд╛рдВ рдЬрд╛рд▓ рдореЗрдВ рдЧреНрд░рд╛рд╣рдХ рд╡рд╕реНрддреБрддрдГ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдХрд░реНрдиреЗрд▓ рдореЗрдВ рд╕реЙрдХреЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдПрдВрдбрд▓реЗрд╕ рдореЗрдВ рдЯреНрд░реИрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп 78 рдмрд╛рдЗрдЯреНрд╕ рдХреА рдЧрд┐рдирддреА рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд░рд┐рд╕реАрд╡ рдФрд░ рд╕реЗрдВрдб рдмрдлрд╝рд░реНрд╕ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдВрдбрд▓реЗрд╢ рдПрдХ рдбрд╛рдпрд░реЗрдХреНрдЯ рдПрдХреНрд╕реЗрд╕ рд╕реЙрдХреЗрдЯ рдЦреЛрд▓рддрд╛ рд╣реИ рдФрд░ рд▓рдЧрднрдЧ рдкреВрд░реЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдЯреАрд╕реАрдкреА/рдЖрдИрдкреА рд╕реНрдЯреИрдХ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реБрдП рд╕реАрдзреЗ рдЯреАрд╕реАрдкреА рдкреИрдХреЗрдЯ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИред рдЖрдиреЗ рд╡рд╛рд▓реЗ рдмрдлрд╝рд░ рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдореЗрдВ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд╣реИред

рдРрд╕рд╛ рд▓реЗрдЦрдХ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рдордп рдХрд╣рддреЗ рд╣реИрдВ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдкрд╛рдпрдерди рдХреЗ рдПрд╕рд┐рд╕рд┐рдпреЛ рдФрд░ рдЕрдиреНрдп рдЯрд╛рд░рдкрд┐рдЯ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдпрджрд┐ рд╡рд╣ рдПрд╕рд┐рд╕рд┐рдпреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛, рддреЛ рд╡рд╣ рдЕрдкрдиреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рдкрд╛рдпрдерди рдореЗрдВ рдХреЗрд╡рд▓ 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())

рдСрдирд▓рд╛рдЗрди рдмрджрдорд╛рд╢реЛрдВ рдХреЛ рджрдВрдбрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рд░рдкрд┐рдЯ рдПрдХ рдмреЗрд╣рддрд░реАрди рдЙрдкрдХрд░рдг рд╣реИред рд╕рдЪ рд╣реИ, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╕рд░реНрд╡рд░ рдХреЗ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдУрд░ рдЙрдирдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреБрдЫ рдЬреЛрдЦрд┐рдо рд╣реИред рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдмрджрд▓рд╛ рд▓реЗрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЗ рдЖрдИрдкреА рдкрд░ рд▓рдХреНрд╖рд┐рдд DDoS рд╣рдорд▓рд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрднреА рддрдХ рдРрд╕рд╛ рдХреЛрдИ рдорд╛рдорд▓рд╛ рд╕рд╛рдордиреЗ рдирд╣реАрдВ рдЖрдпрд╛ рд╣реИ, рдФрд░ рдЯрд╛рд░рдкрд┐рдЯ рдмрдврд╝рд┐рдпрд╛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рдЖрдиреЗ рд╡рд╛рд▓реЗ рдПрд╕рдПрд╕рдПрдЪ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЯреНрд░реИрдк (рдЯрд╛рд░рдкрд┐рдЯ)ред

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ