Назад | Перейти на главную страницу

Блокировка всех пользователей без реферера, НО одновременно разрешая Googlebot / bingbot (с .htaccess)

Из-за какой-то любительской DDOS-атаки на мой сайт мне пришлось запретить некоторый трафик с помощью .htaccess, который работал нормально.

К сожалению, он также блокирует googlebot / bingbot:

order allow, deny
deny from 54.

SetEnvIfNoCase Referer "^$" bad_user
SetEnvIfNoCase User-Agent "^Wget" bad_user
Deny from env=bad_user

Он просто блокирует весь трафик от 54.x.x.x (только трафик, который я получаю от него, исходит от зараженного облака Amazon - я знаю, что могу исключить только 30 диапазонов IP-адресов для облака Amazon, а не все 54.x.x.x но мне нужно было быстрое решение).

Остальные боты (большинство из них из Китая, Тайваня и т. Д.) Не используют реферер, поэтому:

SetEnvIfNoCase Referer "^$" bad_user

блокирует их все.

Но у него также есть побочные эффекты:

  1. Когда кто-то заходит на мою страницу из закладки или когда он набирает ее прямо в браузере (например, он красил ее на визитке), он не видит мой веб-сайт.
  2. Роботы Googlebot, bingbot (а также другие менее важные боты) также обычно не используют реферер.

#1 это неудобство, но #2 это реальная проблема, которую я должен решить быстро.

Я обнаружил, что важные для меня боты используют следующие ярлыки:

66.249.64.119 - - [...] "GET /robots.txt HTTP/1.1" 403 534 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.64.119 - - [...] "GET /programowanie/ HTTP/1.1" 403 537 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.64.115 - - [...] "GET /3d-graphic/ HTTP/1.1" 403 535 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

207.46.13.4 - - [...] "GET /robots.txt HTTP/1.1" 403 534 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
207.46.13.4 - - [...] "GET / HTTP/1.1" 403 524 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"

Возможно ли это в .htaccess как-то объединить мои правила с "но если ярлык содержит" Googlebot "или" bingbot ", отпустите его" как самый важный (даже если они не используют реферер)?

Если нет, может я что-нибудь добавлю к robots.txt сообщить Google / Bing, что они должны были указать реферер в своих ярлыках (я сомневаюсь, что они примут это во внимание)?

Я нашел решение для #2:

order deny,allow
deny from 54.

SetEnvIfNoCase Referer "^$" bad_user
SetEnvIfNoCase User-Agent "^Wget" bad_user
SetEnvIfNoCase User-Agent "http://www.bing.com/bingbot.htm" good_user
SetEnvIfNoCase User-Agent "http://www.google.com/bot.html" good_user
Deny from env=bad_user
Allow from env=good_user

Обратите внимание order deny, allow - благодаря этому так и будет работать:

  1. Заблокировать весь трафик от 54.x.x.x. Также заблокируйте весь трафик без реферера.
  2. Затем разблокируйте трафик для запроса, содержащего либо http://www.bing.com/bingbot.htm или http://www.google.com/bot.html.

Тем не мение, Буду ждать других ответов, потому что я не уверен, что это оптимальное решение для #2.

И мне все еще не удалось решить #1.

Итак, если вы хотите:

заблокировать всех пользователей без реферера, НО разрешить Googlebot / bingbot одновременно

вы можете просто использовать мой код для .htaccess без deny from 54. и SetEnvIfNoCase User-Agent "^Wget" bad_user строки, характерные для моего случая (ddos).