Блокировка всех пользователей без реферера, НО одновременное использование 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
(только трафик, который я получаю от него, исходит от зараженного облака амазонок - я знаю, что могу исключить только 30 диапазонов IP-адресов для облака амазонок, а не весь 54.x.x.x
но мне нужно было быстрое решение).
Остальные боты (большинство из них из Китая, Тайваня и т. Д.) Не используют реферер, поэтому:
SetEnvIfNoCase Referer "^$" bad_user
блокирует их всех.
Но это также имеет побочные эффекты:
- Когда кто-то посещает мою страницу из закладки или когда он набирает ее прямо в браузере (например, он пометил ее на визитной карточке), он не видит мой веб-сайт.
- 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, что они должны были добавить реферера в свои ярлыки (сомневаюсь, что они это учтут)?
1 ответ
Я нашел какое-то решение для #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).