рдЖрдЧрдорди SSH рдЬрдбрд╛рдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЬрд╛рд▓ (tarpit)

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

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

рдкреНрд░рд╛рдпрдЬрд╕реЛ, рдЯрд╛рд░реНрдкрд┐рдЯрд╣рд░реВ рд╕реБрд░рдХреНрд╖рд╛рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рдпреЛ рдкреНрд░рд╡рд┐рдзрд┐ рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ рдХрдореНрдкреНрдпреБрдЯрд░ рдХреАрд░рд╛рд╣рд░реВрдмрд╛рдЯ рдЬреЛрдЧрд╛рдЙрди рд╡рд┐рдХрд╕рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рд░ рдЕрдм рдпреЛ рд╕реНрдкреНрдпрд╛рдорд░рд╣рд░реВ рд░ рдЕрдиреБрд╕рдиреНрдзрд╛рдирдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдЬреАрд╡рди рдмрд░реНрдмрд╛рдж рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рдЬреЛ рдкрдЩреНрдХреНрддрд┐рдорд╛ рд╕рдмреИ рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛рд╣рд░реВрдХреЛ рд╡реНрдпрд╛рдкрдХ рд╕реНрдХреНрдпрд╛рдирд┐рдЩрдорд╛ рд╕рдВрд▓рдЧреНрди рдЫрдиреН (рд╣рдмреНрд░реЗрдорд╛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ: Austria, рдпреБрдХреНрд░реЗрди).

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

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

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

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

рдЕрдкрд░реЗрдЯрд┐рдЩ рдореЛрдбрдорд╛, Endless рд╕рд░реНрднрд░рд▓рд╛рдИ рд╕рд╛рдорд╛рдиреНрдп рдкреЛрд░реНрдЯ 22 рдорд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдЬрд╣рд╛рдБ рдЧреБрдгреНрдбрд╛рд╣рд░реВрд▓реЗ рд╕рд╛рдореВрд╣рд┐рдХ рд░реВрдкрдорд╛ рджрд╕реНрддрдХ рджрд┐рдиреНрдЫрдиреНред рдорд╛рдирдХ рд╕реБрд░рдХреНрд╖рд╛ рд╕рд┐рдлрд╛рд░рд┐рд╕рд╣рд░реВрд▓реЗ рд╕рдзреИрдВ SSH рд▓рд╛рдИ рдлрд░рдХ рдкреЛрд░реНрдЯрдорд╛ рд╕рд╛рд░реНрди рд╕рд▓реНрд▓рд╛рд╣ рджрд┐рдиреНрдЫ, рдЬрд╕рд▓реЗ рддреБрд░реБрдиреНрддреИ рдкрд░рд┐рдорд╛рдгрдХреЛ рдЕрд░реНрдбрд░рджреНрд╡рд╛рд░рд╛ рд▓рдЧрд╣рд░реВрдХреЛ рдЖрдХрд╛рд░ рдШрдЯрд╛рдЙрдБрдЫред

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

рдпреЛ рд╡рд╛рд╕реНрддрд╡рдорд╛ Endless рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЧрд░реНрдЫ: рдпреЛ рдкрдард╛рдЙрдБрдЫ рдЕрдиреНрддрд╣реАрди рдЕрдирд┐рдпрдорд┐рдд рд░реВрдкрдорд╛ рдЙрддреНрдкрдиреНрди рдбрд╛рдЯрд╛ рдХреЛ рдкреНрд░рд╡рд╛рд╣, рдЬрд╕рд▓реЗ RFC 4253 рдХреЛ рдкрд╛рд▓рдирд╛ рдЧрд░реНрджрдЫ, рдЕрд░реНрдерд╛рддреН, рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЕрдШрд┐ рдкрдард╛рдЙрдиреБрд╣реЛрд╕реН, рд░ рдкреНрд░рддреНрдпреЗрдХ рд░реЗрдЦрд╛ рдмрд╛рдЯ рд╕реБрд░реБ рд╣реБрдиреНрдЫ SSH- рд░ рд░реЗрдЦрд╛ рд╕рдорд╛рдкреНрдд рд╣реБрдиреЗ рдХреНрдпрд╛рд░реЗрдХреНрдЯрд░ рд╕рд╣рд┐рдд 255 рд╡рд░реНрдгрд╣рд░реВ рднрдиреНрджрд╛ рдмрдвреА рд╣реБрдБрджреИрдиред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рд╕рдмреИ рдХреБрд░рд╛ рдорд╛рдирдХ рдЕрдиреБрд╕рд╛рд░ рдЫред

рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, рдХрд╛рд░реНрдпрдХреНрд░рдорд▓реЗ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВ рдкрдард╛рдЙрдиреЗ рдмреАрдЪрдорд╛ 10 рд╕реЗрдХреЗрдиреНрдб рдкрд░реНрдЦрдиреНрдЫред рдпрд╕рд▓реЗ рдХреНрд▓рд╛рдЗрдиреНрдЯрд▓рд╛рдИ рдЯрд╛рдЗрдо рдЖрдЙрдЯ рд╣реБрдирдмрд╛рдЯ рд░реЛрдХреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рдХреНрд▓рд╛рдЗрдиреНрдЯ рд╕рдзреИрдВрднрд░рд┐ рдлрдБрд╕реНрдиреЗрдЫред

рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рд▓рд╛рдЧреВ рдЧрд░реНрдиреБ рдЕрдШрд┐ рдбрд╛рдЯрд╛ рдкрдард╛рдЗрдПрдХреЛ рд╣реБрдирд╛рд▓реЗ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдЕрддреНрдпрдиреНрдд рд╕рд░рд▓ рдЫред рдпрд╕рд▓реЗ рдХреБрдиреИ рдкрдирд┐ рд╕рд╛рдЗрдлрд░рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджреИрди рд░ рдзреЗрд░реИ рдкреНрд░реЛрдЯреЛрдХрд▓рд╣рд░реВрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫред

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

рдпрд╕реИрд▓реЗ рдХреНрд░рд┐рд╕ рд╡реЗрд▓реЛрдиреНрд╕рд▓реЗ Endlessh рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдмреИрднрдиреНрджрд╛ рд╣рд▓реНрдХрд╛ рд╡рд┐рдХрд▓реНрдк рд░реЛрдЬреЗ: рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рд╕рд░реНрднрд░ poll(2), рдЬрд╣рд╛рдБ рдЬрд╛рд▓рдорд╛ рд░рд╣реЗрдХрд╛ рдЧреНрд░рд╛рд╣рдХрд╣рд░реВрд▓реЗ рдХрд░реНрдиреЗрд▓рдорд╛ рд╕рдХреЗрдЯ рд╡рд╕реНрддреБрдХреЛ рдЧрдгрдирд╛ рдирдЧрд░реНрдиреЗ рд░ Endless рдорд╛ рдЯреНрд░реНрдпрд╛рдХрд┐рдЩрдХрд╛ рд▓рд╛рдЧрд┐ рдЕрд░реНрдХреЛ ренрео рдмрд╛рдЗрдЯрд╣рд░реВ рд╡рд╕реНрддреБрддрдГ рдХреБрдиреИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрд░реЛрддрд╣рд░реВ рдЙрдкрднреЛрдЧ рдЧрд░реНрджреИрдирдиреНред рдкреНрд░рддреНрдпреЗрдХ рдЧреНрд░рд╛рд╣рдХрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рд╛рдкреНрдд рд░ рдкрдард╛рдЙрдиреЗ рдмрдлрд░рд╣рд░реВ рдЖрд╡рдВрдЯрд┐рдд рдЧрд░реНрдирдмрд╛рдЯ рдмрдЪреНрди, Endlessh рд▓реЗ рдкреНрд░рддреНрдпрдХреНрд╖ рдкрд╣реБрдБрдЪ рд╕рдХреЗрдЯ рдЦреЛрд▓реНрдЫ рд░ рд▓рдЧрднрдЧ рд╕рдореНрдкреВрд░реНрдг рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдо 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 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())

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

рдХреЗрдиреНрджреНрд░рд╣рд░реВ:
рдкрд╛рдЗрдерди, рд╕реВрдЪрдирд╛ рд╕реБрд░рдХреНрд╖рд╛, рд╕рдлреНрдЯрд╡реЗрдпрд░, рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рд╢рд╛рд╕рди

рдЯреИрдЧ:
SSH, Endless, tarpit, tarpit, рдЬрд╛рд▓, asycio
рдЖрдЧрдорди SSH рдЬрдбрд╛рдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЬрд╛рд▓ (tarpit)

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

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

рдкреНрд░рд╛рдпрдЬрд╕реЛ, рдЯрд╛рд░реНрдкрд┐рдЯрд╣рд░реВ рд╕реБрд░рдХреНрд╖рд╛рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рдпреЛ рдкреНрд░рд╡рд┐рдзрд┐ рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ рдХрдореНрдкреНрдпреБрдЯрд░ рдХреАрд░рд╛рд╣рд░реВрдмрд╛рдЯ рдЬреЛрдЧрд╛рдЙрди рд╡рд┐рдХрд╕рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рд░ рдЕрдм рдпреЛ рд╕реНрдкреНрдпрд╛рдорд░рд╣рд░реВ рд░ рдЕрдиреБрд╕рдиреНрдзрд╛рдирдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдЬреАрд╡рди рдмрд░реНрдмрд╛рдж рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рдЬреЛ рдкрдЩреНрдХреНрддрд┐рдорд╛ рд╕рдмреИ рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛рд╣рд░реВрдХреЛ рд╡реНрдпрд╛рдкрдХ рд╕реНрдХреНрдпрд╛рдирд┐рдЩрдорд╛ рд╕рдВрд▓рдЧреНрди рдЫрдиреН (рд╣рдмреНрд░реЗрдорд╛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ: Austria, рдпреБрдХреНрд░реЗрди).

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

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

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

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

рдЕрдкрд░реЗрдЯрд┐рдЩ рдореЛрдбрдорд╛, Endless рд╕рд░реНрднрд░рд▓рд╛рдИ рд╕рд╛рдорд╛рдиреНрдп рдкреЛрд░реНрдЯ 22 рдорд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдЬрд╣рд╛рдБ рдЧреБрдгреНрдбрд╛рд╣рд░реВрд▓реЗ рд╕рд╛рдореВрд╣рд┐рдХ рд░реВрдкрдорд╛ рджрд╕реНрддрдХ рджрд┐рдиреНрдЫрдиреНред рдорд╛рдирдХ рд╕реБрд░рдХреНрд╖рд╛ рд╕рд┐рдлрд╛рд░рд┐рд╕рд╣рд░реВрд▓реЗ рд╕рдзреИрдВ SSH рд▓рд╛рдИ рдлрд░рдХ рдкреЛрд░реНрдЯрдорд╛ рд╕рд╛рд░реНрди рд╕рд▓реНрд▓рд╛рд╣ рджрд┐рдиреНрдЫ, рдЬрд╕рд▓реЗ рддреБрд░реБрдиреНрддреИ рдкрд░рд┐рдорд╛рдгрдХреЛ рдЕрд░реНрдбрд░рджреНрд╡рд╛рд░рд╛ рд▓рдЧрд╣рд░реВрдХреЛ рдЖрдХрд╛рд░ рдШрдЯрд╛рдЙрдБрдЫред

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

рдпреЛ рд╡рд╛рд╕реНрддрд╡рдорд╛ Endless рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЧрд░реНрдЫ: рдпреЛ рдкрдард╛рдЙрдБрдЫ рдЕрдиреНрддрд╣реАрди рдЕрдирд┐рдпрдорд┐рдд рд░реВрдкрдорд╛ рдЙрддреНрдкрдиреНрди рдбрд╛рдЯрд╛ рдХреЛ рдкреНрд░рд╡рд╛рд╣, рдЬрд╕рд▓реЗ RFC 4253 рдХреЛ рдкрд╛рд▓рдирд╛ рдЧрд░реНрджрдЫ, рдЕрд░реНрдерд╛рддреН, рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЕрдШрд┐ рдкрдард╛рдЙрдиреБрд╣реЛрд╕реН, рд░ рдкреНрд░рддреНрдпреЗрдХ рд░реЗрдЦрд╛ рдмрд╛рдЯ рд╕реБрд░реБ рд╣реБрдиреНрдЫ SSH- рд░ рд░реЗрдЦрд╛ рд╕рдорд╛рдкреНрдд рд╣реБрдиреЗ рдХреНрдпрд╛рд░реЗрдХреНрдЯрд░ рд╕рд╣рд┐рдд 255 рд╡рд░реНрдгрд╣рд░реВ рднрдиреНрджрд╛ рдмрдвреА рд╣реБрдБрджреИрдиред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рд╕рдмреИ рдХреБрд░рд╛ рдорд╛рдирдХ рдЕрдиреБрд╕рд╛рд░ рдЫред

рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, рдХрд╛рд░реНрдпрдХреНрд░рдорд▓реЗ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВ рдкрдард╛рдЙрдиреЗ рдмреАрдЪрдорд╛ 10 рд╕реЗрдХреЗрдиреНрдб рдкрд░реНрдЦрдиреНрдЫред рдпрд╕рд▓реЗ рдХреНрд▓рд╛рдЗрдиреНрдЯрд▓рд╛рдИ рдЯрд╛рдЗрдо рдЖрдЙрдЯ рд╣реБрдирдмрд╛рдЯ рд░реЛрдХреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рдХреНрд▓рд╛рдЗрдиреНрдЯ рд╕рдзреИрдВрднрд░рд┐ рдлрдБрд╕реНрдиреЗрдЫред

рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рд▓рд╛рдЧреВ рдЧрд░реНрдиреБ рдЕрдШрд┐ рдбрд╛рдЯрд╛ рдкрдард╛рдЗрдПрдХреЛ рд╣реБрдирд╛рд▓реЗ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдЕрддреНрдпрдиреНрдд рд╕рд░рд▓ рдЫред рдпрд╕рд▓реЗ рдХреБрдиреИ рдкрдирд┐ рд╕рд╛рдЗрдлрд░рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджреИрди рд░ рдзреЗрд░реИ рдкреНрд░реЛрдЯреЛрдХрд▓рд╣рд░реВрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫред

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

рдпрд╕реИрд▓реЗ рдХреНрд░рд┐рд╕ рд╡реЗрд▓реЛрдиреНрд╕рд▓реЗ Endlessh рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдмреИрднрдиреНрджрд╛ рд╣рд▓реНрдХрд╛ рд╡рд┐рдХрд▓реНрдк рд░реЛрдЬреЗ: рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рд╕рд░реНрднрд░ poll(2), рдЬрд╣рд╛рдБ рдЬрд╛рд▓рдорд╛ рд░рд╣реЗрдХрд╛ рдЧреНрд░рд╛рд╣рдХрд╣рд░реВрд▓реЗ рдХрд░реНрдиреЗрд▓рдорд╛ рд╕рдХреЗрдЯ рд╡рд╕реНрддреБрдХреЛ рдЧрдгрдирд╛ рдирдЧрд░реНрдиреЗ рд░ Endless рдорд╛ рдЯреНрд░реНрдпрд╛рдХрд┐рдЩрдХрд╛ рд▓рд╛рдЧрд┐ рдЕрд░реНрдХреЛ ренрео рдмрд╛рдЗрдЯрд╣рд░реВ рд╡рд╕реНрддреБрддрдГ рдХреБрдиреИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрд░реЛрддрд╣рд░реВ рдЙрдкрднреЛрдЧ рдЧрд░реНрджреИрдирдиреНред рдкреНрд░рддреНрдпреЗрдХ рдЧреНрд░рд╛рд╣рдХрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рд╛рдкреНрдд рд░ рдкрдард╛рдЙрдиреЗ рдмрдлрд░рд╣рд░реВ рдЖрд╡рдВрдЯрд┐рдд рдЧрд░реНрдирдмрд╛рдЯ рдмрдЪреНрди, Endlessh рд▓реЗ рдкреНрд░рддреНрдпрдХреНрд╖ рдкрд╣реБрдБрдЪ рд╕рдХреЗрдЯ рдЦреЛрд▓реНрдЫ рд░ рд▓рдЧрднрдЧ рд╕рдореНрдкреВрд░реНрдг рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдо 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 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())

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

рдЖрдЧрдорди SSH рдЬрдбрд╛рдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЬрд╛рд▓ (tarpit)

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди