Notice: Constant EZSQL_VERSION already defined in /var/www/private_1/data/www/linuxguru.ru/wp-content/db.php on line 43

Notice: Constant object already defined in /var/www/private_1/data/www/linuxguru.ru/wp-content/db.php on line 48

Notice: Constant OBJECT_K already defined in /var/www/private_1/data/www/linuxguru.ru/wp-content/db.php on line 53

Notice: Constant ARRAY_A already defined in /var/www/private_1/data/www/linuxguru.ru/wp-content/db.php on line 58

Notice: Constant ARRAY_N already defined in /var/www/private_1/data/www/linuxguru.ru/wp-content/db.php on line 63

Deprecated: Assigning the return value of new by reference is deprecated in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/db-cache-reloaded-fix/db-module.php on line 214

Notice: Constant EZSQL_VERSION already defined in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/db-cache-reloaded-fix/db-module.php on line 43

Notice: Constant object already defined in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/db-cache-reloaded-fix/db-module.php on line 48

Notice: Constant OBJECT_K already defined in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/db-cache-reloaded-fix/db-module.php on line 53

Notice: Constant ARRAY_A already defined in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/db-cache-reloaded-fix/db-module.php on line 58

Notice: Constant ARRAY_N already defined in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/db-cache-reloaded-fix/db-module.php on line 63

Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /var/www/private_1/data/www/linuxguru.ru/wp-includes/wp-db.php on line 1633

Deprecated: Assigning the return value of new by reference is deprecated in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/db-cache-reloaded-fix/db-cache-reloaded.php on line 91

Notice: add_option was called with an argument that is deprecated since version 2.3.0 with no alternative available. in /var/www/private_1/data/www/linuxguru.ru/wp-includes/functions.php on line 4039

Notice: add_option was called with an argument that is deprecated since version 2.3.0 with no alternative available. in /var/www/private_1/data/www/linuxguru.ru/wp-includes/functions.php on line 4039

Deprecated: Assigning the return value of new by reference is deprecated in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/smilies-themer/smilies-themer.php on line 80

Deprecated: Assigning the return value of new by reference is deprecated in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/smilies-themer/smilies-themer.php on line 213

Notice: get_settings is deprecated since version 2.1.0! Use get_option() instead. in /var/www/private_1/data/www/linuxguru.ru/wp-includes/functions.php on line 3844

Notice: get_settings is deprecated since version 2.1.0! Use get_option() instead. in /var/www/private_1/data/www/linuxguru.ru/wp-includes/functions.php on line 3844

Notice: add_custom_background is deprecated since version 3.4.0! Use add_theme_support( 'custom-background', $args ) instead. in /var/www/private_1/data/www/linuxguru.ru/wp-includes/functions.php on line 3844

Notice: The called constructor method for WP_Widget in Suffusion_Search is deprecated since version 4.3.0! Use
__construct()
instead. in /var/www/private_1/data/www/linuxguru.ru/wp-includes/functions.php on line 3907

Notice: The called constructor method for WP_Widget in Suffusion_Meta is deprecated since version 4.3.0! Use
__construct()
instead. in /var/www/private_1/data/www/linuxguru.ru/wp-includes/functions.php on line 3907

Notice: The called constructor method for WP_Widget in Suffusion_Follow_Twitter is deprecated since version 4.3.0! Use
__construct()
instead. in /var/www/private_1/data/www/linuxguru.ru/wp-includes/functions.php on line 3907

Notice: The called constructor method for WP_Widget in Suffusion_Category_Posts is deprecated since version 4.3.0! Use
__construct()
instead. in /var/www/private_1/data/www/linuxguru.ru/wp-includes/functions.php on line 3907

Notice: The called constructor method for WP_Widget in Suffusion_Featured_Posts is deprecated since version 4.3.0! Use
__construct()
instead. in /var/www/private_1/data/www/linuxguru.ru/wp-includes/functions.php on line 3907

Notice: The called constructor method for WP_Widget in Suffusion_Google_Translator is deprecated since version 4.3.0! Use
__construct()
instead. in /var/www/private_1/data/www/linuxguru.ru/wp-includes/functions.php on line 3907

Notice: The called constructor method for WP_Widget in Suffusion_Subscription is deprecated since version 4.3.0! Use
__construct()
instead. in /var/www/private_1/data/www/linuxguru.ru/wp-includes/functions.php on line 3907

Notice: The called constructor method for WP_Widget in Suffusion_Flickr is deprecated since version 4.3.0! Use
__construct()
instead. in /var/www/private_1/data/www/linuxguru.ru/wp-includes/functions.php on line 3907

Notice: The called constructor method for WP_Widget in Suffusion_Query_Users is deprecated since version 4.3.0! Use
__construct()
instead. in /var/www/private_1/data/www/linuxguru.ru/wp-includes/functions.php on line 3907

Notice: The called constructor method for WP_Widget in Suffusion_Child_Pages is deprecated since version 4.3.0! Use
__construct()
instead. in /var/www/private_1/data/www/linuxguru.ru/wp-includes/functions.php on line 3907

Notice: load_plugin_textdomain was called with an argument that is deprecated since version 2.7.0 with no alternative available. in /var/www/private_1/data/www/linuxguru.ru/wp-includes/functions.php on line 4039

Notice: get_settings is deprecated since version 2.1.0! Use get_option() instead. in /var/www/private_1/data/www/linuxguru.ru/wp-includes/functions.php on line 3844
Защита от DDoS в nginx от тупых ботов с кривым referer
Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971

Notice: Array to string conversion in /var/www/private_1/data/www/linuxguru.ru/wp-includes/formatting.php on line 971
 

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/wp-code-highlight/wp-code-highlight.php on line 68

Открою этот раздел не большой заметкой о том как можно победить тупых ddos ботов с кривым referer на уровне nginx, самое вкусное это real-time тоесть в режиме реального времени по сигнатуре.

В рунете гуляет очень много ботнетов с ботами которые делают тупой запрос в корень сайта с рандомным referer — набор произвольных букв и цифр, он вообще не разу не валидный, давайте посмотрим пример, вырезку из access.log:

я не знаю каким местом автор бота думал когда разрабатывал это чудо  XD

но он откровенно говоря — мудак!

не сложно догадаться о том как это дело порезать в том же nginx, валидный referer это:

1. пустой

2. начинающийся с http

на основе этой информации можно соорудить такую конструкцию в nginx, например

Что мы делаем?

1. проверяем наличие referer

2. проверяем валидность referer —  http:// или  https://

В случае если referer проставлен и не попадает под нашу регулярку то отдаем клиенту 403, там уже по желанию (можно 444 но если банить ботов не будете то у вас разрастется количество подключений к серверу т.к 444 вы разрываете соединение и бот каждый раз будет устанавливать новое)

Результат

Таким образом боты режутся в реал тайме на фронтенде с точностью 100% ))) Защита от DDoS в nginx!

 

  15 комментариев в “Защита от DDoS в nginx от тупых ботов с кривым referer”


  1. Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/wp-code-highlight/wp-code-highlight.php on line 68

    Автор, я испытываю суровую атаку пару ночей с таким вот ботами и твоя статья смахивает на панацею.

    Но как именно добавить в nginx ваши надстройки? Можно подробнее? Если в nginx.conf запихнуть, то он даже не стартует тогда и вываливается с ошибкой. Даже глупый сапорт хостера не смог мне помочь)

     

  2. Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/wp-code-highlight/wp-code-highlight.php on line 68

    Все получилось, просто запихнул этот код почти в самое начало)
    И все же это гениально! Боты теперь просто бьются об nginx и получают свою 499 ошибку и апач даже не страдает. Также поставил mod_vasive, но он не особо себя показал. А ведь даже сервер положили, что SSH с трудом работал, а теперь летает все… чудно.

     

  3. Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/wp-code-highlight/wp-code-highlight.php on line 68

    Vlad 444 лучше отдавать

     

    • Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/wp-code-highlight/wp-code-highlight.php on line 68

      Если банить то да, если не банить то не стоит так делать у вас сокетов полу открытых будет огромное количество, из за того что вы закрываете соединение каждый раз а боты будут устанавливать новое с каждым request

       

  4. Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/wp-code-highlight/wp-code-highlight.php on line 68

    Есть проблема с данной конструкцией, у некоторых сайтов перестают работать вложенные категории, а у некоторых выдает ошибку о цикличности редиректов.
    Куда копать пока даже не знаю.

     

    • Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/wp-code-highlight/wp-code-highlight.php on line 68

      нужно разбираться, может вы что то не так настроили.

       

  5. Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/wp-code-highlight/wp-code-highlight.php on line 68

    if ($http_referer !~* (^http://.*|^https://.*) ){

    if ($http_referer !~* ^https?://.* ){ так короче

     

    • Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/wp-code-highlight/wp-code-highlight.php on line 68

      так еще короче

      if ($http_referer !~* ^($|http:|https:) ){return 444;}

      так еще лучше

      if ($http_referer !~* ^($|https?://) ){return 444;}

       

  6. Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/wp-code-highlight/wp-code-highlight.php on line 68

    что куда впихивать так и не понял, а вот такой лог от ддос атаки, от апача лога вижу часто.
    Объясните — что куда вводить, буду признателен.

     

    • Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/wp-code-highlight/wp-code-highlight.php on line 68

      в виртуальный хост разумеется в nginx

      секция

      server {
      server_name site;
      ……..
      location / {
      сюда вставляйте
      }
      }

       

  7. Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/wp-code-highlight/wp-code-highlight.php on line 68

    Публикация действительно клёвая, но… как и в верхнем комменте я нифига не понял как вставить код в этот nginx. Через .htaccess ставил запрет на этот чертов бот SputnikBot, но толку нихрена нет. Все равно создает нагрузку и систематически шатается про сайту. Если не трудно поясните как и куда запихнуть сие чудо. Или это нужно наседать на хостера? Я что-то полазил и не смог найти в панели управления nginx.

     

  8. Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/wp-code-highlight/wp-code-highlight.php on line 68

    Здравствуйте, подскажите как отдавать ботам страницу не чаще раза в 5секунд, если чаще отдавать код 503

    # Блокируем некоторые типы ботов

    if ($http_user_agent ~* msnbot|scrapbot) {

    return 503;

    }

    И чем такое чревато?

     

  9. Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/wp-code-highlight/wp-code-highlight.php on line 68

    При удачной настройке iptables nginx попросту блокирует атакующие адреса и они не нагружают системные ресурсы сервера, ну а для решения серьезных проблем нужная хорошая аппаратная защита. Могу порекомендовать ребят из Simplyway. отлично справляются как с ддос атаками

     

  10. Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/wp-code-highlight/wp-code-highlight.php on line 68

    Автор красава! Всё отличн работает, пиши ещо! ^_^

     

  11. Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/wp-code-highlight/wp-code-highlight.php on line 68

    При удачной настройке iptables nginx попросту блокирует атакующие адреса и они не нагружают системные ресурсы сервера, ну а для решения серьезных проблем нужная хорошая аппаратная защита. Могу порекомендовать ребят из Simplyway. отлично справляются как с ддос атаками

     

 Оставить комментарий

(обязательно)

(обязательно)

Copyright © 2012. Linuxguru.ru

Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'smilies_package' does not have a method 'credit_author' in /var/www/private_1/data/www/linuxguru.ru/wp-includes/class-wp-hook.php on line 298

Notice: Undefined index: rel in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/lightbox-plus/classes/actions.class.php on line 113

Notice: Undefined index: loop in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/lightbox-plus/classes/actions.class.php on line 121

Notice: Undefined index: loop in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/lightbox-plus/classes/actions.class.php on line 121

Notice: Undefined index: scrolling in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/lightbox-plus/classes/actions.class.php on line 129

Notice: Undefined index: scrolling in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/lightbox-plus/classes/actions.class.php on line 129

Notice: Undefined index: esc_key in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/lightbox-plus/classes/actions.class.php on line 130

Notice: Undefined index: esc_key in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/lightbox-plus/classes/actions.class.php on line 130

Notice: Undefined index: arrow_key in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/lightbox-plus/classes/actions.class.php on line 131

Notice: Undefined index: arrow_key in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/lightbox-plus/classes/actions.class.php on line 131

Notice: Undefined index: top in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/lightbox-plus/classes/actions.class.php on line 132

Notice: Undefined index: top in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/lightbox-plus/classes/actions.class.php on line 132

Notice: Undefined index: right in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/lightbox-plus/classes/actions.class.php on line 133

Notice: Undefined index: right in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/lightbox-plus/classes/actions.class.php on line 133

Notice: Undefined index: bottom in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/lightbox-plus/classes/actions.class.php on line 134

Notice: Undefined index: bottom in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/lightbox-plus/classes/actions.class.php on line 134

Notice: Undefined index: left in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/lightbox-plus/classes/actions.class.php on line 135

Notice: Undefined index: left in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/lightbox-plus/classes/actions.class.php on line 135

Notice: Undefined index: fixed in /var/www/private_1/data/www/linuxguru.ru/wp-content/plugins/lightbox-plus/classes/actions.class.php on line 136