рд▓рд┐рдирдХреНрд╕ рдХреЗ рд╕рд╛рде vds / рд╕рдорд░реНрдкрд┐рдд рд╕рд░реНрд╡рд░ рдХреЗ рдорд╛рд▓рд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП DDoS рд╣рдорд▓реЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рдЙрдкрд▓рдмреНрдз рддрд░реАрдХреЗ

рдЫрд╡рд┐

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

рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖рд┐рдд рджрд░реНрд╢рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ VDS рдпрд╛ рд╕рдорд░реНрдкрд┐рдд рд╣реИред

рдирдЧреНрдиреЗрдХреНрд╕ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ - рдЕрдкрд╛рдЪреЗ - рдлрд╛рд╕реНрдЯрд╕реАрдЧреА / рдбрдмреНрд▓реНрдпреВрдПрд╕рдЬреАрдЖрдИред рдмрд╛рдзрд╛рдУрдВ


рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрдЧрдарди рдореЗрдВ 3 рд╕реНрддрд░ рд╣реЛрддреЗ рд╣реИрдВ: рдПрдХ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдирдЧрдиреЗрдХреНрд╕), рдЕрдкрд╛рдЪреЗ (рд╡реЗрдм тАЛтАЛрд╕рд░реНрд╡рд░) рдФрд░ рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рдлрд╛рд╕реНрдЯрд╕реАрдЬреА / wsgi / ... рдПрдкреНрд▓реАрдХреЗрд╢рдиред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдРрд╕реЗ рдХреЛрдИ рдЕрдкрд╛рдЪреЗ рдпрд╛ mod_php / mod_python рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЬрдм рдХреЛрдИ рд╕рдорд░реНрдкрд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдпрд╣ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдкрд░ рдкрддрд┐рдд рдорд╛рдорд▓реЗ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпреЛрдЬрдирд╛ рдХрд╛ рд╕рд╛рд░ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдЗрд╕рдореЗрдВ рд╕реНрддрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИред

рдПрдХ Fcgi рд╕рд░реНрд╡рд░ рдХрдИ рджрд░реНрдЬрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдорд╛рди рдХреЗрд╡рд▓ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ рддрдХ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдФрд░ рд╡реГрджреНрдзрд┐ рд╕реЗ рдЕрджрд▓рд╛-рдмрджрд▓реА рд╣реЛрдЧреАред DDoS рд╣рдорд▓реЗ рдпрд╛ рдЙрдЪреНрдЪ рдпрд╛рддрд╛рдпрд╛рдд рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрдм рд╕рднреА рдореМрдЬреВрджрд╛ fcgi рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╡реНрдпрд╕реНрдд рд╣реЛрддреА рд╣реИрдВ, Apache рдХрддрд╛рд░реЗрдВ рдирдП рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рддрдм рддрдХ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИрдВ рдЬрдм рддрдХ рдпрд╛ рддреЛ fcgi рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдореБрдХреНрдд рдирд╣реАрдВ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдХрддрд╛рд░ рдореЗрдВ рдПрдХ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╣реЛрддрд╛ рд╣реИ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ) рддреНрд░реБрдЯрд┐ 503 рд╣реЛрддреА рд╣реИ)ред

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

рдирдЧреНрдиреЗрдХреНрд╕ рдкрд░ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдЯреНрд░реИрдлрд╝рд┐рдХред рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдиреЗрдЧреНрдиреЗрдХреНрд╕ рд▓реЙрдЧреНрд╕


рд╣рдорд╛рд░реА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рддрдХрдиреАрдХ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореВрд▓реНрдп (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 1500 рдкреНрд░рддрд┐ рдорд┐рдирдЯ, рд╕рд╛рдЗрдЯ рдХреЗ рдХрд┐рддрдиреЗ рд╣рд┐рдЯ рд╡рд░реНрддрдорд╛рди рд╕рд░реНрд╡рд░ рдХреНрд╖рдорддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░ рд╕рдХрддреА рд╣реИ) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдмрд╛рд▓рддреА рд╣реИред рд╡рд╣ рд╕рдм рдХреБрдЫ рдЬреЛ рдЗрд╕ рдореВрд▓реНрдп рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛, рд╣рдо рд╢реБрд░реВ рдореЗрдВ nginx (limit_req_zone $ host рдЬрд╝реЛрди = hostreqlimit: 20m rate = 1500r / m;) рдХреЗ рд╕рд╛рде рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВрдЧреЗред
рдлрд┐рд░ рд╣рдо nginx рд▓реЙрдЧ рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗ рдФрд░ рд╡рд╣рд╛рдВ рдкрд░ рдЙрди IP рдкрддреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд╡рдзрд┐ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 5 рдорд┐рдирдЯ рдореЗрдВ 100 рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░) рдХреЗ рд▓рд┐рдП рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдП рдЧрдП рдереЗ рдФрд░ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрди IP рдкрддреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред

рд╣рдо рдПрдХ рд╣реА рдЖрдИрдкреА рдкрддреЗ рд╕реЗ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдФрд░ рдЕрдХреНрд╕рд░ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдХрдиреЗрдХреНрд╢рди рд╕реАрдорд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ (limit_req_zone $ Binary_remote_addr ...)? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдиреЗрдЯ рдкрд░ рдмреИрдареЗ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рдЧреНрд░рд╛рд╣рдХ рдЗрд╕ рд╕реАрдорд╛ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖрдПрдВрдЧреЗред рджреВрд╕рд░реЗ, рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдереНрд░реЗрд╢реЛрд▓реНрдб рдорд╛рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдЬрд╛рдХреНрд╕ рдХреЗ рд╕рд╛рде рд╕рд╛рдЗрдЯреЗрдВ рд╣реИрдВ рдФрд░ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЬреЗрдПрд╕ / рд╕реАрдПрд╕рдПрд╕ / рдЫрд╡рд┐рдпрд╛рдВ рд╣реИрдВ, рдЬреЛ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдПрдХ рдкреГрд╖реНрда рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рджрд╕рд┐рдпреЛрдВ рд╣рд┐рдЯ рд▓реЗ рд╕рдХрддреА рд╣реИрдВ, рдФрд░ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдРрд╕реА рд╕реАрдорд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рддреАрд╕рд░рд╛, рддрдерд╛рдХрдерд┐рдд "рд╕реБрд╕реНрдд" DDoS рд╣рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдмреЙрдЯ рдЗрд╕ рд╕реАрдорд╛ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдЖрдПрдВрдЧреЗ - рдХрдИ рдмреЙрдЯ рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдереЛрдбрд╝реЗ рд╕рдордп рдореЗрдВ рдХреБрдЫ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВрдЧреЗ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдо рдХреБрдЫ рднреА рдлрд╝рд┐рд▓реНрдЯрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕рд╛рдЗрдЯ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреАред

рд╣рдорд╛рд░реА рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, nginx рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓, рдЬрдм nginx рдЕрдкрд╛рдЪреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
http { limit_req_zone $host zone=hostreqlimit:20m rate=1500r/m; ... server { listen 1.2.3.4; server_name domain.ru www.domain.ru; limit_req zone=hostreqlimit burst=2500 nodelay; location / { proxy_pass http://127.0.0.1:80; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; } } } 

рдпрд╣ рдХреЙрдиреНрдлрд┐рдЧрд░ рдпрд╣ рднреА рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЕрдкрд╛рдЪреЗ рд▓реВрдкрдмреИрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ 127.0.0.1:80 рдкрд░ рд╕реБрди рд░рд╣рд╛ рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рдмрд╛рд╣рд░реА рдЖрдИрдкреА рдкрддреЗ (1.2.3.4) рдкрд░ 80 рд╡реЗрдВ рдкреЛрд░реНрдЯ рдФрд░ 12780.0.1 рдкрд░ рдкреЛрд░реНрдЯ 8080 рдкрд░ nginxред

рдирд┐рдЧреНрдиреЗрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдП рдЧрдП рд╣рд┐рдЯреНрд╕ рдХреЛ рдирдЧреНрдиреЗрдХреНрд╕ рдХреА рддреНрд░реБрдЯрд┐ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рдмрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
 2012/01/30 17:11:48 [error] 16862#0: *247484 limiting requests, excess: 2500.200 by zone "hostreqlimit", client: 92.255.185.237, server: domain.ru, request: "GET / HTTP/1.1", host: "domain.ru", referrer: "http://www.yahoo.com/" 

Error.log рд╕реЗ рд╕рднреА рдЕрд╡рд░реБрджреНрдз рдЖрдИрдкреА рдкрддреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 cat error.log | awk '/hostreqlimit/ { gsub(", ", " "); print $14}' | sort | uniq -c | sort -n 

рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдпрд╛рдж рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдмреНрд▓реЙрдХ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдиреЗ рд╣рд┐рдЯ рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рдмрд╛рдж рдкреНрд░рддрд┐ рдорд┐рдирдЯ 1,500 рдмрд╛рд░ рдХрд╛рдЙрдВрдЯ рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рд╕рднреА рдмреНрд▓реЙрдХ рдХрд┐рдП рдЧрдП рдмреЙрдЯ рдирд╣реАрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рдмреЙрдЯреНрд╕ рдХреЛ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рд╣рдо рддрд╛рд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдПрдХ рд╕рд╢рд░реНрдд рд░реЗрдЦрд╛ рдЦреАрдВрдЪрддреЗ рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░, 5-15 рдорд┐рдирдЯ рдореЗрдВ рдХрдИ рдмрд╛рд░ рдЧреБрдг рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рд╣рд░ 5 рдорд┐рдирдЯ рдореЗрдВ рдмреЙрдЯреНрд╕ рдХреА рд╕реВрдЪреА рдХреА рднрд░рдкрд╛рдИ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рдЬреЛ рдирдЧрдиреЗрдХреНрд╕ рдХреЛ 200 рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЕрд╡рд░реБрджреНрдз рдХрд░рддреЗ рд╣реИрдВ рд╡реЗ рдмреЙрдЯ рд╣реИрдВред

рдЕрдм рд╣рдо рджреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ:
  1. рд▓реЙрдЧ рд╕реЗ "рдЕрдВрддрд┐рдо 5 рдорд┐рдирдЯ" рдХреА рдЕрд╡рдзрд┐ рдХреИрд╕реЗ рдЪреБрдиреЗрдВ?
  2. рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕реЙрд░реНрдЯ рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдПрди рдмрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рдЕрд╡рд░реБрджреНрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рдкрд╣рд▓реА рд╕рдорд╕реНрдпрд╛ рдкреВрдВрдЫ -c + OFFSET рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХреА рдЧрдИ рд╣реИред рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЗрд╕ рддрдереНрдп рдкрд░ рдЙрдмрд▓рддрд╛ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рд░рдгред рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рдж, рд╣рдо рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдЗрд╕рдХреЗ рд╡рд░реНрддрдорд╛рди рдЖрдХрд╛рд░ рдХреЛ рд╕рд╣рд╛рдпрдХ рдлрд╝рд╛рдЗрд▓ (рд╕реНрдЯреЗрдЯ -c '% s' error.log> рдСрдлрд╕реЗрдЯ) рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдЧрд▓реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рджреМрд░рд╛рди рд╣рдо error.log рдХреЛ рдкрд┐рдЫрд▓реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░рд┐рд╡рд╛рдЗрдВрдб рдХрд░рддреЗ рд╣реИрдВ (рдкреВрдВрдЫ -c + $ (рдмрд┐рд▓реНрд▓реА рдСрдлрд╕реЗрдЯ))ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рд░ 5 рдорд┐рдирдЯ рдореЗрдВ рд▓реЙрдЧ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╢реБрд░реВ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдХреЗрд╡рд▓ рдЙрд╕ рд▓реЙрдЧ рдХреЗ рднрд╛рдЧ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ рдЬреЛ рдЕрдВрддрд┐рдо 5 рдорд┐рдирдЯ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред

рджреВрд╕рд░реА рдкреНрд░реЙрдмреНрд▓рдо рдПрдХ awk script рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ рд╣рд▓ рдХреА рдЬрд╛рддреА рд╣реИред рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ (THRESHOLD рддрд╛рд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рд╕рдорд╛рди рд╕реАрдорд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╕рдВрдмрдВрдзрд┐рдд рдЖрдИрдкреА рдкрддреЗ рдХреЛ рд╣рдорд▓рд╛рд╡рд░ рдмреЙрдЯ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ):
 touch offset; (test $(stat -c '%s' error.log) -lt $(cat offset) 2>/dev/null && echo 0 > offset) || echo 0 > offset; \ tail -c +$(cat offset) error.log | awk -v THRESHOLD=200 '/hostreqlimit/ { gsub(", ", " "); a[$14]++; } \ END { for (i in a) if (a[i]>THRESHOLD) printf "%s\n", i; }' ; stat -c '%s' error.log > offset 

рдпрд╣ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрдорд╛рдВрдб рдХреЗ рдЗрд╕ рд╕реЗрдЯ рдХреЛ рдЙрд╕ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдБ nginx рд╕реЗ error.log рдирд┐рд╣рд┐рдд рд╣реИ, рдЕрд░реНрдерд╛рддреН рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╣ / var / log / nginx рд╣реИред рд╣рдо рдкрд░рд┐рдгрд╛рдореА рд╕реВрдЪреА рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреЛ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрд╕ рдкрд░ рдЕрдзрд┐рдХ)ред

рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рд▓рд┐рдП рдиреЗрдЯрд╡рд░реНрдХ рдХреА рд╕реВрдЪреА рдмрдирд╛рдирд╛ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИ


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

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

рдпрджрд┐ рд╕рд╛рдЗрдЯ рдореЗрдВ рдПрдХ рд╕реНрдерд╛рдкрд┐рдд рд╕рдореБрджрд╛рдп (рдХреЛрд░) рд╣реИ, рддреЛ рд╣рдо рдкрд┐рдЫрд▓реЗ 3-4 рд╣рдлреНрддреЛрдВ рдХреЗ рд▓рд┐рдП рд╡реЗрдм рд╕рд░реНрд╡рд░ рд▓реЙрдЧ рд╕реЗ рдирд┐рдпрдорд┐рдд рдЖрдЧрдВрддреБрдХреЛрдВ рдХреЗ рдЖрдИрдкреА рдкрддреЗ рдХреА рдПрдХ рд╕реВрдЪреА рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдирдП рдЖрдЧрдВрддреБрдХ рд╣рдорд▓реЗ рдХреЗ рджреМрд░рд╛рди рд╕рд╛рдЗрдЯ рдкрд░ рдирд╣реАрдВ рдЬрд╛ рдкрд╛рдПрдВрдЧреЗ, рдкреБрд░рд╛рдиреЗ рд╕рдХреНрд░рд┐рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрднрд╡рддрдГ рдХрд┐рд╕реА рднреА рд╣рдорд▓реЗ рдХреЛ рдиреЛрдЯрд┐рд╕ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмреЙрдЯ рдирд┐рдпрдорд┐рдд рдЖрдЧрдВрддреБрдХреЛрдВ рдХреЗ рдмреАрдЪ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд┐рдзрд┐, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╣рдорд▓реЗ рдХреЛ рд░реЛрдХ рд╕рдХрддреА рд╣реИред

рдпрджрд┐ рд╕рд╛рдЗрдЯ рд╕реНрдерд╛рдиреАрдп рдорд╣рддреНрд╡ рдХреА рд╣реИ, рддреЛ рдЖрдк рд╕реНрдерд╛рдиреАрдп рдкреНрд░рджрд╛рддрд╛рдУрдВ рдФрд░ рдЦреЛрдЬ рдЗрдВрдЬрди рдиреЗрдЯрд╡рд░реНрдХ (Yandex) рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдкрд░ рд╕рднреА рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

Iptables рдХрд╛ рдкрд░рд┐рдЪрдп, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ


рд▓рд┐рдирдХреНрд╕ рдкрд░, рдлрд╝рд╛рдпрд░рд╡реЙрд▓ iptables рдкрд░ рдЪрд▓рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, iptables рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдпрд╛рддрд╛рдпрд╛рдд рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЯ рдХреЛ рдмрд╛рд╣реНрдп рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдпрд╛ рд╕рд░реНрд╡рд░ рд╕реЗ рднреЗрдЬрд╛ рдЬрд╛рдП, рдирд┐рдпрдореЛрдВ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрдЯ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдкреИрдХреЗрдЯ рдХреЗ рднрд╛рдЧреНрдп рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рд╕рд░рд▓ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд┐рдпрдо рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдкреИрдХреЗрдЯ рдХреЛ рдпрд╛ рддреЛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (ACCEPT) рдпрд╛ рдбреНрд░реЙрдк (DROP)ред рдирд┐рдпрдореЛрдВ рдХреЛ рдЬрдВрдЬреАрд░реЛрдВ рдореЗрдВ рдмрд╛рдВрдЯрд╛ рдЧрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдкреИрдХреЗрдЯ INPUT рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдБ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЯ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкреИрдХреЗрдЯ рдирд┐рдпрдо рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╢рд░реНрддреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ рдФрд░ рдпрджрд┐ рдпрд╣ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдирд┐рдпрдо рдкреИрдХреЗрдЯ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдкреИрдХреЗрдЯ рдЕрдЧрд▓реЗ рдирд┐рдпрдо рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ред рдпрджрд┐ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рдирд┐рдпрдо рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдиреАрддрд┐ рдкреИрдХреЗрдЬ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИред

рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдирд┐рдпрдо рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рд╕реЗ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рд▓рдп (рдЖрдИрдкреА рдкрддреЗ 1.2.3.4 рд╕реЗ) рдХреЗ рд▓рд┐рдП ssh рдХрдиреЗрдХреНрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдмрд╛рдХреА рд╕рднреА рдХреЗ рд▓рд┐рдП ssh рддрдХ рдкрд╣реБрдБрдЪ рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВ:
 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -s 1.2.3.4/32 -m comment --comment "our office" -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j DROP COMMIT 

рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: iptables-restore <firewall.txt, рдФрд░ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ: iptables-save> firewall.txtред

рдпреЗ рдирд┐рдпрдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ - рд╣рдо рд╕рднреА рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЦреБрд▓реЗ рд╣реИрдВ (рд╣реИрдВрдбрд╢реЗрдХ рдкрд╛рд╕)ред рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ - рд╣рдо рдЖрдИрдкреА рдкрддреЗ 1.2.3.4 рд╕реЗ рдХрд┐рд╕реА рднреА рдпрд╛рддрд╛рдпрд╛рдд рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рд▓рдп рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЗрд╡рд▓ рдкреИрдХреЗрдЯ рдЬреЛ рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рд╕рд┐рдВрдХ рдФрд░ рдПрдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреИрдХреЗрдЯ, рдЕрдиреНрдп рд╕рднреА рдкреИрдХреЗрдЯ рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВред рддреАрд╕рд░реА рдкрдВрдХреНрддрд┐ - рд╣рдо рд╕рднреА рдХреЛ рдЯреАрд╕реАрдкреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреЛрд░реНрдЯ 22 рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рд▓рдп рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рд╕реЗ ssh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ (syn, ack) рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдпрд╣рд╛рдВ рдЖрддрд╛ рд╣реИред

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

Iptables рдореЗрдВ, рдЖрдк рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЪреЗрди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЕрд░реНрде рдореЗрдВ, рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдирдИ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрдирд╛рдирд╛ рд╕рд░рд▓ рд╣реИ: iptables -N chain_nameред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рддрд╛рд░реНрдХрд┐рдХ рдмреНрд▓реЙрдХреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдбреАрдбреАрдУрдПрд╕ рдХрд╛ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рд╕рдВрд░рдЪрдирд╛


рдбреАрдбреАрдУрдПрд╕ рдХрд╛ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдЬреЛ рд╕рдВрд░рдЪрдирд╛ рд╕реБрдЭрд╛рддреЗ рд╣реИрдВ, рдЙрд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд╛рд░реНрдХрд┐рдХ рдмреНрд▓реЙрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
  1. рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдерд╛рдкрд┐рдд рдХрдиреЗрдХреНрд╢рди рдкрд░ рдпрд╛рддрд╛рдпрд╛рдд рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
  2. рд╣рдо "рд╣рдорд╛рд░реЗ" рдЖрдИрдкреА-рдкрддреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВред
  3. рд╢реНрд╡реЗрддрд╕реВрдЪреА рддрд╛рд▓рд┐рдХрд╛ рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реИред
  4. DDoS рдЯреЗрдмрд▓ рд╡рд╣ рдмреЙрдЯ рд╣реИ рдЬрд┐рд╕рдХреА рд╣рдордиреЗ рдкрд╣рдЪрд╛рди рдХреА рдереАред
  5. рдлреНрд░реЗрдВрдбреНрд╕ рдЯреЗрдмрд▓ рд░рдиреЗрдЯ рдиреЗрдЯрд╡рд░реНрдХ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдпрджрд┐ рдкреИрдХреЗрдЬ рдЗрд╕ рд╕реНрддрд░ рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ рд╣реИред
  6. рдмрд╛рдХреА рд╕рднреА рд▓реЛрдЧ -j DROP рд╣реИрдВред

Iptables рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :ddos - [0:0] :friends - [0:0] :whitelist - [0:0] -A INPUT -i lo -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -s 1.2.3.4/32 -m comment --comment "our office" -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j DROP -A INPUT -j whitelist -A INPUT -j ddos -A INPUT -j friends -A INPUT -j DROP -A whitelist -s 222.222.222.222 -j ACCEPT -A whitelist -s 111.111.111.111 -j ACCEPT -A ddos -s 4.3.2.0/24 -j DROP -A friends -s 91.201.52.0/22 -j ACCEPT COMMIT 

рдлрд┐рд░ рд╕реЗ, рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рд╣реЛрдиреЗ рдХреА рдЙрдкрдпреБрдХреНрддрддрд╛ рд╕рдВрджрд┐рдЧреНрдз рд╣реИ рдФрд░ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреЗ рдкреВрд░реНрдг рдЖрдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдпрд╣ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЛ рдЧрддрд┐ рджреЗ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдзреАрдорд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдорд┐рддреНрд░ рддрд╛рд▓рд┐рдХрд╛ рднрд░реЗрдВ:
 for net in $(curl -s http://noc.masterhost.ru/allrunet/runet); do iptables -A friends -s $net -j ACCEPT; done 

рдЗрд╕ рддрд░рд╣ рдХреЗ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдЗрд╕рдХреА рд░рд╛рдХреНрд╖рд╕реАрддрд╛ рд╣реИ: рд░рдиреЗрдЯ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рджреЛрд╕реНрддреЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд▓рдЧрднрдЧ 5000 рдирд┐рдпрдо рд╣реЛрдВрдЧреЗред рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рдФрд╕рдд DDoS рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, DDoS рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЕрдиреНрдп 1-2 рд╣рдЬрд╛рд░ рд░рд┐рдХреЙрд░реНрдб рд╣реЛрдВрдЧреЗред рдХреБрд▓ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдореЗрдВ 5-7 рд╣рдЬрд╝рд╛рд░ рд▓рд╛рдЗрдиреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреАред рдЗрд╕реА рд╕рдордп, рд╡рд┐рджреЗрд╢реА рдкреНрд░реЗрд╖рдХреЛрдВ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдкреИрдХреЗрдЯ, рдЬрд┐рдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рддреНрдпрд╛рдЧ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рднреА 5-7 рд╣рдЬрд╛рд░ рдирд┐рдпрдореЛрдВ рд╕реЗ рдЧреБрдЬрд░реЗрдВрдЧреЗ рдЬрдм рддрдХ рдХрд┐ рд╡реЗ рдЕрдВрддрд┐рдо рдПрдХ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрддреЗ: -рдПрдХ INPUT -j DROPред рдЕрдкрдиреЗ рдЖрдк рд╕реЗ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд░рд╛рд╢рд┐ рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред

Ipset - рд░рд╛рдХреНрд╖рд╕реА рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди


Ipset рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореЙрдирд╕рд╛рдЗрдб рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдЬрд╛рд░реЛрдВ рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВ рдЬреЛ рдмрддрд╛рддреА рд╣реИрдВ рдХрд┐ рдкреНрд░реЗрд╖рдХреЛрдВ рдпрд╛ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдкрддреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЯ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред Ipset рд╡рд┐рд╢реЗрд╖ рд╕реЗрдЯ (рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рд╕реЗрдЯ) рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдХрдИ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд╣реИрд╢ рдЯреЗрдмрд▓ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреБрдВрдЬреА рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдпрд╛ рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдмрд╣реБрдд рдЬрд▓реНрджреА рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЕрд░реНрде рдореЗрдВ, рдпрд╣ рдореЗрдордХрд╛рдЯреЗрдб рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдмрд╣реБрдд рддреЗрдЬ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдЗрдП DDoS рдмреЙрдЯ рдХреЗ IP рдкрддреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдмрдирд╛рдПрдБ:
 ipset -N ddos iphash 

рдпрд╣рд╛рдВ, рдЕрдВрддрд┐рдо рдкреИрд░рд╛рдореАрдЯрд░ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ: рдиреЗрдЯрд╡рд░реНрдХ рдХреА рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП nethash рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, iphash рдЖрдИрдкреА рдкрддреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рдЖрджрдореА ipset рдореЗрдВ рд╡рд┐рд╡рд░рдгред рддрджрдиреБрд╕рд╛рд░, рд╢реНрд╡реЗрддрд╕реВрдЪреА рдФрд░ рдорд┐рддреНрд░ nethash рдЯреЗрдмрд▓ рд╣реИрдВ, рдФрд░ DDoS iphash рд╣реИред
рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ ipset рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдирд┐рдпрдо (рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рд▓рд╛рдЗрдиреЗрдВ) рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
 -A INPUT -m set --match-set whitelist src -j ACCEPT -A INPUT -m set --match-set ddos src -j DROP 

рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдирдИ рдмрдирд╛рдИ рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХреБрдЫ рдЖрдИрдкреА-рдкрддрд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
 ipset -A ddos 1.2.3.4 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, ipset рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╣рдорд╛рд░рд╛ рдкреВрд░рд╛ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИ:
 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -i lo -j ACCEPT -A INPUT -s 1.2.3.4/32 -m comment --comment "our office" -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j DROP -A INPUT -m set --match-set whitelist src -j ACCEPT -A INPUT -m set --match-set ddos src -j DROP -A INPUT -m set --match-set friends src -j ACCEPT -A INPUT -j DROP COMMIT 

рд╣рдо рд╕реЗрдЯ рджреЛрд╕реНрддреЛрдВ рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВ:
 for net in $(curl -s http://noc.masterhost.ru/allrunet/runet); do ipset -A friends $net; done 

рд╣рдо рдкрд╣рд▓реЗ рджрд┐рдЦрд╛рдП рдЧрдП рдХрдорд╛рдВрдб рд╕реЗ рд╕реЗрдЯ ddos тАЛтАЛрдореЗрдВ рднрд░рддреЗ рд╣реИрдВ:
 touch offset; (test $(stat -c '%s' error.log) -lt $(cat offset) 2>/dev/null && echo 0 > offset) || echo 0 > offset; \ for ip in $(tail -c +$(cat offset) error.log | awk -v THRESHOLD=300 \ '/hostreqlimit/ { gsub(", ", " "); a[$14]++; } END { for (i in a) if (a[i]>THRESHOLD) printf "%s\n", i; }' ; \ stat -c '%s' error.log > offset); do ipset -A ddos $ip; done 

рд╣рдо TARPIT рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ


рддрд┐рд░рдкрд┐рдЯ рдирд╛рдордХ iptables рдореЙрдбреНрдпреВрд▓ рдПрдХ рддрдерд╛рдХрдерд┐рдд "рдЬрд╛рд▓" рд╣реИред рдЯрд╛рд░рдкрд┐рдЯ рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдпрд╣ рд╣реИ: рдЧреНрд░рд╛рд╣рдХ рд╣реИрдВрдбрд╢реЗрдХ (рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд) рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд┐рдВрдЯ-рдкреИрдХреЗрдЯ рднреЗрдЬрддрд╛ рд╣реИред рддрд╛рд░рдкрд┐рдЯ рдПрдХ рд╕рд┐рди / рдПрдХ рдкреИрдХреЗрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╡рд╣ рддреБрд░рдВрдд рднреВрд▓ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдХрдиреЗрдХреНрд╢рди рдирд╣реАрдВ рдЦреЛрд▓рд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рд╕рдВрд╕рд╛рдзрди рдЖрд╡рдВрдЯрд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЬрдм рдЕрдВрддрд┐рдо ACK рдкреИрдХреЗрдЯ рдмреЙрдЯ рд╕реЗ рдЖрддрд╛ рд╣реИ, рддреЛ tarpit рдореЙрдбреНрдпреВрд▓ рдПрдХ рдкреИрдХреЗрдЯ рд╡рд╛рдкрд╕ рднреЗрдЬрддрд╛ рд╣реИ рдЬреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдбреЗрдЯрд╛ рдХреЛ рд╢реВрдиреНрдп рдкрд░ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЯрд╛рд░рдкреАрдЯ рджреНрд╡рд╛рд░рд╛ рдмреЙрдЯ рдХреА рдУрд░ рд╕реЗ рдЗрд╕ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдХрд┐рд╕реА рднреА рдкреНрд░рдпрд╛рд╕ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрд▓рд╛рдЗрдВрдЯ (рдмреЙрдЯ) рдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдХрдиреЗрдХреНрд╢рди рдЦреБрд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди "рдЕрдЯрдХ рдЧрдпрд╛" (рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ 0 рдмрд╛рдЗрдЯреНрд╕ рд╣реИ) рдФрд░ рдЗрд╕ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ 12-24 рдмрдЬреЗ рддрдХ рд╣реЛрддрд╛ рд╣реИред рдорд┐рдирдЯред

рдЖрдк рдПрдХ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдореЗрдВ рдЯрд╛рд░рдкреАрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 -A INPUT -p tcp -m set --match-set ddos src -j TARPIT --tarpit -A INPUT -m set --match-set ddos src -j DROP 

Xtables-addons рдмрдирд╛рдПрдБ


рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, ipset рдФрд░ tarpit рдореЙрдбреНрдпреВрд▓ рдЖрдзреБрдирд┐рдХ рд╡рд┐рддрд░рдг рдХреЗ рдорд╛рдирдХ рд╕реЗрдЯ рд╕реЗ рдЧрд╛рдпрдм рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХрдореЛрдмреЗрд╢ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдбреЗрдмрд┐рдпрди рдФрд░ рдЙрдмрдВрдЯреВ рд╡рд┐рддрд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдмрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 apt-get install module-assistant xtables-addons-source ma ai xtables-addons 

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

рдХреЛрд░ рдЯреНрдпреВрдирд┐рдВрдЧ


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

рдЬрд┐рди рдХрд░реНрдиреЗрд▓ рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ, рдЙрдиреНрд╣реЗрдВ sysctl рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
 sysctl [-w] option 

-W рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдирдП рдорд╛рди рдХреЛ рдХреБрдЫ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдХреЛ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЧрдИ рд╣реИ:
 net.ipv4.tcp_syncookies=1 net.ipv4.ip_local_port_range = 1024 65535 net.core.netdev_max_backlog = 30000 net.ipv4.tcp_max_syn_backlog = 4096 net.core.somaxconn = 4096 net.core.rmem_default = 124928 net.core.rmem_max = 124928 net.core.wmem_max = 124928 


рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ VDS рдпрд╛ рд╕рдорд░реНрдкрд┐рдд рд╕рд░реНрд╡рд░ рдХреЗ рдорд╛рд▓рд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдХреГрдкрдпрд╛ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВред

Source: https://habr.com/ru/post/In149302/


All Articles