Из-за какой-то любительской 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
это реальная проблема, которую я должен решить быстро.
Я обнаружил, что важные для меня боты используют следующие ярлыки:
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
- благодаря этому так и будет работать:
54.x.x.x
. Также заблокируйте весь трафик без реферера.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).